こんにちは、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経由でも可能です。