AWS 通过 CloudWatch 进行系统监控

114 阅读3分钟

大致步骤如下:

  1. 配置 CloudWatch 代理
  2. (按需)配置 CloudWatch 告警大盘
  3. 配置 CloudWatch 警报

一、配置 CloudWatch 监控的指标

即为了定义监控指标。

1.1 配置指标

方式一:手动修改 CloudAgent 配置(推荐)

大致步骤如下:

🎙️ 下面的配置文件中,不仅配置了需要采集的指标,同时配置了需要采集的日志文件。 采集指标有:

  • mem_used_percent
  • cpu_used_percent
  • disk_used_percent 采集的日志文件有:
  • /tmp/log/ads_dispatch/info.log
  • /tmp/log/ads_docker/info.log
  • /home/ubuntu/log/ads_extend/info.log
  1. 在 EC2 创建 /opt/aws/amazon-cloudwatch-agent/bin/config.json 配置文件,文件内容如下
{
    "agent": {
        "metrics_collection_interval": 60
    },
    # 配置日志采集
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        # 采集的日志文件路径
                        "file_path": "/tmp/log/ads_dispatch/info.log",
                        # 日志存放的日志组(需提前在 CloudWatch 中创建)
                        "log_group_name": "ads",
                        # 日志组中的日志流(无需提前创建)
                        "log_stream_name": "ads_dispatch-{instance_id}",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/tmp/log/ads_docker/info.log",
                        "log_group_name": "ads",
                        "log_stream_name": "ads_docker-{instance_id}",
                        "retention_in_days": 30
                    },
                    {
                        "file_path": "/home/ubuntu/log/ads_extend/info.log",
                        "log_group_name": "ads",
                        "log_stream_name": "ads_extend-{instance_id}",
                        "retention_in_days": 30
                    }
                ]
            }
        }
    },
    # 配置需要采集的指标
    "metrics": {
        # 指标存放的命名空间
        "namespace": "CWAgent",
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        },
        "metrics_collected": {
            "mem": {
                "measurement": [
                    "used_percent",
                    "total"
                ]
            },
            "cpu": {
                "measurement": [
                    "usage_active"
                ]
            },
            "disk": {
                "measurement": [
                    "used_percent",
                    "total"
                ]
            }
        }
    }
}
  1. 使用如下命令使配置生效
# 二选一
# 覆盖现有 CWA 配置
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
# 新增 CWA 配置(优先)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

方式二:控制台配置 CloudAgent 配置(不推荐)

🎙️ 该方式需确保 EC2 的 SSM Agent 可用

Step 1:进入配置页

操作入口为:

  1. 选中需要配置的 EC2 实例
  2. 点击右上角 “操作”
  3. 选中 “监控和故障排除”
  4. 点击 “管理 CloudWatch 警报”

Step 2:根据步骤条的指引逐步配置指标

第 2 步:验证 IAM 权限 若提示无足够的权限,则通过以下方式修改 IAM 角色为 “ec2-cloudwatch” 或其他具有相应权限的角色:

🤖 第 5 步:选择配置 配置需要关注的指标,如下图,配置了 内存、CPU、磁盘 的利用率:

1.2 验证配置的指标是否生效

  1. 进入 CloudWatch 控制台

  2. 导航栏选择 “指标” -> “全部指标”,选择 Region

  1. 搜索 EC2 的实例 ID
  2. 选择命名空间 “CWAgent”,维度选择 “InstanceId”

因为在步骤 2 的第 5 步中创建的指标默认都在该命名空间下,维度使用的是 InstanceId

二、(按需)配置 CloudWatch 告警大盘

即为了可视化监控指标。

  1. 进入 CloudWatch 控制台
  2. 导航栏选择 “控制面板”
  3. 点击右上角 “创建控制面板”

三、配置 CloudWatch 告警

🚨 注意,这里的预警只会触发一次。 需持续触发,参考: 活用 CloudWatch 创建监控、告警为业务保驾护航 | Amazon Web Services

Step 1:创建通知器

参考以下内容创建钉钉通知器,其中的 SNS 主题在下面 👇 要用。

配置钉钉通知渠道

Step 2:配置告警规则

步骤如下:

  1. 进入 CloudWatch 控制台
  2. 导航栏选择 “警报” -> "全部告警" -> "创建警报"

  1. 选择指标及条件【找出第一步中创建的指标】

  1. 配置操作【选择通知,指定 Step1 中创建的 SNS 主题】

在这里插入图片描述

  1. 添加警报信息

  1. 创建警报