在 aws cloudwatch 中过滤日志流

Posted

技术标签:

【中文标题】在 aws cloudwatch 中过滤日志流【英文标题】:Filter log streams in aws cloudwatch 【发布时间】:2017-09-03 07:49:57 【问题描述】:

是否可以使用 CloudWatch 控制台过滤带有模式的日志流?

例如,我在一个日志组中有以下日志流 - 日志组:

'/var/prod/logs'。

日志流:

/prod/[node_instance_id]/nginx_access /prod/[node_instance_id]/nginx_error

我有一个具有自动缩放等功能的多节点环境。因此日志流可能会非常混乱 - 这是我在日志流中看到的示例。

/prod/1a2b3c4d5e/nginx_access /prod/1a2b3c4d5e/nginx_error /prod/1b2b3c4d5e/nginx_access /prod/1b2b3c4d5e/nginx_error /prod/1c2b3c4d5e/nginx_access /prod/1c2b3c4d5e/nginx_error

我正在尝试将日志流过滤为仅全部为“nginx_access”。但从控制台看来,我只能指定前缀。无论如何,我可以使用“*nginx_access”之类的东西过滤日志流吗?

【问题讨论】:

【参考方案1】:

DescribeLogStreams API 仅支持按前缀过滤,控制台使用该 API 列出您的日志流。无法通过前缀以外的内容进行过滤。

在您的情况下,最佳做法是使用 2 个日志组,每种类型一个:

/var/prod/nginx_access /var/prod/nginx_error

这样,您可以通过首先选择适当的日志组,然后使用前缀过滤器搜索实例 ID 来导航到您的日志。

【讨论】:

感谢丹尼尔提供的信息!知道控制台实际上正在使用这个 API 调用是很有用的。只是出于好奇,这FilterLogEvents API 似乎就是我要找的东西。你知道控制台是否在使用这个 API 吗? @RayT - 不在列出日志流时。控制台为此使用了 DescribeLogStreams。 FilterLogEvents 用于在日志流或日志组中进行搜索。 我想知道如何通过 CloudWatch 控制台中的“前缀”进行实际搜索。我只能像这样搜索整个日志组:eu-west-1.console.aws.amazon.com/cloudwatch/…;或特定流:eu-west-1.console.aws.amazon.com/cloudwatch/…... 但我需要使用整个流名称 - 我只想使用像“/my-app/*”这样的前缀

以上是关于在 aws cloudwatch 中过滤日志流的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Cloudwatch 中查找 lambda 函数错误的日志?

AWS CloudWatch Logs Stream - 如何配置 awslogs 以将每天新的日志流从同一实例写入同一日志组?

如何定义AWS MetricFilter FilterPattern以匹配CloudWatch中的JSON格式的日志事件?

为啥在 aws cloudwatch 上使用 sumologic?

AWS Elastic Beanstalk PHP 日志不在 CloudWatch 中

AWS Cloudwatch 日志状态显示正在运行,但日志在 AWS 控制台中不可用