如何使用 Amazon Kinesis Firehose 将 VPC 流日志推送到 Splunk?
在将数据从 AWS 源推送到 Splunk 集群时,我想改进我的 AWS 数据与 Splunk 的集成。
解决方法
**注意:**Kinesis Data Firehose 不支持应用程序负载均衡器或网络负载均衡器,而是使用经典负载均衡器。确保允许基于持续时间的粘滞会话,并停用 Cookie 到期时间。有关解决 Splunk 端点的传输流问题的详细信息,请参阅数据未传送到 Splunk。
先决条件
- 设置可访问的 Splunk HEC HTTP 事件收集器(HEC)实例。有关详细信息,请参阅 AWS 上的 Splunk Enterprise 和 Splunk 网站上的在 Splunk Web 中设置和使用 HTTP 事件收集器。
- 在 Splunk Web 上为 Splunk 数据输入配置 HEC。
- 使用新令牌创建新的 HEC 端点,用于配置数据流。有关详细信息,请参阅在 Splunk Web 中设置和使用 HTTP 事件收集器(来自 Splunk 网站)。确保选择启用索引器确认选项。
- 从 Splunkbase 网站安装适用于 Amazon Kinesis Data Firehose 的 Splunk 附加组件。
创建 Kinesis Data Firehose 传输流
1. 创建您的传输流。对于来源,选择 Direct PUT。
2. 对于目标,选择 Splunk。
3. 输入传输流名称。
使用 AWS Lambda 配置记录转换
1. 配置记录转换。注意:在使用 AWS Lambda 转换源记录下,为记录转换选择启用。CloudWatch 会以压缩的 .gzip 文件的形式发送日志,Amazon Kinesis 必须解压缩,才能使用这些文件。
2. 对于 Lambda 函数,选择新建。
3. 在选择 Lambda 蓝图窗口上,对于 Lambda 蓝图,选择 Kinesis Firehose CloudWatch 日志处理器。
4. 选择在浏览器中打开的新选项卡来创建新的 Lambda 函数:
对于名称,输入 Lambda 函数的名称。
对于角色,选择创建自定义角色。
5. 选择在浏览器中打开的新选项卡,创建新的 AWS Identity and Access Management(AWS IAM)角色。对于角色名称,请确保名称为 lambda_basic_execution。
6. 选择允许以创建角色,然后返回 Lambda 函数配置页面。
7. 选择创建函数。
8. 为防止函数超时,请将超时从默认 3 秒增加到 1 分钟。
9. 选择保存。
完成 Kinesis Data Firehose 传输流
1. 打开 Amazon Kinesis 控制台。
2. 在导航窗格中,选择 Data Firehose。
3. 对于您的传输流,选择 Lambda 函数,然后从下拉列表中选择您的新 AWS Lambda 函数的名称。
4. 对于目标设置,输入 Splunk HEC 详细信息,包括您创建的 Splunk HEC 端点。
**注意:**您必须通过有效的 SSL 证书才能终止 Splunk HEC 端点。使用匹配的 DNS 主机名连接到您的 HEC 端点。集群端点的格式为 https://YOUR-ENDPOINT.splunk.com:8088。
5. 对于 Splunk 终端节点类型,选择原始终端节点,然后输入身份验证令牌。
6. 选择下一步。
7. (可选)选择现有 Amazon Simple Storage Service(Amazon S3)桶或创建一个新桶来备份失败的事件或所有事件。 确保在传输流向导中配置 Amazon S3 相关设置,例如缓冲条件、压缩和加密设置以及错误日志记录选项。
8. 在 IAM 角色下,选择新建。
9. 在打开的选项卡中,输入角色名称,然后选择允许。
10. 选择下一步。
11. 选择创建传输流。
配置 Amazon VPC 流日志
注意:如果您有 Amazon VPC 流日志,请继续阅读下一节创建 Amazon CloudWatch Logs 订阅。如果您没有 VPC 流日志,请完成以下步骤:
1. 打开 CloudWatch 控制台。
2. 在导航窗格中,选择日志。
3. 对于操作,选择创建日志组。
4. 输入日志组名称。
5. 选择创建日志组。
6. 打开 Amazon VPC 控制台。
7. 在导航窗格中的 Virtual Private Cloud 下,选择您的 VPC。
8. 在内容窗格中,选择您的 VPC。
9. 选择流日志视图。
10. 选择创建流日志:
- 对于筛选,选择全部。
- 对于目标日志组,选择您刚刚创建的日志组。
- 对于 IAM 角色,选择一个允许您的 Amazon VPC 向 CloudWatch 发布日志的 IAM 角色。如果您没有合适的 IAM 角色,请在 IAM 角色下,选择设置权限,然后选择创建新的 IAM 角色。保留默认设置。
- 选择允许以创建角色 VPCFlowLogs 并将其与目标日志组相关联。
11. 选择创建。
12. 建立从日志组到您的传输流的实时馈送:
- 有关 AWS Lambda 说明,请参阅访问 AWS Lambda 的 Amazon CloudWatch Logs。
- 有关 Amazon OpenSearch Service 的说明,请参阅将 CloudWatch Logs 数据流式传输到 Amazon OpenSearch Service。
- 对于 Kinesis Data Firehose,完成创建 CloudWatch Logs 订阅部分中的步骤创建 CloudWatch Logs 订阅。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确认您运行的是最新版本的 AWS CLI。
创建 Amazon CloudWatch Logs 订阅
1. 授予 CloudWatch 访问权限,以使用正确的角色权限发布您的 Kinesis Data Firehose 流。
2. 打开 AWS CLI。
3. 使用以下 JSON 文件创建您的信任策略(例如 TrustPolicyforCWLToFireHose.json)。将 YOUR-RESOURCE-REGION 替换为您的资源的 AWS 区域。
{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.YOUR-RESOURCE-REGION.amazonaws.com" }, "Action": "sts:AssumeRole" } }
4. 运行以下命令创建具有信任策略授予之权限的角色:
$ aws iam create-role --role-name CWLtoKinesisFirehoseRole --assume-role-policy-document file://TrustPolicyForCWLToFireHose.json
5. 使用以下 JSON 文件创建您的 IAM 策略(例如 PermissionPolicyForCWLToFireHose.json)。将 YOUR-AWS-ACCT-NUM 替换为您的 AWS 账号,将 YOUR-RESOURCE-REGION 替换为您的资源区域,将 FirehoseSplunkDeliveryStream 替换为您的流的名称。
{ "Statement":[ { "Effect":"Allow", "Action":["firehose:PutRecord"], "Resource":["arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream"] }, { "Effect":"Allow", "Action":["iam:PassRole"], "Resource":["arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"] } ] }
6. 运行以下命令将 IAM 策略附加到角色:
$ aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://PermissionPolicyForCWLToFireHose.json
7. 运行以下命令创建订阅筛选器。将 YOUR-AWS-ACCT-NUM 替换为您的 AWS 账号,将 YOUR-RESOURCE-REGION 替换为您的资源区域,将 FirehoseSplunkDeliveryStream 替换为您的流的名称。
$ aws logs put-subscription-filter --log-group-name " /vpc/flowlog/FirehoseSplunk" --filter-name "Destination" --filter-pattern "" --destination-arn "arn:aws:firehose:YOUR-RESOURCE-REGION:YOUR-AWS-ACCT-NUM:deliverystream/FirehoseSplunkDeliveryStream" --role-arn "arn:aws:iam::YOUR-AWS-ACCT-NUM:role/CWLtoKinesisFirehoseRole"
有关订阅筛选器的详细信息,请参阅示例 3:使用 Amazon Kinesis Data Firehose 订阅筛选器。
相关信息
相关内容
- AWS 官方已更新 6 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前