美文网首页
Docker + AWS CloudWatch 收集容器日志

Docker + AWS CloudWatch 收集容器日志

作者: leeehao | 来源:发表于2018-11-28 15:40 被阅读0次

    目标

    将容器日志吐到 AWS CloudWatch 里

    创建生成 CloudWatch 访问权限

    创建一个包含日志权限的策略

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

    将策略分配到具体的用户上,这边建议添加一个用户,新添加的用户仅选择程序访问即可。
    在创建用户后会得到 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 保存另用。

    Docker 容器日志

    Docker 本身支持直接将日志传送到 CloudWatch 内,在 https://docs.docker.com/config/containers/logging/awslogs/ 有详细介绍,下面展示详细操作。

    创建必要的文件

    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
    

    测试日志

    创建相关的 CloudWatch 日志组 /my/test 并为其创建一个日志流 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 记录已经上去了。

    注意的是,使用 --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

    相关文章

      网友评论

          本文标题:Docker + AWS CloudWatch 收集容器日志

          本文链接:https://www.haomeiwen.com/subject/oitzqqtx.html