前回、Docker Logging Driverを使ってコンテナ内のログをSplunkに入れてみました。
http://qiita.com/kikeyama/items/515d65906537239e04d2
今回はDockerコンテナの稼働状況をSplunkで監視してみます。
はじめに
今回利用するのはDockerを監視するSplunk Appです。
GitHubにリポジトリ発見。これを git
かダウンロードしよう。
https://github.com/splunk/docker-itmonitoring
使い方
非常に簡単です。
Splunk側でデータ受信を設定して、Appを入れて、Dockerが入っているサーバーでForwarderコンテナを起動するだけ。
Step 1. Splunkインスタンスの準備
1) データ受信設定
これで、ポー9997でデータを受信する準備ができました。
ちゃんと9997を開けておきましょう。
2) Splunk Appコピー
Splunkインスタンスの $SPLUNK_HOME/etc/apps/
にGitHubから落としてきた以下のフォルダをコピー
app-docker
ta-dockerlogs_fileinput
ta-dockerstats
ta-ucplogs-sysloginput
3) Splunk再起動
$SPLUNK_HOME/bin/splunk restart
Step 2. Forwarderの準備
実際にDockerコンテナが動いているサーバーに Splunk Universal Forwarder のイメージを入れてコンテナ起動
https://hub.docker.com/r/splunk/universalforwarder/
docker pull splunk/universalforwarder:latest
docker run --name splunkuniversalforwarder \
--env SPLUNK_START_ARGS=--accept-license \
--env SPLUNK_FORWARD_SERVER=splunk_ip:9997 \
--env SPLUNK_USER=root \
--volume /var/lib/docker/containers:/host/containers:ro \
--volume /var/log:/docker/log:ro \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--volume volume_splunkuf_etc:/opt/splunk/etc \
--volume volume_splunkuf_var:/opt/splunk/var \
-d splunk/universalforwarder:6.5.3-monitor
SPLUNK_FORWARD_SERVER
で指定する splunk_ip
にStep 1で使ったSplunkインスタンスのIPアドレスもしくはホスト名、FQDNを指定しましょう。
Forwarderってナニ?
Splunkにログやデータを転送するエージェントのことです。
Splunkにログを送るときはForwarderを各サーバー、もしくはSyslogサーバーにインストールして転送設定します。
今回の場合、コンテナ起動時に上記コマンドを使用すると勝手に転送設定ができます。
Splunkにログインして確認してみる
ログイン後トップ画面の左側に Docker App発見。クリックしてみる。
いい感じにコンテナの稼働状況やCPU使用率を確認できますね。
システムがマイクロサービス化されて分散配置されたコンテナもこれで容易に管理できそうです。
開発したアプリケーションのイメージを展開して起動した直後に問題があれば、これで早期発見できるかも。
最後に
SplunkにはSplunkbaseというApp公開用のプラットフォームがあるのですが、そこに入っていない(2017年7月24日現在)ところをみると、まだ開発段階なのかもです。
ご利用は自己責任で。まずは検証環境で使ってみるといいかもです。