如何在 Fargate 上将 Splunk 日志驱动程序与 Amazon ECS 任务结合使用?
我想在 AWS Fargate 上将一个 Splunk 日志驱动程序与一个 Amazon Elastic Container Service(Amazon ECS)任务结合使用。
简短描述
您可以在 Fargate 中使用来自 Docker 的 Splunk 日志驱动程序(也称为“日志记录驱动程序”),以将您的容器日志发送到 Enterprise Splunk 日志收集器或 Splunk Cloud。有关更多信息,请参阅 Docker 网站上的 Splunk 日志记录驱动程序 。
解决方法
设置 Splunk Cloud 环境以接收 Fargate 日志
1. 使用 Free Splunk 选项创建一个 Splunk Cloud 账户。如果您已经拥有 Splunk Cloud 账户,则请跳至第 2 步。有关更多信息,请参阅 Splunk 网站上的 Free Splunk。
2. 登录您的 Splunk Cloud 账户。
3. 在导航窗格中,选择 Settings(设置)。
4. 在 DATA(数据)部分中,选择 Data inputs(数据输入)。
5. 在 Local inputs(本地输入)部分的 Actions(操作)列下,选择 Add new(新添加)。
**注意:**您会创建一个 HTTP 事件收集器(HEC)令牌,以便通过 HTTP 和安全 HTTP(HTTPS)协议将数据和应用程序事件发送到 Splunk 部署。
6. 对于 Name(名称),输入令牌的名称,然后选择 Next(下一步)。
7. 依次完成设置向导中剩余页面的操作,然后选择 Submit(提交)以创建 HEC 令牌。
注意:您可以保留默认值不变。
8. 使用 curl 或 Docker 测试新令牌。
**注意:**默认情况下,Splunk 会侦听端口 8088 并接受 /services/collector 路径上的事件。
使用 curl:
curl -k https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'
**注意:**请将 splunk-token 替换为您之前创建的 HEC 令牌。
使用 Docker:
docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main nginx
**注意:**请将 splunk-token 替换为您之前创建的 HEC 令牌。
配置 AWS Secrets Manager 以使用您的 HEC 令牌
**注意:**如果您在运行 AWS Command Line Interface(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
要将您的 HEC 令牌存储在 Secrets Manager 中,以便 Fargate 能够安全地使用您的令牌,请运行以下命令:
aws secretsmanager create-secret --name splunk-token --secret-string token-value
**注意:**请将 splunk-token 替换为您的 HEC 令牌。请将 token-value 替换为您的令牌值。
配置一个具有密钥访问权限的任务执行角色
1. 打开 AWS Identity and Access Management (IAM) 控制台。
2. 从导航窗格中,选择角色。
3. 从角色列表中,搜索并选择 ecsTaskExecutionRole。
4. 选择添加内联策略。
5. 选择编辑器的 JSON 选项卡,然后输入以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }
**注意:**如果您使用自定义的 AWS Key Management Service(AWS KMS)密钥来加密您的密钥,则必须为您的 KMS 密钥提供 KMS:Decrypt 权限和 Amazon Resource Name(ARN)。
6. 选择查看策略。
7. 在名称字段中输入策略名称。
8. 选择 Create policy(创建策略)。
在 Fargate 上为您的 Amazon ECS 任务配置任务定义
1. 打开 Amazon ECS 控制台。
2. 在导航窗格中的 Amazon ECS 部分中,选择 Task Definitions(任务定义)。
3. 选择 Create new Task Definition(创建新任务定义)。
4. 选择 Fargate,然后选择 Next step(下一步)。
5. 在 Configure task and container definitions(配置任务和容器定义)部分,对于 Task definition name(任务定义名称),输入任务定义的名称。
6. 对于 Task Role(任务角色),选择您之前配置的角色。
7. 在 Task size(任务大小)部分,对于 Task memory (GB)(任务内存 (GB))和 Task CPU (vCPU)(任务 CPU (vCPU)),输入您任务的相应值。
8. 在 Container Definitions(容器定义)部分,选择 Add container(添加容器)。
9. 根据您的容器需求选择适当的选项。
10. 在 STORAGE AND LOGGING(存储和日志记录)部分,清除 Log configuration(日志配置)复选框。
11. 对于 Log driver(日志驱动程序),选择 splunk。
12. 对于 Log options(日志选项)中的键和值选项,请输入以下内容:
键关键:splunk-url
值:您的 splunk 终端节点(例如:https://prd-p-9l79p.splunkcloud.com:8088/)
键:splunk-insecureskipverify
值:True
键:splunk-token
值来自:您之前创建的密钥 ARN
13. 选择 Add(添加)。
**注意:**有关 Splunk 的代码和配置的更多详细信息,请参阅 GitHub 上的日志驱动程序代码和 Docker 网站上的 Splunk 选项。
14. 要创建任务定义,请选择 Create(创建)。
15. 创建一个 Amazon ECS 服务或运行一个使用您之前创建的任务定义的任务。
在 Splunk Cloud 中检查您的日志
在 Splunk Cloud 中检查日志之前,请确保您的任务正在运行。
**注意:**默认情况下,您的日志位于 main 索引中的 splunk-index,因为您未在日志配置中指定 splunk-index。
1. 连接到您的 Splunk Cloud 账户。
2. 在导航窗格中,选择 Search(搜索)。
3. 在搜索框中输入 index="main"。
这时您可以在 Splunk 日志收集器中看到您的日志。
注意:您可以按照上述步骤在 Amazon ECS 中为 Amazon Elastic Compute Cloud (Amazon EC2) 启动类型创建任务定义。然后,您可以使用来自您的任何 ECS 任务的 Splunk 日志驱动程序将日志发送到 Splunk 日志收集器。
相关信息

相关内容
- 已提问 2 个月前lg...
- 已提问 1 个月前lg...
- 已提问 4 个月前lg...
- 已提问 4 个月前lg...
- 已提问 3 个月前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 6 个月前
- AWS 官方已更新 1 个月前
- AWS 官方已更新 3 年前