跳至内容

如何从 Amazon EMR 集群实例收集自定义指标,然后在 CloudWatch 中进行监控?

2 分钟阅读
0

我想为 Amazon EMR 集群实例配置自定义指标,例如内存、CPU 和磁盘空间使用情况。然后,我想用 Amazon CloudWatch 监控这些指标。

解决方案

**注意:**如果使用的是 Amazon EMR 7.0.0 或更高版本,请将 CloudWatch 代理安装为应用程序。有关详细信息,请参阅 Amazon CloudWatch 代理

要配置和收集 Amazon EMR 集群的指标,请在 Amazon Elastic Compute Cloud (Amazon EC2) 上安装 CloudWatch 代理。安装 CloudWatch 代理后,除了 Amazon EC2 实例的默认已发布指标外,还要使用收集的指标。

在 CloudWatch 中存储和查看通过 CloudWatch 代理收集的指标,与任何其他 CloudWatch 指标类似。CloudWatch 代理收集的指标的默认命名空间为 CWAgent。但是,可以在配置代理时指定不同的命名空间。

要配置 CloudWatch 代理并从 Amazon EMR 集群节点发布自定义指标,请完成以下步骤:

  1. 使用以下示例配置创建示例 CloudWatch 代理配置文件 (config.json)。以下示例会收集 Linux 服务器的指标,即四个 CPU 指标、两个磁盘指标和一个内存指标。代理被设置为从 collectd 客户端接收以下指标:

    {
      "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
      },
      "metrics": {
        "aggregation_dimensions": [
          [
            "InstanceId"
          ]
        ],
        "append_dimensions": {
          "ImageId": "${aws:ImageId}",
          "InstanceId": "${aws:InstanceId}",
          "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
          "collectd": {
            "metrics_aggregation_interval": 60
          },
          "cpu": {
            "measurement": [
              "cpu_usage_idle",
              "cpu_usage_iowait",
              "cpu_usage_user",
              "cpu_usage_system"
            ],
            "metrics_collection_interval": 60,
            "resources": [
              "*"
            ],
            "totalcpu": false
          },
          "disk": {
            "measurement": [
              "used_percent",
              "inodes_free"
            ],
            "metrics_collection_interval": 60,
            "resources": [
              "*"
            ]
          },
          "mem": {
            "measurement": [
              "mem_used_percent"
            ],
            "metrics_collection_interval": 60
          },
          "statsd": {
            "metrics_aggregation_interval": 60,
            "metrics_collection_interval": 10,
            "service_address": ":8125"
          }
        }
      }
    }
  2. 将以下引导脚本复制到 Amazon Simple Storage Service (Amazon S3) 位置:

    #!/bin/bash
    
    sudo yum install amazon-cloudwatch-agent -y
    sudo amazon-linux-extras install collectd -y
    
    aws s3 cp <s3 path for config.json> /home/hadoop/config.json
    
    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:///home/hadoop/config.json

    该脚本会先安装 CloudWatch 代理 collectd 客户端。然后,它会将 config.json 文件从 Amazon S3 复制到本地路径 **/home/hadoop。**最后,该脚本会使用 config.json 文件运行 CloudWatch 代理。

  3. 添加引导操作至 Amazon EMR 集群。

collectd 指标导入 CloudWatch 后,可以按时间序列图查看这些指标。还可以设置警报,在指标超过指定的阈值时收到通知。

要在 CloudWatch 控制台中查看 collectd 指标,请为代理收集的指标选择命名空间。默认情况下,此命名空间称为 CWagent。有关更多信息,请参阅 Viewing collectd metrics imported by the CloudWatch agent

AWS 官方已更新 2 年前