You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为EC2实例的CloudWatch添加自定义指标并通过SSM自动化配置

CloudWatch Agent 配置文件全量路径梳理

不管是Linux还是Windows实例,CloudWatch Agent的配置文件分布在几个固定路径,除了你提到的主配置和.d目录,还有这些可能的位置:

Linux 系统

  • 主配置文件:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json(部分环境也可能是/etc/amazon-cloudwatch-agent/config.json)
  • 扩展配置目录:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ 下所有.json文件,Agent会自动合并此处的所有配置
  • 临时运行时配置:/opt/aws/amazon-cloudwatch-agent/tmp/amazon-cloudwatch-agent.tmp.json,这是通过SSM Parameter Store加载配置时生成的临时文件,不建议直接修改
  • 旧版本兼容路径:早期部署的Agent可能使用/var/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

Windows 系统

  • 主配置文件:C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json
  • 扩展配置目录:C:\Program Files\Amazon\AmazonCloudWatchAgent\config.d\ 下所有.json文件
  • 临时运行时配置:C:\Program Files\Amazon\AmazonCloudWatchAgent\tmp\amazon-cloudwatch-agent.tmp.json
确认实例正在使用的配置文件

要避免盲目修改,先确认当前生效的配置来源:

  • 查看Agent日志:Linux看/var/log/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log,Windows看C:\Program Files\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log,日志里会明确打印加载的配置路径,比如Loading config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  • 执行状态命令:Linux运行/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status,Windows运行& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a status,输出的config status部分会显示配置加载的来源和状态
追加自定义指标的最优方案

优先选择在扩展配置目录新增独立文件,因为Agent会自动合并所有.d目录下的配置,不会破坏原有主配置:

  1. 在对应系统的.d目录创建新JSON文件(比如custom-metrics.json),内容只包含需要追加的指标配置,示例如下:
{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "procstat": [
        {
          "measurement": ["cpu_usage"],
          "metrics_collection_interval": 60,
          "pid_file": "/var/run/httpd.pid"
        }
      ]
    }
  }
}
  1. 如果必须修改主配置文件,先备份再用jq(Linux)或PowerShell JSON工具(Windows)编辑,避免手动出错:
    Linux备份并追加命令示例:
cp /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json.bak
jq '.metrics.metrics_collected += {"procstat": [{"measurement": ["cpu_usage"], "metrics_collection_interval": 60}]}' /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json.bak > /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  1. 修改后重启Agent生效:
  • Linux:/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop && /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start
  • Windows:& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a stop; & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a start
用SSM实现批量自动化操作

通过SSM Run Command可以批量完成所有实例的配置更新,步骤如下:

  1. 确保目标EC2实例已安装SSM Agent,且关联的IAM角色拥有AmazonSSMManagedInstanceCore权限
  2. 选择SSM的预定义文档:Linux用AWS-RunShellScript,Windows用AWS-RunPowerShellScript,或者自定义文档
  3. 编写对应系统的执行脚本:

Linux 自动化脚本

#!/bin/bash

# 自定义指标配置内容,按需修改
CUSTOM_CONFIG='{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "procstat": [
        {
          "measurement": ["cpu_usage"],
          "metrics_collection_interval": 60,
          "pid_file": "/var/run/httpd.pid"
        }
      ]
    }
  }
}'

# 创建扩展配置目录(如果不存在)
mkdir -p /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/

# 写入自定义配置文件
echo "$CUSTOM_CONFIG" > /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/custom-metrics.json

# 重启CloudWatch Agent
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop && /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a start

# 输出状态验证
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

Windows 自动化脚本

# 自定义指标配置内容,按需修改
$customConfig = @"
{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "procstat": [
        {
          "measurement": ["cpu_usage"],
          "metrics_collection_interval": 60,
          "pid_file": "C:\\Windows\\System32\\inetsrv\\w3wp.pid"
        }
      ]
    }
  }
}
"@

# 创建扩展配置目录(如果不存在)
$configDir = "C:\Program Files\Amazon\AmazonCloudWatchAgent\config.d\"
if (-not (Test-Path $configDir)) {
    New-Item -ItemType Directory -Path $configDir | Out-Null
}

# 写入自定义配置文件
$configPath = Join-Path $configDir "custom-metrics.json"
$customConfig | Out-File -FilePath $configPath -Encoding utf8

# 重启CloudWatch Agent
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a stop
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a start

# 输出状态验证
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.exe" -m ec2 -a status
  1. 在SSM控制台选择目标实例(可通过标签筛选),执行脚本即可批量完成配置追加和Agent重启

内容的提问来源于stack exchange,提问作者tantan69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:50:16