如何在 Fargate 上的 Amazon ECS 任務中使用 Splunk 日誌驅動程式?
3 分的閱讀內容
0
我想在 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 日誌收集器。
相關資訊
- 語言
- 中文 (繁體)

AWS 官方已更新 2 年前
沒有評論