使用 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 运行时日志 | 应用程序负载均衡器日志 |

您也可以定义自定义日志类型,将来自各种应用程序的日志分组,以便更轻松地访问和更高效地搜索。
- 如果选择自定义日志类型,请输入显示名称。
- 提供示例日志行以发现日志模式。
- 保存日志类型。

为存储在 S3 存储桶中的日志定义日志类型后,将其列入日志配置文件并开始通过执行搜索查询来管理日志。
创建日志配置文件
日志配置文件允许您将日志类型与特定日志源关联。
要创建日志配置文件,请导航至管理 > AppLogs > 日志配置文件 > 添加日志配置文件,并按照以下说明操作:
- 配置文件名称:输入日志配置文件的名称。
- 选择日志类型:选择您希望与此配置文件关联的 S3 日志的日志类型。
- 日志源:选择 Amazon Lambda。
- 时区:为您的日志选择时区。
- 单击保存。
- 如此处所述配置 Lambda 函数。

配置 Lambda 函数
- 登录管理 AWS 资源 - AWS 管理控制台
https://us-east-2.console.aws.amazon.com/lambda/home?region=us-east-2#/functions - 从服务下拉列表中选择 Lambda,然后选择创建函数。

- 选择从头开始创作,为函数定义名称,并选择 Python 3.12(最新可用版本)作为运行时。

- 权限:您可以选择现有 IAM 角色,也可以从 AWS 策略模板创建新角色。
方法 1:如果选择现有 IAM 角色,请从下拉菜单中选择相关角色。
方法 2:如果选择从 AWS 策略模板创建新角色,请输入角色名称,并从策略模板下拉菜单中选择 Amazon S3 对象只读权限。单击创建函数。
注意
无论您选择现有 IAM 角色还是从 AWS 策略模板创建新角色,当您启用使用 AWS 密钥管理服务(KMS)的服务器端加密时,都应为 KMS 密钥(使用其 ARN)提供 KMS 解密权限。
- 您可以通过单击相应 S3 存储桶的"属性"选项卡中的单击复制图标来复制 KMS 密钥 ARN。

- 确保策略模板已更新必要的详细信息。为此,请转到身份和访问管理(IAM)菜单,单击角色,然后选择所需的角色名称。确保策略中包含足够的权限,例如 KMS 密钥 ARN(如需要)和 Lambda 更新函数配置。您可以在下方找到示例策略模板。


示例 Lambda 更新函数配置模板{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:us-east-2:<AccountId>:key/<KMSKEY>"
}
]
}{
"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"
},
]
} - 您可以通过单击相应 S3 存储桶的"属性"选项卡中的单击复制图标来复制 KMS 密钥 ARN。
- 添加触发器:单击添加触发器。
将源选为 S3 存储桶。添加到 S3 存储桶的任何日志文件都将由 Lambda 函数发送至 Site24x7。

- 配置触发器
- 存储桶:输入将从中采集日志的 S3 存储桶名称。
- 事件类型:选择所有对象创建事件。
- 确认并添加。

- 在打开的窗口中,转到代码。滚动到编辑器,将以下链接中提供的代码粘贴进去:
https://github.com/site24x7/applogs-aws-lambda/blob/master/s3/s3-sender.py

- 输入代码后,转到 Site24x7 Web 客户端。导航至管理 > AppLogs > 日志配置文件,选择已创建的日志配置文件,然后复制显示的 logTypeConfig 代码。

- 返回 AWS 管理控制台
- 转到配置。
- 选择环境变量。
- 单击编辑。

- 将键输入为 logTypeConfig。将从 Site24x7 日志配置文件页面复制的值粘贴为对应值。单击保存。

- 保存环境变量后,转到代码。单击部署。

- 几分钟后,您可以前往 Site24x7 Web 控制台,从左侧菜单选择 AppLogs。在 AppLogs 搜索页面,您可以通过按如下所示使用日志类型搜索来查看日志:
logtype="ELB Application Log"

相关日志类型
-
本页内容
- 定义日志类型
- 创建日志配置文件
- 配置 Lambda 函数
