首页 > 解决方案 > 选择或汇总针对 Cloudwatch 数据代理指标记录的维度

问题描述

我正在使用 Cloudwatch 数据代理的 Procstat 插件来记录一些每个进程的 CPU 使用情况。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-procstat-process-metrics.html

这一切都被收集好了,但是该指标被记录为“实例 ID(例如 i-143...)”、“图像 ID(例如 ami-123...)”和“实例类型”(例如 t3.small )'

当服务器被缩小和缩小时,我的警报会因为实例 ID 发生变化而中断。我还更新了 AMI,并可能在某些时候更改实例类型。如果我正在处理实例 ID,则 AMI 和实例类型无论如何都会被修复。

有没有办法配置 Cloudwatch 数据代理来记录没有这些维度的指标,或者让 Cloudwatch 指标聚合所有实例 ID?

标签: amazon-web-servicesamazon-cloudwatchcloudwatch-alarms

解决方案


我在 CloudWatch 代理配置的append_dimensions和选项中找到了我需要的内容。aggregate_dimensions

在配置中“指标”块的顶层,您可以添加维度:

"metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
...

但是,您只能添加这些 AWS 维度。

您可以添加自定义维度,但仅限于特定指标。因此,例如,在 CPU 指标收集器中:

         "metrics_collected": {
             "cpu": {
                 "append_dimensions": {
                     "CustomDimension": "Foo"
                 },
                 "measurement": [
                     "cpu_usage_idle",
                     "cpu_usage_iowait",
                     "cpu_usage_user",
                     "cpu_usage_system"
                 ],
                 "metrics_collection_interval": 60,
                 "resources": [
                     "*"
                 ],
                 "totalcpu": false
             },

您也可以将这些添加到 procstat 组中,尽管它是一个列表:

            "procstat": [
                 {
                     "append_dimensions": {
                         "CustomDimension": "Foo"
                     },
                     "pid_file": "/var/run/celerybeat/beat.pid",
                     "measurement": [
                         "cpu_usage",
                         "memory_locked",
                         "pid_count"
                     ]
                 }

aggregation_dimensions最后,您可以在指标块的顶层使用这些自定义维度进行聚合。

虽然自定义维度附加在特定的 metric_collected 中,但您可以在 aggregation_dimensions 时将这些维度放在顶部

"metrics": {
         "append_dimensions": {
             "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
             "InstanceId": "${aws:InstanceId}",
             "InstanceType": "${aws:InstanceType}"
         },
         "aggregation_dimensions" : [
             ["AutoScalingGroupName"],
             ["AutoScalingGroupName", "InstanceType"],
             ["CustomDimension"],
             ["CustomDimension", "InstanceType"],
             ["CustomDimension", "pidfile"],
         ],
         "metrics_collected": {
...

这些文档位于https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html但我花了一段时间才将它们挖掘出来、测试它们并工作自定义维度需要存在于特定metrics_collected部分中。


推荐阅读