关于将 docker 应用程序日志发送到 AWS CloudWatch 的教程。
关于
docker 默认推荐将程序运行的日志都输出到标准输出(STDOUT),同时,docker 支持不同的 log driver 可以将日志发送到不同的日志中心。
这篇文章是关于如何配置 docker 容器并其应用程序日志发送到 AWS CloudWatch。发送成功的日志可以从 AWS 管理控制台进行检索。
测试环境
虚拟机环境选择的是 ubuntu 的 18.04.2 版本。
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 5.4.0-1088-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Nov 7 08:35:49 UTC 2022
System load: 0.7
Usage of /: 24.5% of 193.81GB
Memory usage: 26%
Swap usage: 0%
Processes: 124
Users logged in: 0
IP address for ens5: 172.31.45.149
IP address for docker0: 172.17.0.1
IP address for br-eb2f1162c70e: 172.18.0.1
docker 的版本为 Docker version 20.10.21, build baeda1f
。
测试 docker 镜像使用的是 docker 官方的 alpine:latest
(直接运行输出一句话到 STDOUT 即可)。
如何配置
创建 AWS Credentials
现在我们已经准备好了示例应用程序,我们可以将 docker 日志推送到 AWS CloudWatch。为此,我们需要 AWS 帐户的访问凭据以便我们的日志可在 AWS 进行查看。我们将在 AWS 创建一个具有 CloudWatch 访问权限的一个单独的帐户,并将其与 docker daemon(docker 的守护进程)绑定在一起使用。步骤如下:
- 创建 CloudWatch 的 IAM policy
- 使用该 policy 创建 IAM group
- 创建 IAM user 并将其添加到此 group
创建 IAM policy
- 从 AWS 控制台进入 IAM 控制台
- 选择“Policies”,并点击“Create Policy”
- 在“Create Policy”的窗口选择
- Service = CloudWatch Logs
- Actions = CreateLogStream, GetLogRecord, DescribeLogGroups, DescribeLogStreams,