Akata Works

東京エンジニア。主にRuby,Go,たまにAWSとiOS。ゲーム音楽が好きです。連絡はTwitterかakata.onen@gmail.comまで

collectdとstatsd-graphite-grafanaのDockerイメージで監視体制を作る

Lightsailがかなりお得になったので、何か作ろうかなと思っているんですが、どんなサーバを可動させようにも「まずは監視だな」ということでこんな記事を書いてみました。

サーバーはamazon-linux-2018.03.0を想定しています。

今回はメトリクスの収集はアプリケーション用にstatsdとシステム用にcollectdを使います。他はデータストアにgraphiteをグラフ化にgrafanaをといった構成です。
まとまっているDocker Imageがあって楽だったというのが一番の理由ですかね......(笑)

statsdも入れてますが、今回の記事にstatsdの使い方等は一切書いておりません。アプリケーションよりも先にシステムのメトリクスだと思うので。

Install and Setup

statsd-graphite-grafanaの環境は前述のDocker Imageがあるのでこれで構成してしまい、collectdのみパッケージをインストールします。collectdもDocker Imageがあるので使えばいいんですが、めんどくさいので今回はスルーしました。

git clone git@github.com:kamon-io/docker-grafana-graphite.git
cd docker-grafana-graphite
docker-compose up -d

collectdのインストールにはEPELリポジトリが必要なので同時に入れてしまいましょう。また、一部のプラグインはcollectdに同封されていないため、必要であれば適宜インストールしてください。diskすら入っていません。

sudo yum install -y epel-release collectd
# Add plugins
sudo yum install -y collectd-disk.x86_64

プラグインが入っていないと、/var/log/messagesに以下のようなログが流れます。

plugin_load: Could not find plugin "disk" in /usr/lib64/collectd

次に/etc/collectd.confを編集します。write_graphiteプラグインと、追加したプラグインの記述をコメントアウトして、後は好みで設定してください。
詳しいプラグインの設定方法は以下やGitHubに記述されています。

Table of Plugins - collectd Wiki

Docker Imageでaggregater用のstatsdがすでに起動しているので、モニターサーバーのシステムメトリックスはgraphiteに直接投げていますが、collectdのstatsdプラグイン使っても問題ないと思います。

サービスを起動して、/var/log/messagesを確認しましょう。うまく設定できていなければ、エラーが出たり、メトリクスが取れなかったりします。

sudo service collectd start

問題なければ、後はGrafanaでをグラフを作成すれば完成です。

f:id:akatakun:20181119233400p:plain

今回はモニターサーバの準備と、モニターサーバのシステムメトリックスにフォーカスしました。アプリケーションサーバを追加したら、同じようにstatsdやcollectdをインストールして、モニターサーバにデータを送信すればいいと思います。

少し走り書きしてしまったので、間違っている点や分からない点がありましたらコメント等いただけると幸いです。

参考