Amazon Web Services ブログ
新しい collectd の CloudWatch プラグイン
これまでご自分のビジネス、アプリケーション、システムメトリックスをAmazon CloudWatch で保存されてきたと思います (詳しくは「Amazon CloudWatch の新しいカスタムメトリックス」をご覧ください)。随分前のことになりますが、私が 2011 年に書いたブログで「ユーザーの AWS リソースを CloudWatch で保存しているように、グラフを表示したり、アラームを設定、自動化したアクションをこうしたメトリックスに基づいて設定することができます。」といったように、この機能についてご紹介したことがあります。
そして本日より、新しい CloudWatch プラグインcollectd 対象を使用することで、ユーザーのシステムから統計を収集する方法を簡略化しながら収集した情報を CloudWatch に保存できるようになりました。さまざまなタイプの統計を収集するcollectd の機能と、保存、表示、アラート、警告を可能にする CloudWatch の機能を組み合わせることで、EC2 インスタンスの状態とパフォーマンス、そして EC2 で実行しているオンプレミスハードウェアやアプリケーションについてより細かく把握することができます。このプラグインはオープンソースプロジェクトとしてリリースしています。皆様からのプルリクエストをお待ちしております。
パフォーマンスと可搬性を提供するためcollectd デーモンは C で記述されています。これは100 以上のプラグインをサポートし、Apache やNginx ウェブサーバーパフォーマンス、メモリ使用量、稼働時間の統計を収集できるようにします。
インストールと設定
実際のアクションを見るため、collectd と新しいプラグインを EC2 インスタンスにインストールして設定してみました。
まず、CloudWatch にメトリックスデータを書き込むためのアクセス許可を使用して IAM ポリシーを作成します。

次にポリシーで EC2 を許可する IAM ロール (インスタンスで実行するcollectd コード) を作成します。

オンプレミスサーバーから統計を収集するためにプラグインを使用する予定の場合や、すでに EC2 インスタンスを実行している場合は、このステップを行わずに適切なアクセス権限を代わりに使用して IAM ユーザーを作成します。私の場合、最初の例ではなくこの方法を実行していたら、ユーザーの認証情報をサーバーまたはインスタンスに追加する必要がありました。
ポリシーとロールの準備ができたら、EC2 インスタンスを起動してロールを選択します。

ログインを完了しcollectd をインストールします。
$ sudo yum -y install collectd次にプラグインを取得しスクリプトをインストールします。スクリプトを実行可能にしたら、それを実行します。
$ chmod a+x setup.py$ sudo ./setup.pyいくつかの質問に答えた後、問題なく設定を実行できました。collectd は設定完了後に起動しました。
Installing dependencies ... OKInstalling python dependencies ... OKCopying plugin tar file ... OKExtracting plugin ... OKMoving to collectd plugins directory ... OKCopying CloudWatch plugin include file ... OKChoose AWS region for published metrics: 1. Automatic [us-east-1] 2. CustomEnter choice [1]: 1Choose hostname for published metrics: 1. EC2 instance id [i-057d2ed2260c3e251] 2. CustomEnter choice [1]: 1Choose authentication method: 1. IAM Role [Collectd_PutMetricData] 2. IAM UserEnter choice [1]: 1Choose how to install CloudWatch plugin in collectd: 1. Do not modify existing collectd configuration 2. Add plugin to the existing configurationEnter choice [2]: 2Plugin configuration written successfully.Stopping collectd process ... NOT OKStarting collectd process ... OK$collectd を実行することができ、プラグインのインストールと設定が完了したら、次のステップは目的の統計を決定し、CloudWatch に発行するプラグインを設定することです (メトリックスごとに料金が発生するので、これは大切なステップです)。
ファイル/opt/collectd-plugins/cloudwatch/config/blocked_metrics には、収集したメトリックスのリストが含まれていますが、これは CloudWatch に発行されていません。
$ cat /opt/collectd-plugins/cloudwatch/config/blocked_metrics# This file is automatically generated - do not modify this file.# Use this file to find metrics to be added to the whitelist file instead.cpu-0-cpu-usercpu-0-cpu-nicecpu-0-cpu-systemcpu-0-cpu-idlecpu-0-cpu-waitcpu-0-cpu-interruptcpu-0-cpu-softirqcpu-0-cpu-stealinterface-lo-if_octets-interface-lo-if_packets-interface-lo-if_errors-interface-eth0-if_octets-interface-eth0-if_packets-interface-eth0-if_errors-memory--memory-usedload--load-memory--memory-bufferedmemory--memory-cachedメモリの消費量が気になっていたので、次のラインを追加しました。/opt/collectd-plugins/cloudwatch/config/whitelist.conf:
memory--memory-.*collectd の設定ファイル (/etc/collectd.conf) にはcollectd とプラグインの設定も含まれています。私の場合、変更の必要はありませんでした。
変更を反映させるため、collectd を再起動させました。
$ sudo service collectd restart多少のメモリを消費させるためにインスタンスを少し使用してから、CloudWatch コンソールを開きメトリックスを探し表示しました。

このスクリーンショットには、今後 CloudWatch コンソールに施される強化点のプレビューが含まれていますので、ご自分の画面に同じものが表示されなくてもご安心ください (詳しくは今後お知らせします)。
プロダクションインスタンスをモニタリングしていたのであれば、collected プラグインを 1 つ 2 つインストールすることもできました。Amazon Linux AMI で利用可能なリストは次をご覧ください。
$ sudo yum list | grep collectdcollectd.x86_64 5.4.1-1.11.amzn1 @amzn-maincollectd-amqp.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-apache.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-bind.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-curl.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-curl_xml.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-dbi.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-dns.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-email.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-generic-jmx.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-gmond.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-ipmi.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-iptables.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-ipvs.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-java.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-lvm.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-memcachec.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-mysql.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-netlink.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-nginx.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-notify_email.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-postgresql.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-rrdcached.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-rrdtool.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-snmp.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-varnish.x86_64 5.4.1-1.11.amzn1 amzn-maincollectd-web.x86_64 5.4.1-1.11.amzn1 amzn-main主要事項
バージョン 5.5 以降のcollectd を使用している場合は、4 つのメトリックスがデフォルトで発行されるようなりました。
- df-root-percent_bytes-used – ディスク速度
- memory–percent-used – メモリ使用量
- swap–percent-used – スワップ使用率
- cpu–percent-active – cpu 使用率
これらを発行したくない場合はwhitelist.conf ファイルから削除することができます。
現在、Amazon Linux AMI、Ubuntu、RHEL、CentOS のプライマリリポジトリは古いバージョンのcollectd を提供しています。カスタムリポジトリからインストールした場合またはソースから構築した場合はデフォルト設定による動作が異なる点にご注意ください。
その他
ご紹介できるものは他にもあるのですが、残念ながら時間切れです。その他のプラグインもインストールしwhitelist.conf を設定してさらに多くのメトリックスを CloudWatch に発行することができます。CloudWatch アラームを作成してカスタムダッシュボードやその他を設定することもできます。
始めるにはGitHub の AWS ラボにアクセスしcollectd の CloudWatch プラグインをダウンロードしてください。
—Jeff;