我们正在使用Kubernetes来部署我们的应用程序泊坞窗映像。
我们希望能够获取应用程序日志并将其推送到cloudwatch。
应用程序日志是使用log4j或log4js生成的,具体取决于微服务的构建语言。
这样做的正确方法是什么?
答案 0 :(得分:2)
安装Cloudwatch Agent构建容器; to do this you will need a Dockerfile
。 Amazon even has docs specifically for this
您需要确保您的基本容器是基于Debian或RHEL的(亚马逊文档似乎只支持代理的这些类型的发行版);例如,基于Debian的系统将安装代理:
curl https://s3.amazonaws.com//aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
因此,您需要在构建容器时执行上述操作。
安装细节为here。
您提到了IAM政策问题; Amazons example policy is below;您需要确保您的容器可以访问。
{
"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 has done this already上有人:
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
我强烈建议你跟随他们;使用Ubuntu并按照文档。不要重新发明轮子。
答案 1 :(得分:0)
此问题听起来与How to Send Kubernetes Logs to AWS CloudWatch?类似。 Kubernetes不支持docker支持的自定义日志驱动程序。您可以使用流利的日志将日志发送到云观察。