Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何在 Fargate 上的 Amazon ECS 任務中使用 Splunk 日誌驅動程式?
我想在 AWS Fargate 上的 Amazon Elastic Container Service (Amazon ECS) 任務中使用 Splunk 日誌驅動程式
簡短描述
您可以在 Fargate 中使用 Splunk 日誌驅動程式 (也稱為 Docker 的 "logging driver,"),將容器日誌傳送到 Enterprise Splunk 日誌收集器或 Splunk Cloud。
解決方法
設定 Splunk Cloud 環境以接收 Fargate 日誌
- 使用免費的 Splunk 選項建立 Splunk Cloud 帳戶。如果您已經有 Splunk Cloud 帳戶,請跳至步驟 2。如需更多資訊,請參見 Splunk 網站上的免費 Splunk。
- 登入您的 Splunk Cloud 帳戶。
**注意:**建立帳戶後,請使用您的 Splunk cloud 網址、使用者名稱及密碼登入。 - 在導覽功能表中,選擇 Settings (設定)。
- 在 DATA (資料) 區段,選擇 Data inputs (資料輸入)。
- 在 Local inputs (本機輸入) 區段,於 Actions (動作) 欄選擇 Add new (新增)。
**注意:**您會建立一個 HTTP Event Collector (HEC) 權杖,以便能透過 HTTP 及安全 HTTP (HTTPS) 通訊協定向 Splunk 部署傳送資料和應用程式事件。 - 在 Name (名稱) 中輸入您權杖的名稱,然後選擇 Next (下一步)。
- 依照設定精靈的其餘頁面完成設定,然後選擇 Submit (提交) 以建立 HEC 權杖。
**注意:**您可以保留預設值。 - 使用 curl 或 Docker 測試新的權杖。
**注意:**預設情況下,Splunk 會接聽 8088 連接埠,並接受 /services/collector 路徑的事件。
curl:
**注意:**將 splunk-token 替換為您先前建立的 HEC 權杖。curl -k https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'
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 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要將您的 HEC 權杖儲存在 Secrets Manager 中,讓 Fargate 能安全地使用您的權杖,請執行下列命令:
aws secretsmanager create-secret --name splunk-token --secret-string token-value
**注意:**將 splunk-token 替換為您的 HEC 權杖。將 token-value 替換為您的權杖值。
設定具有存取密碼權限的任務執行角色
- 開啟 AWS Identity and Access Management (IAM) 主控台。
- 從導覽窗格中,選擇 Roles (角色)。
- 從角色清單中,搜尋並選擇 ecsTaskExecutionRole。
- 選擇 Add inline policy (新增內嵌政策)。
- 選擇編輯器中的 JSON 索引標籤,然後輸入以下政策:
**注意:**如果您使用自訂的 AWS Key Management Service (KMS) key 來加密您的密碼,請提供 kms:Decrypt 權限及您的 KMS key 的 Amazon Resource Name (ARN)。{ "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>" ] } ] } - 選擇 Review policy (檢閱政策)。
- 對於名稱,請輸入政策名稱。
- 選擇 Create policy (建立政策)。
為您 Fargate 上的 Amazon ECS 任務設定任務定義
- 開啟 Amazon ECS console (Amazon ECS 主控台)。
- 從導覽窗格中,在 Amazon ECS 區段,選擇 Task Definitions (任務定義)。
- 選擇 Create new Task Definition (建立新任務定義)。
- 選擇 Fargate,然後選擇 Next step (下一步)。
- 在 Configure task and container definitions (設定任務和容器定義) 區段的 Task definition name (任務定義名稱) 中,輸入任務定義的名稱。
- 在 Task Role (任務角色),選擇您先前設定的角色。
- 在 Task size (任務大小) 區段中,於 Task memory (GB) (任務記憶體 (GB)) 及 Task CPU (vCPU) (任務 CPU (vCPU)) 輸入適合任務的值。
- 在 Container Definitions (容器定義) 區段,選擇 Add container (新增容器)。
- 根據您的容器需求選擇適當的選項。
- 在下拉式功能表中的 LOGGING (日誌記錄) 區段,選取 Export logs to Splunk (將日誌匯出到 Splunk)。
- 在 Log options (日誌選項) 中的鍵和值選項,輸入以下內容:
鍵: splunk-url
**值:**您的 Splunk 端點 (例如:https://prd-p-9l79p.splunkcloud.com:8088/)
鍵: splunk-insecureskipverify
值: True
鍵: splunk-token
**valueFrom:**您先前建立的 Secret ARN - 選擇 Add (新增)。
**注意:**有關 Splunk 程式碼與組態的更多詳細資料,請參閱 GitHub 上的 splunk.go 及 Docker 網站上的Splunk 選項。 - 若要建立您的任務定義,請選擇 Create (建立)。
- 建立 Amazon ECS 服務,或執行使用您先前建立的任務定義的任務。
在 Splunk Cloud 中檢查您的日誌
在檢查 Splunk Cloud 中的日誌之前,請確定您的任務正在執行。
注意:由於您在日誌組態中未指定 splunk-index,您的日誌預設會傳送到主索引中的 splunk-index。
- 連線到您的 Splunk Cloud 帳戶。
- 在導覽功能表中,選擇 Search (搜尋)。
- 在搜尋方塊中輸入 index="main"。
**注意:**您可以依照上述步驟,在 Amazon ECS 中為 Amazon ElasticCompute Cloud (Amazon EC2) 啟動類型建立任務定義。接著,您可以使用任何 ECS 任務的 Splunk 日誌驅動程式,將日誌傳送至 Splunk 日誌收集器。
相關資訊
- 語言
- 中文 (繁體)
