Umesh 向您演示如何
使用 Amazon Kineisis Firehose
将 VPC 流日志推送到 Splunk

Umesh_SEA0818

我正在安装 Splunk 全功能转发器来分析我的 Amazon Virtual Private Cloud (Amazon VPC) 数据。我正在将数据从 AWS 源推送到 Splunk 集群进行处理,但这需要多个步骤。如何更好地将我的 AWS 数据与 Splunk 集成?

您可以使用 Splunk 的 HTTP 事件收集器 (HEC) 和 Amazon Kinesis Data Firehose 将数据和应用程序事件发送到 Splunk 群集,而不是使用全功能转发器。您可通过以下方式实现此目的:

  1. 创建 Data Firehose 传输流
  2. 配置 AWS Lambda 用于记录转换
  3. 配置 VPC 流日志
  4. 创建对您的流的 CloudWatch Logs 订阅

开始之前,请确保:

开始创建 Data Firehose 传输流

1.    创建传输流​。对于 Source (源),请选择 Direct PUT 或其他源。

2.    选择 Next (下一步)

使用 AWS Lambda 配置记录转换

1.    配置记录转换
注意:确保为 Transform source records with AWS Lambda (使用 AWS Lambda 转换源记录) 下的 Record transformation (记录转换) 选择 Enabled (启用)。您必须启用此选项,因为 CloudWatch 将日志作为压缩的 .gzip 文件发送。Amazon Kinesis 必须先提取这些文件,然后才能使用它们。

2.    对于 Lambda function (Lambda 函数),选择 Create new (新建)

3.    在出现的 Choose Lambda blueprint (选择 Lambda 蓝图) 弹出窗口中,对于 Lambda blueprint (Lambda 蓝图),选择 Kinesis Firehose CloudWatch Logs Processor

4.    选择在浏览器中打开的新选项卡以创建新的 Lambda 函数。
对于 Name (名称),输入 Lambda 函数的名称。
对于 Role (角色),请选择 Create a custom role (创建自定义角色)

5.    选择在浏览器中打开的新选项卡以创建新的 AWS Identity and Access Management (IAM) 角色。
对于 Role Name (角色名称),确保名称是 lambda_basic_execution。​

6.    选择 Allow (允许) 创建角色并返回 Lambda 函数配置页面。

7.    选择 Create function (创建函数),然后等待函数创建完毕。

8.    将 Timeout (超时) 从默认的 3 秒增加到 1 分钟,以防止函数超时。

9.    选择 Save

完成创建 Data Firehose 传输流

1.    登录 Amazon Kinesis 控制台

2.    在导航窗格中选择 Data Firehose

3.    对于传输流,选择 Lambda function (Lambda 函数)
从下拉菜单中选择新的 AWS Lambda 函数的名称。
对于 Destination (目标),选择 Splunk。​
输入 Splunk HEC 详细信息,包括您之前创建的 Splunk HEC 终端节点。必须使用有效的 SSL 证书终止 Splunk HEC 终端节点。使用匹配的 DNS 主机名连接到 HEC 终端节点。集群终端节点的格式是 https://YOUR-ENDPOINT.splunk.com:8088。​
对于 Splunk endpoint type (Splunk 终端节点类型),选择 Raw endpoint (原始终端节点),然后输入身份验证令牌。

4.    选择 Next (下一步)

5.    (可选)通过选择现有存储桶或创建新存储桶,为失败的事件或所有事件创建 S3 备份。确保在传输流向导中配置 S3 相关设置,例如缓冲条件、压缩和加密设置以及错误日志记录选项。

6.    在 IAM role (IAM 角色) 下,选择 Create New (新建)

7.    在打开的选项卡中,输入 Role name (角色名称),然后选择 Allow (允许)

8.    选择 Next (下一步)

9.    选择 Create delivery stream (创建传输流)

配置 VPC 流日志

如果您已经有要使用的 VPC 流日志,请跳到下一部分。

1.    登录到 CloudWatch 控制台

2.    在导航窗格中,选择 Logs

3.    对于 Actions (操作),选择 Create log group (创建日志组)

4.    输入 Log Group Name (日志组名称)

5.    选择 Create log group (创建日志组)

6.    登录 Amazon VPC 控制台

7.    在导航窗格中的 Virtual Private Cloud 下,选择 Your VPCs (您的 VPC)

8.    在内容窗格中,选择您的 VPC。

9.    选择 Flow logs (流日志) 视图。

10.   选择 Create flow log (创建流日志)
对于 Filter (筛选器),选择 All (全部)
对于 Destination log group (目标日志组),选择您刚创建的日志组。
对于 IAM role (IAM 角色),选择允许您的 VPC 将日志发布到 CloudWatch 的 IAM 角色。
注意:
如果您没有合适的 IAM 角色,请选择 Set Up Permissions under IAM role (在 IAM 角色下设置权限)。选择 Create a new IAM role (创建新 IAM 角色)。保留所选的默认设置。选择 Allow (允许) 以创建角色 VPCFlowLogs 并将其与目标日志组关联。

11.   选择 Create (创建) 以创建您的 VPC 流日志。

12.   建立从日志组到传输流的实时订阅源。
有关 AWS Lambda 说明,请参阅访问 AWS Lambda 的 Amazon CloudWatch 日志
有关 Amazon Elasticsearch Service (Amazon ES) 说明,请参阅流 CloudWatch 日志数据流式传输到 Amazon Elasticsearch Service
对于 Kinesis Data Firehose,请使用以下说明在 AWS 命令行界面 (AWS CLI) 中创建 CloudWatch Logs 订阅。

创建 CloudWatch Logs 订阅

1.    授予对 CloudWatch 的访问权限,以使用正确的角色权限发布您的 Kinesis Data Firehose 流。

2.    登录到 AWS CLI。

3.    使用以下示例 JSON 文件创建您的信任策略(例如 TrustPolicyforCWLToFireHose.json)。确保将 YOUR-RESOURCE-REGION 替换为您的资源的 AWS 区域。

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.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:*"],
        "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"

此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 11 月 8 日