如何将应用程序日志从docker发送到cloudwatch

我们正在使用Kubernetes部署我们的应用程序泊坞窗图像。

我们希望能够把应用程序日志,并推到cloudwatch。

应用程序日志是使用log4j或log4js生成的,具体取决于构build微服务的语言。

什么是正确的方法来做到这一点?

使用安装的Cloudwatch代理构build容器; 要做到这一点,你将需要一个Dockerfile 。 亚马逊甚至有专门为此的文档 。

您需要确保您的基本容器是Debian或RHEL(Amazon文档似乎只支持与代理的这些types的发行版); 例如,基于Debian的系统将安装代理:

 curl https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O 

所以,当你build立容器的时候你需要执行上面的代码。

安装细节在这里 。

你提到了IAM的政策问题; 亚马逊例如政策如下 ; 你将需要确保你的容器有访问权限。

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::myawsbucket/*" ] } ] } 

GitHub上有人已经这样做了 :

 FROM ubuntu:latest MAINTAINER Ryuta Otaki <otaki.ryuta@classmethod.jp>, Sergey Zhukov <sergey@jetbrains.com> ... RUN apt-get install -q -y python python-pip wget RUN cd / ; wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py 

我强烈build议你跟随他们的领先; 使用Ubuntu并按照文档。 不要重新发明轮子。