如何在 Fargate 上使用 Splunk 日志驱动程序执行 Amazon ECS 任务?

2 分钟阅读
0

我想在 AWS Fargate 上使用 Splunk 日志驱动程序执行 Amazon Elastic Container Service(Amazon ECS)任务

简述

您可以使用 Fargate 中来自 Docker 的 Splunk 日志驱动程序,也称为“日志驱动程序”,将你的容器日志发送到企业 Splunk 日志收集器或 Splunk Cloud。

解决方法

设置您的 Splunk Cloud 环境以接收 Fargate 日志

  1. 使用“免费 Splunk”选项创建 Splunk Cloud 账户。如果您已经有 Splunk 云账户,请跳到步骤 2。有关更多信息,请参阅 Splunk 网站上的 Free Splunk
  2. 登录您的 Splunk Cloud 账户。
    **注意:**创建账户后,使用您的 Splunk 云 URL、用户名和密码登录。
  3. 在导航窗格中,选择设置
  4. 数据部分中,选择数据输入
  5. 本地输入部分的操作列中,选择新增
    **注意:**您可以创建 HTTP 事件收集器(HEC)令牌,这样您就可以通过 HTTP 和安全 HTTP(HTTPS)协议向 Splunk 部署发送数据和应用程序事件。
  6. 名称中,输入令牌的名称,然后选择下一步
  7. 逐步浏览安装向导中的其余页面,然后选择提交来创建 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 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 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 资源名称(ARN)。
  6. 选择查看策略
  7. 对于名称,输入您的策略的名称。
  8. 选择创建策略

在 Fargate 上为 Amazon ECS 任务配置任务定义

  1. 打开 Amazon ECS 控制台
  2. 在导航窗格的 Amazon ECS 部分,选择任务定义
  3. 选择新建任务定义
  4. 选择 Fargate,然后选择下一步
  5. 配置任务和容器定义部分,在任务定义名称中输入任务定义的名称。
  6. 对于任务角色,选择您之前配置的角色。
  7. 任务大小部分中,为任务内存 (GB)任务 CPU (vCPU) 输入相应的任务值。
  8. 容器定义部分,选择添加容器
  9. 根据您的容器需求选择适当的选项。
  10. 在下拉菜单的日志记录部分,选择将日志导出到 Splunk
  11. 对于日志选项中的键和值选项,请输入以下内容:
    **键:**splunk-url
    **值:**您 splunk 端点(例如:https://prd-p-9l79p.splunkcloud.com:8088/)
    **键:**splunk-insecureskipverify
    **值:**TRUE
    **键:**splunk-token
    **ValueFrom:**您之前创建的秘密 ARN
  12. 选择添加
    **注意:**有关 Splunk 代码和配置的更多详细信息,请参阅 GitHub 上的 splunk.go 和 Docker 网站上的 Splunk options
  13. 要创建任务定义,请选择创建
  14. 创建 Amazon ECS 服务或使用您之前创建的任务定义运行任务。

在 Splunk Cloud 中查看您的日志

在 Splunk Cloud 中检查日志之前,请确保您的任务正在运行。

注意:由于您没有在日志配置中指定 splunk-index,因此默认情况下,您的日志会进入索引中的 splunk-index

  1. 连接到您的 Splunk Cloud 账户。
  2. 在导航菜单中,选择搜索
  3. 在搜索框中输入 index="main"

**注意:**您可以按照前面的步骤在 Amazon ECS 中为 Amazon Elastic Compute Cloud(Amazon EC2)启动类型创建任务定义。然后,您可以使用任何 ECS 任务中的 Splunk 日志驱动程序将日志发送到 Splunk 日志收集器。

相关信息

Amazon ECS 任务执行 IAM 角色

AWS 官方
AWS 官方已更新 7 个月前