Docker + AWS CloudWatch 收集容器日志

目標

將容器日志吐到 AWS CloudWatch 里

創(chuàng)建生成 CloudWatch 訪問權(quán)限

創(chuàng)建一個包含日志權(quán)限的策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

將策略分配到具體的用戶上,這邊建議添加一個用戶,新添加的用戶僅選擇程序訪問即可。
在創(chuàng)建用戶后會得到 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 保存另用。

Docker 容器日志

Docker 本身支持直接將日志傳送到 CloudWatch 內(nèi),在 https://docs.docker.com/config/containers/logging/awslogs/ 有詳細介紹,下面展示詳細操作。

創(chuàng)建必要的文件

mkdir -p /etc/systemd/system/docker.service.d/
vim /etc/systemd/system/docker.service.d/aws-credentials.conf

鍵入剛剛保存的 AK 和 SK

[Service]
Environment="AWS_ACCESS_KEY_ID=<aws_access_key_id>"
Environment="AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>"

保存后 reload systemctl 并重啟 docker

sudo systemctl daemon-reload
sudo service docker restart

測試日志

創(chuàng)建相關的 CloudWatch 日志組 /my/test 并為其創(chuàng)建一個日志流 test-stream

接下來我們測試一下日志輸出的情況

docker run --log-driver="awslogs" --log-opt awslogs-region="cn-north-1" --log-opt awslogs-group="/my/test" --log-opt awslogs-stream="test-stream" busybox echo hello

運行命令,可以在 CloudWatch test-stream 中看到 hello 記錄已經(jīng)上去了。

注意的是,使用 --log-driver="awslogs"docker logs 相關命令已不可用,請注意。

相關參考

https://wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/

https://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/using_cloudwatch_logs.html

https://cloud.tencent.com/developer/section/1091818

https://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/using_cloudwatch_logs.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容