首页 > 解决方案 > 如何从 ECS 集群中获取所有日志

问题描述

是否有一些 AWS 命令​​可以从 ECS 集群的所有服务/任务中获取日志?就像是:

aws ecs logs --cluster dev

或者

aws ecs describe-clusters --cluster dev logs

例如,必须有一些 API 来检索此处 UI 中显示的日志:

enter image description here

标签: amazon-ecs

解决方案


不,没有这种开箱即用的选项可以从基于集群的所有服务中获取日志,因为每个容器都在它们自己的空间(EC2 实例)中运行。

因此,您可以尝试类似的选项,但在此之前,您需要了解 AWS ECS 的日志记录机制。

日志驱动程序

用于容器的日志驱动程序。此参数列出的有效值是 Amazon ECS 容器代理默认可以与之通信的日志驱动程序。

对于使用 Fargate 启动类型的任务,支持的日志驱动程序是awslogs, splunk, and awsfirelens.

对于使用 EC2 启动类型的任务,支持的日志驱动程序是awslogs, fluentd, gelf, json-file, journald, logentries, syslog, splunk, and awsfirelens.

因此,如果您在同一个 ec2 实例上运行多个容器,那么 syslog 对您来说很有意义。

Syslog 日志记录驱动程序

syslog 日志记录驱动程序将日志路由到 syslog 服务器。syslog 协议使用原始字符串作为日志消息,并支持一组有限的元数据。系统日志消息必须以特定方式格式化才能有效。从有效消息中,接收者可以提取以下信息: 在此处输入图像描述

但最好的方法是针对每个容器使用一个日志组。因为syslog在 fargate 的情况下不起作用,所以最好使用每个容器的日志组。

在此处输入图像描述


推荐阅读