如何從 Amazon EMR 叢集執行個體收集自訂指標,並在 CloudWatch 中對其進行監控?

2 分的閱讀內容
0

我想為 Amazon EMR 叢集執行個體設定自訂指標,例如記憶體、CPU 和磁碟空間使用量。然後,我想要使用 Amazon CloudWatch 來監控指標。

解決方法

您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 上安裝 CloudWatch 代理程式,從 Amazon EMR 叢集設定和收集指標。安裝 CloudWatch 代理程式後,除了 Amazon EC2 執行個體的預設已發佈指標外,您還可以使用收集的指標。

您可以在 CloudWatch 中儲存和檢視透過 CloudWatch 代理程式收集的指標,就像任何其他 CloudWatch 指標一樣。CloudWatch 代理程式所收集指標的預設命名空間為 CWAgent。但是,您可以在設定代理程式時指定不同的命名空間。

若要設定 CloudWatch 代理程式並從 Amazon EMR 叢集節點發佈自訂指標,請依照下列步驟執行:

1.    使用下列範例組態建立一個範例 CloudWatch 代理程式組態檔 (config.json)。代理程式組態檔是 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.    將下列 bootstrap 指令碼 (例如:emr-cloudwatchagent-bootstrap.sh) 複製到您的 Amazon Simple Storage Service (Amazon S3) 位置。

------emr-cloudwatchagent-bootstrap.sh---------
#!/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.    將 bootstrap 動作新增至 Amazon EMR 叢集。

將收集的指標匯入 CloudWatch 後,您可以將這些指標作為時間序列圖表檢視。您也可以設定警示,以便在指標超過您指定的特定臨界值時收到通知。若要在 CloudWatch 主控台中檢視收集的指標,請為代理程式收集的指標選擇命名空間。依預設,此命名空間稱為 CWagent。如需詳細資訊,請參閱檢視 CloudWatch 代理程式匯入的收集指標


AWS 官方
AWS 官方已更新 2 年前