问题描述
我正在将自定义指标数据记录到AWS Cloudwatch中,并尝试对其进行图形化处理。我假设CloudWatch中的Dimensions
是用于丰富我的数据的元数据,但是似乎一旦添加了维度,您就可以no longer query across different combinations of dimensions。因此,对于我来说,我并没有真正看到尺寸的意义,因为任何独特的组合基本上只是一种新的指标。但更重要的是,有一种方法来记录一组具有不同标签或尺寸的数据,然后对该数据进行切片和切块(例如在Grafana中)。
为了更加具体,我在应用程序中记录缓存加载时间。我有一个指标“ cache-miss”,具有多个维度,例如:
- 缓存的集合
- 与缓存数据关联的客户
我想要几个不同的图:
- 总的未命中缓存次数(即忽略尺寸,仅查看一段时间内的计数)
- 每个集合的总缓存未命中数(按第一维汇总)
- 每个客户的总缓存未命中数(按第二维汇总)
是否可以通过Cloudwatch指标和/或Grafana(或替代工具)实现这一目标?
解决方法
您已经提到-https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html:
CloudWatch将维度的每个唯一组合视为一个单独的指标,即使这些指标具有相同的指标名称也是如此。您只能使用专门发布的维度组合来检索统计信息。检索统计信息时,请为创建度量标准时使用的名称空间,度量标准名称和维度参数指定相同的值。
因此,如果您按2个维度推送了Total cache misses
,则只能查询2个维度的指标。因此,您真的不能随便看一下计数。
可能的解决方法:
- CloudWatch数学-请参见CloudWatch does not aggregate across dimensions for your custom metrics 中的示例
- 从理论上讲,Grafana 7+
transformation
功能https://grafana.com/blog/2020/06/11/new-in-grafana-7.0-data-transformations-for-all-visualizations-that-support-queries/
或者您可以根据自己的使用情况从CloudWatch切换到更好的TSDB。