全国 5000 万人の収集癖の皆さん、こんばんわ。かっぱです。
tl;dr
collectd というサーバー上の各種メトリクスを収集するオープンソースツールのプラグインとして CloudWatch Plugin が awslab よりリリースされたようなので触ってみたいと思う。せっかくなので EC2 ではなく、手元の Vagrant 環境で動いている Ubuntu で動かしてみたい。
memo
試した環境
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
IAM ユーザーの作成
マネジメントコンソールより IAM ユーザーを作成。以下のようなポリシーを付与。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": [ "*" ] } ] }
アクセスキーとシークレットアクセスキーを控えておく。
collectd をインストール
sudo apt-get update sudo apt-get install collectd
CloudWatch Plugin のセットアップ
wget https://raw.githubusercontent.com/awslabs/collectd-cloudwatch/master/src/setup.py chmod +x setup.py sudo ./setup.py
セットアップウィザードを以下のように進めた。
vagrant@vagrant-ubuntu-trusty-64:~$ sudo ./setup.py Installing dependencies ... OK Installing python dependencies ... OK Downloading plugin ... OK Extracting plugin ... OK Moving to collectd plugins directory ... OK Copying CloudWatch plugin include file ... OK AWS region could not be automatically detected. Cause:Cannot access metadata service. Cause: HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /latest/meta-data/placement/availability-zone/ (Caused by ReadTimeoutError("HTTPConnectionPool(host='169.254.169.254', port=80): Read timed out. (read timeout=0.5)",)) Enter one of the available regions from: http://docs.aws.amazon.com/general/latest/gr/rande.html#cw_region Enter region: ap-northeast-1 EC2 instance id could not be automatically detected. Enter hostname [vagrant-ubuntu-trusty-64]: IAM Role could not be automatically detected. Enter absolute path to AWS credentials file [/home/vagrant/.aws/credentials]: Enter access key: AKxxxxxxxxxxxxxxxx Enter secret key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Choose how to install CloudWatch plugin in collectd: 1. Do not modify existing collectd configuration 2. Add plugin to the existing configuration Enter choice [2]: Plugin configuration written successfully. Credentials configuration written successfully. Stopping collectd process ... OK Starting collectd process ... OK
CloudWatch に飛ばしたいメトリクスを whitelist.conf に設定
$ cat /opt/collectd-plugins/cloudwatch/config/whitelist.conf memory--memory-.*
ちなみに、blocked_metrics というファイルに自動的に収集されるメトリクスのリストが記載されていて、その中から CloudWatch に飛ばしたいメトリクスのみを whitelist.conf に転記するようだ。(全部飛ばしたらコスト的にも大変だと思う)
collectd を再起動
sudo service collectd restart
暫くすると...
カスタムメトリクスに登録された。おお。
最後に
カスタムメトリクスのコスト
- https://aws.amazon.com/jp/cloudwatch/pricing/
- Amazon CloudWatch のカスタムメトリックス $0.50 : メトリックスあたり/月(東京リージョン)
- 無料利用枠が一応ある(10 メトリックまでは無料)
CloudWatch にカスタムメトリックを飛ばしたい
- と思った時に収集部分だけを実装すればいいことになる
- collectd が収集するメトリクスは collectd-web のような Web インタフェースで見つつ、アラームを飛ばしたいメトリクスだけ CloudWatch に飛ばすというのもありかなーと思った
一応
- EC2 以外でも使えるので、マルチクラウド環境の監視を一時的にでも CloudWatch に寄せたいようなニーズがあれば検討出来るかもしれない