Posted at

SplunkでDocker運用監視

More than 1 year has passed since last update.

前回、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) データ受信設定

[設定] > [転送と受信]

Screen Shot 2017-07-24 3.53.17 PM.png

[受信の設定] をクリック

Screen Shot 2017-07-24 3.53.38 PM.png

[新規] をクリック

Screen Shot 2017-07-24 3.53.46 PM.png

ポート番号に 9997 を入力して保存

Screen Shot 2017-07-24 3.53.57 PM.png

これで、ポー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発見。クリックしてみる。

Screen Shot 2017-07-24 4.09.54 PM.png

おぉ

screencapture-52-36-48-112-8000-en-US-app-app-docker-docker_overview-1500880395775.png

いい感じにコンテナの稼働状況やCPU使用率を確認できますね。

システムがマイクロサービス化されて分散配置されたコンテナもこれで容易に管理できそうです。

開発したアプリケーションのイメージを展開して起動した直後に問題があれば、これで早期発見できるかも。


最後に

SplunkにはSplunkbaseというApp公開用のプラットフォームがあるのですが、そこに入っていない(2017年7月24日現在)ところをみると、まだ開発段階なのかもです。

ご利用は自己責任で。まずは検証環境で使ってみるといいかもです。