在 CloudWatch 中跨 ECS 任务实例聚合 codahale 指标计数

问题描述

我有一个 ECS 服务向 CloudWatch 报告指标,这些指标是使用 Codahale Metrics 收集的。一些度量是计数,例如对外部服务发出的请求的计数。每个服务实例维护并向 CloudWatch 报告其自己的计数。据我了解,这意味着 CloudWatch 中的计数值是每个服务的个人计数,而无法查看总数。如果每个实例发出 300 个请求,则报告的值将是 300,无法将其加起来为 900。

修复它的最佳方法是什么?是否向报告的 CloudWatch 指标添加一个额外的维度,例如 ecs 任务 ID?

我正在 Grafana 中绘制结果,但这可能不是重要的部分。

解决方法

指标已在 Cloudwatch 中聚合,假设它们具有相同的命名空间和名称。如果这些服务请求指标相同,则它们应该是相同的指标,然后您可以向它们添加维度,例如TaskIdRequestedService 或任何您想要聚合的内容。

通常情况下,您在 Cloudwatch Metrics 中遇到的挑战与您所描述的相反。指标已经聚合在一起,然后您想要深入到特定值以调试某些问题,例如如果您遇到特定容器任务的问题,您将设置维度 TaskId=todo1,或者如果您怀疑某个服务已关闭,您可以设置 RequestedService=todo2

我怀疑您正在为向其发出请求的每项服务创建一个指标,而您只需要一个指标,并如前所述向其添加维度。

此外,对于这个特定用例,您可能需要考虑开放遥测/X-Ray,它将为您创建服务图并处理通过不同服务跟踪请求的特定情况。不过,这确实需要一些努力来设置。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...