【问题标题】:Add instanceid dimension to cloudwatch metric-filter将 instanceid 维度添加到 cloudwatch metric-filter
【发布时间】:2020-06-22 19:05:44
【问题描述】:

我为日志流设置了一个非常基本的指标过滤器,以计算符合特定条件的行数。我的用例与the tutorial for counting apache HTTP status codes 中描述的非常相似。

例如日志事件看起来像

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326

和过滤器非常相似

[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]

我通过 Cloudwatch 控制台设置了指标过滤器。过滤器工作得很好,只是它会累积所有 instanceid 的值。但是,该指标仅在将 instanceid 考虑在内时才对我有价值。

有没有办法获取每个 instanceid 的指标,例如将 instanceid 作为dimension 写入指标?

我搜索了一段时间,但找不到合适的东西。对我来说非常重要的是,我不必对 instanceid 进行硬编码,因为实例可能随时终止并且会创建新实例。进一步,我想避免evaluating the metric on the EC2-machine

有什么方法可以实现我的目标吗?我真的很感激任何建议!

【问题讨论】:

  • 您可以自己设置自定义日志。 AWS 鼓励人们这样做,您甚至可以从本地设备设置日志记录

标签: amazon-cloudformation amazon-cloudwatch-metrics


【解决方案1】:

我看不出指标过滤器如何帮助您。首先,它们不支持维度,您只能设置指标名称和命名空间。其次,您在日志行上没有实例 ID,并且指标过滤器在每个日志行上工作。

如果您一次只有 1 个实例,则可以使用指标过滤器。然后,您可以配置autoscaling hook 以在新实例启动时创建新的指标过滤器,并将实例 ID 放入指标名称中,并在实例终止时使用另一个自动缩放挂钩来删除指标过滤器。如果您有 1 个以上的实例,则此方法会将值加倍。

您还说您希望避免从应用程序本身发布自定义指标(这将是我的首选方法)。

这给我们留下了subscription filters

您可以将日志事件传递给 lambda 函数。这些事件将包含有关日志事件起源的日志组和日志流的信息。您应该将实例 ID 作为日志流名称的一部分。

然后,您需要编写一个 lambda 函数,该函数从日志流中获取实例 ID,解析日志事件并使用 EMF 将此信息发送回 CloudWatch 日志。但是您可以使用 CloudWatch 代理和 EMF 直接从应用程序中执行此操作,这就是我更喜欢这种方法的原因。

【讨论】:

猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2019-06-18
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多