AWS Cloudwatch:如何将实例名称/自定义字段添加到日志中?

AWS Cloudwatch: How to add the instance name / custom fields to the log?

我们目前每个 ec2 实例有多个 cloudwatch 日志流。这很难调试;在所有实例中查询 "ERROR XY" 将涉及挖掘每个日志流(耗时)或使用 aws cli(耗时查询)。

我希望有一个日志流将特定类型的所有实例的日志数据结合起来,假设所有 "webserver" 个实例将它们的 "apache2" 日志数据记录到一个中央流并且 "php" 将数据记录到另一个中央流。

显然,我仍然希望能够找出哪个日志条目来自哪个实例——就像我通过 syslogd 进行中央日志记录一样。

如何将自定义字段 "instance id" 添加到 cloudwatch 的日志中?

在 CloudWatch Logs 中组织日志的最佳方式如下:

  • 日志组代表日志类型。例如:webserver/prod.

  • 日志流表示实例id(即来源)。

对于查询,我强烈建议使用 Insights 功能(我在@AWS 工作时帮助构建了它)。日志流名称将作为特殊的 @logStream 字段与每个日志记录一起使用。

您可以像这样查询所有实例:

filter @message like /ERROR XY/

或者像这样在一个实例中:

filter @message like /ERROR XY/ and @logStream = "instance_id"