L. *_*nty 5 aws-cloudformation amazon-cloudwatch-metrics
我为日志流设置了一个非常基本的指标过滤器,以计算符合特定条件的行数。我的用例与教程中描述的用于计算 apache HTTP 状态代码的用例非常相似。
例如日志事件看起来像
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326
Run Code Online (Sandbox Code Playgroud)
过滤器非常类似于
[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]
Run Code Online (Sandbox Code Playgroud)
我通过 Cloudwatch 控制台设置了指标过滤器。该过滤器工作正常,只是它会累积所有实例 ID 的值。然而,只有当该指标考虑到实例 ID 时,该指标才对我有价值。
有没有办法获取每个实例 ID 的指标,例如将实例 ID 作为维度写入指标?
我搜索了一段时间,但找不到合适的东西。对我来说非常重要的是,我不必对实例 ID 进行硬编码,因为实例可能会在任何时候终止,并且将创建新实例。此外,我想避免评估 EC2 机器上的指标。
有什么办法可以实现我的目标吗?我真的很感激任何建议!
我不知道指标过滤器可以在这里帮助您。首先,它们不支持维度,您只能设置指标名称和命名空间。其次,您在日志行上没有实例 ID,并且指标过滤器按日志行工作。
如果您一次只有 1 个实例,则可以使用指标过滤器。然后,您可以配置自动缩放挂钩以在新实例启动时创建新的指标过滤器,并将实例 ID 放入指标名称中,并使用另一个自动缩放挂钩在实例终止时删除指标过滤器。如果您有超过 1 个实例,此方法会重复计算值。
您还说您希望避免从应用程序本身发布自定义指标(这将是我首选的方法)。
这给我们留下了订阅过滤器。
您可以将日志事件传递给 lambda 函数。这些事件将包含有关日志事件起源的日志组和日志流的信息。您应该将实例 ID 作为日志流名称的一部分。
然后,您需要编写一个 lambda 函数,该函数从日志流中获取实例 ID、解析日志事件并使用EMF将此信息发送回 CloudWatch 日志。但您可以使用 CloudWatch Agent 和 EMF 直接从应用程序执行此操作,这就是我更喜欢这种方法的原因。
| 归档时间: |
|
| 查看次数: |
4134 次 |
| 最近记录: |