我有一个整体,目前正在转移到AWS(使用ecs / fargate),以后将分解为微服务。它使用配置有apache,php和我所有生产网站数据的amazon linux 1映像。当前,它将日志发送到/ etc / httpd / logs和/ var / www / vhosts / logs中的多个文件。
据说我可以在ecs任务定义中使用日志配置和卷来做一些事情,但是我找不到能够解释该操作细节的任何东西。
答案 0 :(得分:0)
如果是容器,我绝不建议将日志写入文件,最好是将日志写入容器stdout和stderr。
另一件有趣的事情,如果您移至fargate,将如何处理日志文件?因此,请勿将日志写入文件,也不要像对待实例计算机那样对待容器。
AWS日志驱动程序的优点在于,它可以将日志推送到Cloud Watch日志,并且从Cloud Watch推送到ELK也非常容易。
转到AWS日志驱动程序,设计入口点,使其将日志写入容器中的stdout和stderr。通常,在前台运行进程时,这非常容易,它会自动将日志写入容器stdout。
只需在任务定义中添加此行并添加云监视角色即可。
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
}
配置完成后,您将看到日志
使用awslogs日志驱动程序
您可以在任务中配置容器以发送日志信息 到CloudWatch Logs。如果您将Fargate启动类型用于 任务,这使您可以查看容器中的日志。如果你 正在使用EC2启动类型,这使您可以查看不同的日志 在一个方便的位置将其从容器中取出,这可以防止 占用容器实例上磁盘空间的容器日志。 本主题可帮助您开始使用您的awslogs日志驱动程序 任务定义。
注意
任务中的容器记录的信息类型 主要取决于他们的
ENTRYPOINT command
。默认情况下, 被捕获,显示您通常会在 交互式终端(如果您在本地运行容器)STDOUT
和STDERR I/O streams
。 awslogs日志驱动程序只是通过了 这些日志从Docker到CloudWatch Logs。有关如何操作的更多信息 处理Docker日志,包括其他捕获方式 不同的文件数据或流,请参阅查看容器的日志或 Docker文档中的服务。