スキップしてコンテンツを表示

カスタムメトリクスを Amazon EMR クラスターインスタンスから収集して CloudWatch で監視するにはどうすればよいですか?

所要時間2分
0

Amazon EMR クラスターインスタンスのカスタムメトリクス (メモリ、CPU、ディスクの容量使用率など) を設定しようと思います。それから、メトリクスを Amazon CloudWatch で監視しようと思います。

解決策

注: Amazon EMR バージョン 7.0.0 以降を使用している場合は、CloudWatch エージェントをアプリケーションとしてインストールします。詳細については、「Amazon CloudWatch エージェント」を参照してください。

Amazon EMR クラスターからメトリクスを設定して収集するには、CloudWatch エージェントを Amazon Elastic Compute Cloud (Amazon EC2) にインストールします。CloudWatch エージェントをインストールしたら、Amazon EC2 インスタンスのデフォルトの公開済みメトリクスに加えて、収集したメトリクスを使用します。

CloudWatch エージェントで収集したメトリクスは、CloudWatch に保存して他の CloudWatch メトリクスと同様に表示できます。CloudWatch エージェントによって収集されたメトリクスのデフォルト名前空間は、**CWAgent **です。ただし、エージェントを設定する際に、別の名前空間が指定できます。

CloudWatch エージェントを設定し、カスタムメトリクスを Amazon EMR クラスターノードから公開するには、次の手順を実行します。

  1. 次に例示する設定で、サンプル CloudWatch エージェント設定ファイル (config.json) を作成します。ここに示す例では、4 つの CPU メトリクス、2 つのディスクメトリクス、1 つのメモリメトリクスで、Linux サーバーのメトリクスを収集します。こうしたメトリクスは次のように、エージェントの設定で 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 へコピーします。 最後に、スクリプトで CloudWatch エージェントをconfig.json ファイルによって実行します。

  3. ブートストラップアクションを Amazon EMR クラスターに追加します。

collectd メトリクスを CloudWatch へインポートすると、当該メトリクスが時系列グラフで表示されます。アラームの設定で、メトリクスが指定のしきい値を超えたときに通知を受けるようにすることもできます。

collectd メトリクスを CloudWatch コンソールに表示するには、エージェントで収集されるメトリクスの名前空間を選択します。デフォルトで、この名前空間は CWAgent と呼ばれます。詳細については、「CloudWatch エージェントによってインポートされた collectd メトリクスの表示」を参照してください。

AWS公式更新しました 2年前
コメントはありません