帮助手册

使用 Lambda 函数采集 S3 日志

S3 存储桶是可存储大量数据的可扩展容器。Site24x7 使用 Lambda 函数查找 S3 存储桶中新添加的日志,并将其发送至 Site24x7 进行索引。了解更多关于 Site24x7 日志管理的信息

您也可以配置从 S3 存储桶使用 SQS 采集日志。为了避免配置 SQS 权限的额外开销,您可以如下所述使用 Lambda 函数采集日志。 

定义日志类型

日志类型是对应用程序写入日志的格式的明确定义。不同应用程序(如 IIS、Cassandra、Apache、MySQL)可能以不同格式写入日志。将其定义为日志类型可将来自不同应用程序的日志分组,以简化访问并辅助高效搜索。 

要创建日志类型,请转到管理 > AppLogs > 日志类型 > 添加日志类型
您可以从以下开箱即用支持的 AWS 日志类型列表中选择:

AWS API Gateway 访问日志 CloudWatch 日志
VPC Flow 日志 CloudFront 日志
Amazon ECS 日志 CloudTrail 日志
Lambda 运行时日志 应用程序负载均衡器日志

您也可以定义自定义日志类型,将来自各种应用程序的日志分组,以便更轻松地访问和更高效地搜索。

  1. 如果选择自定义日志类型,请输入显示名称。
  2. 提供示例日志行以发现日志模式。
  3. 保存日志类型。

为存储在 S3 存储桶中的日志定义日志类型后,将其列入日志配置文件并开始通过执行搜索查询来管理日志。 

创建日志配置文件

日志配置文件允许您将日志类型与特定日志源关联。

要创建日志配置文件,请导航至管理AppLogs > 日志配置文件 > 添加日志配置文件,并按照以下说明操作:

  1. 配置文件名称:输入日志配置文件的名称。
  2. 选择日志类型:选择您希望与此配置文件关联的 S3 日志的日志类型。
  3. 日志源:选择 Amazon Lambda
  4. 时区:为您的日志选择时区。
  5. 单击保存
  6. 此处所述配置 Lambda 函数。

配置 Lambda 函数

  1. 登录管理 AWS 资源 - AWS 管理控制台
    https://us-east-2.console.aws.amazon.com/lambda/home?region=us-east-2#/functions
  2. 服务下拉列表中选择 Lambda,然后选择创建函数
  3. 选择从头开始创作,为函数定义名称,并选择 Python 3.12(最新可用版本)作为运行时。 
  4. 权限:您可以选择现有 IAM 角色,也可以从 AWS 策略模板创建新角色。 
    方法 1:如果选择现有 IAM 角色,请从下拉菜单中选择相关角色。
    方法 2:如果选择从 AWS 策略模板创建新角色,请输入角色名称,并从策略模板下拉菜单中选择 Amazon S3 对象只读权限。单击创建函数。 
    注意

    无论您选择现有 IAM 角色还是从 AWS 策略模板创建新角色,当您启用使用 AWS 密钥管理服务(KMS)的服务器端加密时,都应为 KMS 密钥(使用其 ARN)提供 KMS 解密权限。

    1. 您可以通过单击相应 S3 存储桶的"属性"选项卡中的单击复制图标来复制 KMS 密钥 ARN。
    2. 确保策略模板已更新必要的详细信息。为此,请转到身份和访问管理(IAM)菜单,单击角色,然后选择所需的角色名称。确保策略中包含足够的权限,例如 KMS 密钥 ARN(如需要)和 Lambda 更新函数配置。您可以在下方找到示例策略模板。 
    示例 KMS 策略模板(仅当为 S3 存储桶启用了 KMS 加密时才需要此模板。) 
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "kms:Decrypt",
                "Resource": "arn:aws:kms:us-east-2:<AccountId>:key/<KMSKEY>"
            }
        ]
    }
    示例 Lambda 更新函数配置模板 
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": "arn:aws:logs:::*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "s3:GetObject",
                    "s3:GetBucketNotification",
                    "s3:PutBucketNotification"
                ],
                "Resource": "arn:aws:s3:::<S3BucketName>",
                "Effect": "Allow"
            },
        ]
    }
  5. 添加触发器:单击添加触发器
    将源选为 S3 存储桶。添加到 S3 存储桶的任何日志文件都将由 Lambda 函数发送至 Site24x7。 
  6. 配置触发器
    • 存储桶:输入将从中采集日志的 S3 存储桶名称。
    • 事件类型:选择所有对象创建事件。
    • 确认并添加。
  7. 在打开的窗口中,转到代码。滚动到编辑器,将以下链接中提供的代码粘贴进去:
    https://github.com/site24x7/applogs-aws-lambda/blob/master/s3/s3-sender.py
  8. 输入代码后,转到 Site24x7 Web 客户端。导航至管理 > AppLogs > 日志配置文件,选择已创建的日志配置文件,然后复制显示的 logTypeConfig 代码。
  9. 返回 AWS 管理控制台
    • 转到配置
    • 选择环境变量
    • 单击编辑
  10. 将键输入为 logTypeConfig。将从 Site24x7 日志配置文件页面复制的值粘贴为对应值。单击保存
  11. 保存环境变量后,转到代码。单击部署
  12. 几分钟后,您可以前往 Site24x7 Web 控制台,从左侧菜单选择 AppLogs。在 AppLogs 搜索页面,您可以通过按如下所示使用日志类型搜索来查看日志:
    logtype="ELB Application Log"

相关日志类型

本文档对您有帮助吗?

您愿意帮助我们改进文档吗?请告诉我们哪些方面可以做得更好。


很抱歉本文档未能让您满意。我们希望了解可以从哪些方面改进您的体验。


感谢您抽出时间分享反馈。我们将利用您的反馈来改进在线帮助资源。

短链接已复制!