选择或聚合根据 Cloudwatch 数据代理指标记录的维度

Choosing or Aggregating Dimensions recorded against Cloudwatch Data Agent Metric

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

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

这一切都在收集中,但指标正在用 'Instance ID (e.g i-143...)'、'Image ID (e.g ami-123...)' 和 'Instance Type (e.g t3.small)'

记录

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

是否可以配置 Cloudwatch 数据代理来记录没有这些维度的指标,或者 Cloudwatch 指标可以跨所有实例 ID 聚合?

我在 CloudWatch 代理配置的 append_dimensionsaggregate_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 部分中。