VMware Cloud on AWSの仮想マシンをCloudWatchで監視してみた

こんにちは、AWS事業本部の荒平(@0Air)です。

VMware Cloud on AWSでは、AWSの様々なサービスと容易に連携を行うことができます。
本エントリでは、VMware Cloud on AWS上の仮想マシンを、AWSのモニタリングサービスであるCloudWatchと連携させてみました。

参考までに、本来オンプレミスの仮想マシンに適用する手順は以下のページに記載があります。
Windows OSなどを適用する場合は、適宜読み替えてください。

構成図

図にするほどではありませんが、今回はインターネット(HTTPS)経由でCloudWatchにアクセスします。

接続手順

(1) CloudWatch Agentのインストール

以下のページを参考に、仮想マシンへCloudWatch Agentをインストールします。

インターネット接続が設定されておらず、必要な場合は、こちらの記事もご参考ください。

検証に利用した環境はUbuntu 22.04 だったので、以下のコマンドを流しました。

wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

(2) コンフィグファイルの作成

以下のファイルパスに、コンフィグファイルを作成します。
サンプルのコンフィグを記載しますので、お好みで変更を加えてください。

/opt/aws/amazon-cloudwatch-agent/bin/config.json

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "metrics_collected": {
            "collectd": {
                "metrics_aggregation_interval": 60
            },
            "cpu": {
                "measurement": [
                    "cpu_usage_idle",
                    "cpu_usage_iowait",
                    "cpu_usage_steal",
                    "cpu_usage_guest",
                    "cpu_usage_user",
                    "cpu_usage_system"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ],
                "totalcpu": true
            },
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "diskio": {
                "measurement": [
                    "io_time",
                    "write_bytes",
                    "read_bytes",
                    "writes",
                    "reads"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "net": {
                "measurement": [
                    "bytes_sent",
                    "bytes_recv",
                    "packets_sent",
                    "packets_recv"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "netstat": {
                "measurement": [
                    "tcp_established",
                    "tcp_time_wait"
                ],
                "metrics_collection_interval": 60
            },
            "statsd": {
                "metrics_aggregation_interval": 60,
                "metrics_collection_interval": 10,
                "service_address": ":8125"
            },
            "swap": {
                "measurement": [
                    "swap_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}

(3) IAM認証情報の作成

以下の記事を参考に、CloudWatchAgentServerPolicy を持つIAMユーザーを作成します。(既にある場合は流用可)

(4) 仮想マシンにてAWS CLIの設定

VMware Cloud on AWS上の仮想マシンからCloudWatchへ情報を送るため、AWS CLIの設定を行います。

sudo apt-get update
sudo apt-get install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version

AWS CLIがインストールできたら、aws configureにて認証情報の設定を行います。

sudo aws configure --profile AmazonCloudWatchAgent

AWS Access Key ID [None]: AKIAXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

(5) 仮想マシンにて CloudWatch Agentの実行

以下のコマンドにより、CloudWatch Agentを起動します。(コンフィグの配置など環境により、コマンドの一部が異なります)
types.dbが無い場合は初回のみファイルを作成します。

sudo mkdir /usr/share/collectd
sudo touch /usr/share/collectd/types.db

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m onPremise -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m onPremise -a status

(6) CloudWatchコンソールから確認

Syslogや認証ログが正常にアップロードされていること、そしてメモリやディスク使用率などのメトリクスが取得できていることが確認できました。

おわりに

今回は、Amazon CloudWatchとの接続を実施してみました。
メトリクスが収集できれば、各種AWSのエコシステムの利用が容易なので積極的に使っていきたいですね。

このエントリが誰かの助けになれば幸いです。
それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!

参考

CloudWatchへの接続はVPC Endpoint経由でも可能です。