collectdのCloudWatchプラグインでデフォルト以外の様々なデータをカスタムメトリクスで送る方法

2016.10.07

こんにちわ。ビーコンと言えばガイドビーコンしか連想できないガノタ市田です。
今回は、表題の通りcollectdで集めた色んなデータをcloudwatchに送る方法についてです。

Apacheのデータを送ってみる

今回は、試しにcollectdで収集したApacheの各種情報をCloudWatchに送ってみたいと思います。
尚、collectdのCloudwatchプラグインは前回のエントリの内容で設定済みとします。

対象はAmazon Linuxとし、Apacheはyumコマンドでインストールしたデフォルト設定を前提とします。

collectdのApacheプラグインの導入

collectdでApacheのリソース情報を収集するには専用のプラグインが必要になります。Amazon Linuxなどではyumコマンドで導入可能です。

yum -y install collectd-apache

Apacheの設定変更

collectdがApacheの情報を取得できるようにします。設定変更は/etc/httpd/httpd.confで行います。
httpd.confに下記の内容を追記して、localhostからcollectdがアクセスできるようにします。

追記場所は、922行目あたりのコメントアウトになっている#<Location /server-status>ディレクティブの下辺りに追記します。

ExtendedStatus on
<Location /mod_status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from localhost
</Location>

追記したらapacheを再起動します

service httpd restart

localhostからステータスページにアクセスできることを確認します。

curl http://localhost/mod_status?auto

Total Accesses: 2
Total kBytes: 0
Uptime: 338
ReqPerSec: .00591716
BytesPerSec: 0
BytesPerReq: 0
BusyWorkers: 1
IdleWorkers: 8
Scoreboard: _______W_..(略)

このApacheの設定は下記のcollectdのドキュメントに則った記載になります。
ただし、デフォルトのままではAnywhereでステータスページにアクセスできるので、localhostからのアクセスのみに制限しています。

collectd.conf(5) – collectd – The system statistics collection daemon _

collectdの設定変更

collectdの設定ファイルは/etc/collectd.confです。Apacheの情報を収集できるように設定を修正します。
まずは、Apacheのプラグインを有効にします。コメントアウトになっている下記のコメントを外します。

LoadPlugin apache

次に情報を取得するステータスページの設定を修正します。ベーシック認証などは設定していないので、下記の通りURLだけ修正します。

  • 変更前
#<Plugin apache>
#  <Instance "local">
#    URL "http://localhost/status?auto"
#    User "www-user"
#    Password "secret"
#    CACert "/etc/ssl/ca.crt"
#  </Instance>
#</Plugin>
  • 変更後
<Plugin apache>
  <Instance "local">
    URL "http://localhost/mod_status?auto"
#    User "www-user"
#    Password "secret"
#    CACert "/etc/ssl/ca.crt"
  </Instance>
</Plugin>

変更したらcollectdを再起動します。

service collectd restart

collectdの動作確認

この状態で、Apacheの情報がCloudWatchへのデータ送信対象に入っているか確認します。

cat /opt/collectd-plugins/cloudwatch/config/blocked_metrics

下記のように、apache-local-apacheという項目が追記されていたらOKです。

# 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-user
cpu-0-cpu-nice
cpu-0-cpu-system
cpu-0-cpu-idle
cpu-0-cpu-wait
cpu-0-cpu-interrupt
cpu-0-cpu-softirq
cpu-0-cpu-steal
interface-lo-if_octets-
interface-lo-if_packets-
interface-lo-if_errors-
interface-eth0-if_octets-
interface-eth0-if_packets-
interface-eth0-if_errors-
load--load-
memory--memory-used
memory--memory-buffered
memory--memory-cached
memory--memory-free
apache-local-apache_requests-
apache-local-apache_bytes-
apache-local-apache_connections-
apache-local-apache_idle_workers-
apache-local-apache_scoreboard-open
apache-local-apache_scoreboard-waiting
apache-local-apache_scoreboard-starting
apache-local-apache_scoreboard-reading
apache-local-apache_scoreboard-sending
apache-local-apache_scoreboard-keepalive
apache-local-apache_scoreboard-dnslookup
apache-local-apache_scoreboard-closing
apache-local-apache_scoreboard-logging
apache-local-apache_scoreboard-finishing
apache-local-apache_scoreboard-idle_cleanup

CloudWatchに送信する

それでは、ホワイトリストにApache情報を登録して、CloudWatchにデータを送ってみます。

vi /opt/collectd-plugins/cloudwatch/config/whitelist.conf

Apacheに関する全ての情報を送りたいと思うので、下記のように記載します。

apache-local-apache_.*

collectdを再起動します。

service collectd restart

念のため、ブロックファイルを見てみます。

cat /opt/collectd-plugins/cloudwatch/config/blocked_metrics

下記のようにApache関連の項目がなくなっていればOKです。

# 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-user
cpu-0-cpu-nice
cpu-0-cpu-system
cpu-0-cpu-idle
cpu-0-cpu-wait
cpu-0-cpu-interrupt
cpu-0-cpu-softirq
cpu-0-cpu-steal
interface-lo-if_octets-
interface-lo-if_packets-
interface-lo-if_errors-
interface-eth0-if_octets-
interface-eth0-if_packets-
interface-eth0-if_errors-
load--load-
memory--memory-used
memory--memory-buffered
memory--memory-cached
memory--memory-free

CloudWatchの確認

最後にCloudWatch側で確認します。カスタムメトリクスを選択します。

custommetrics

この状態でグラフが出ていればOKです。

collectd-apache

最後に

collectdは今回のようなApache以外にも取得できる情報の種類が非常に多いので、色んなデータを簡単にカスタムメトリクスでCloudWacthに送ることができるようになりました。
また、collectdは以前からあるものなので、既存のナレッジがそのまま活かせるというのも大きなメリットだと思います。

是非ご活用ください。

以上になります。