端くれプログラマの備忘録 AWS [AWS] EC2/CWAgentでカスタムメトリックスを収集する

[AWS] EC2/CWAgentでカスタムメトリックスを収集する

CloudWatchで参照できるEC2のメトリックスには、メモリ使用量やボリュームの空き容量など、自分が欲しい情報が含まれていない。これらは、対象のEC2インスタンスでCloudWatchエージェントを実行して、カスタムメトリックスとして取得しなければならない。

以下、CloudWatchエージェントのセットアップの覚え書き。

CloudWatchエージェントのインストール

# yum install amazon-cloudwatch-agent

CloudWatchエージェント設定ファイルの作成

AWS CloudWatch Agent Configuration Managerを使って対話的に作成することができるが、

# /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

JSON形式の書式が分かっていれば、エディタで作成することも可能だ。

# vi /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "disk_free",
                    "disk_used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used",
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}

IAMロールの作成

IAM Management Console

  • Roles
  • [Create role]
  • Select type of trusted entity: AWS service
  • Choose a use case: EC2
  • [Next: Permissions]
  • [*] CloudWatchAgentServerPolicy
  • [Next: Tags]
  • Add tags (optional):
  • [Next: Review]
  • Review
  • Role name: CloudWatchAgentServerRole
  • Role description:
  • Trusted entities: – AWS service: ec2.amazonaws.com
  • Policies: CloudWatchAgentServerPolicy
  • Permissions boundary: Permissions boundary is not set
  • [Create role]

EC2へのIAMロールのアタッチ

EC2 Instances

  • 対象のEC2インスタンスを選択
  • Actions>Security>Modify IAM role
  • IAM role: CloudWatchAgentServerRole
  • [Save]

CloudWatchエージェントの起動

# /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

実行されているか確認

# /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
{
  "status": "running",
  "starttime": "2021-09-06T21:52:46+0000",
  "configstatus": "configured",
  "cwoc_status": "stopped",
  "cwoc_starttime": "",
  "cwoc_configstatus": "not configured",
  "version": "1.247347.4"
}

これでClouwWatchエージェントは稼働するようになったので、CloudWatchにメトリックスが送られてきているか確認する。

CloudWatch

  • Metrics>All metrics
  • Custom Namespaces
  • CWAgent

参考サイト

CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集するhttps://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html

CloudWatch エージェントにより収集されるメトリクス
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

新しいCloudWatch AgentでEC2インスタンスのメモリ使用率を監視する – Qiita
https://qiita.com/hayao_k/items/d983177510b3b3a69561