问题描述
我有一个 ECS 服务向 CloudWatch 报告指标,这些指标是使用 Codahale Metrics 收集的。一些度量是计数,例如对外部服务发出的请求的计数。每个服务实例维护并向 CloudWatch 报告其自己的计数。据我了解,这意味着 CloudWatch 中的计数值是每个服务的个人计数,而无法查看总数。如果每个实例发出 300 个请求,则报告的值将是 300,无法将其加起来为 900。
修复它的最佳方法是什么?是否向报告的 CloudWatch 指标添加了一个额外的维度,例如 ecs 任务 ID?
我正在 Grafana 中绘制结果,但这可能不是重要的部分。
解决方法
指标已在 Cloudwatch
中聚合,假设它们具有相同的命名空间和名称。如果这些服务请求指标相同,则它们应该是相同的指标,然后您可以向它们添加维度,例如TaskId
、RequestedService
或任何您想要聚合的内容。
通常情况下,您在 Cloudwatch Metrics
中遇到的挑战与您所描述的相反。指标已经聚合在一起,然后您想要深入到特定值以调试某些问题,例如如果您遇到特定容器任务的问题,您将设置维度 TaskId=todo1
,或者如果您怀疑某个服务已关闭,您可以设置 RequestedService=todo2
。
我怀疑您正在为向其发出请求的每项服务创建一个指标,而您只需要一个指标,并如前所述向其添加维度。
此外,对于这个特定用例,您可能需要考虑开放遥测/X-Ray,它将为您创建服务图并处理通过不同服务跟踪请求的特定情况。不过,这确实需要一些努力来设置。