如何使用 Amazon Kinesis Firehose 将 VPC 流日志推送到 Splunk?

3 分钟阅读
0

在将数据从 AWS 源推送到 Splunk 集群时,我想改进我的 AWS 数据与 Splunk 的集成。

解决方法

**注意:**Kinesis Data Firehose 不支持应用程序负载均衡器或网络负载均衡器,而是使用经典负载均衡器。确保允许基于持续时间的粘滞会话,并停用 Cookie 到期时间。有关解决 Splunk 端点的传输流问题的详细信息,请参阅数据未传送到 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 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 订阅筛选器

相关信息

使用 Amazon Kinesis Data Firehose 将数据摄取到 Splunk 中

目标设置

使用 Amazon Kinesis Data Firehose 控制访问

AWS 官方
AWS 官方已更新 1 年前