12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MackerelでDockerコンテナの起動状態を監視する

Posted at

Mackerel公式のDockerのプラグイン(mackerel-plugin-docker)ではコンテナが起動しているかどうかの情報は取得できません。
そこで、自分でプラグインを作ってみました。
https://github.com/ABCanG/mackerel-plugin-docker-state

ここではmackerel-agentイメージを使った方法を紹介します。

準備

設定用ディレクトリを用意し、mackerel-plugin-docker-stateを配置します。

$ mkdir -p /etc/mackerel-agent/conf.d
$ cd /etc/mackerel-agent/conf.d
$ curl https://raw.githubusercontent.com/ABCanG/mackerel-plugin-docker-state/master/mackerel-plugin-docker-state -o /etc/mackerel-agent/conf.d/mackerel-plugin-docker-state
$ chmod +x /etc/mackerel-agent/conf.d/mackerel-plugin-docker-state

さらに以下のような設定ファイルを用意します。

/etc/mackerel-agent/conf.d/docker-state.conf
[plugin.metrics.docker-state]
command = "/etc/mackerel-agent/conf.d/mackerel-plugin-docker-state"

mackerel-plugin-docker-statedocker-state.confがあればOKです

$ ls /etc/mackerel-agent/conf.d
mackerel-plugin-docker-state  docker-state.conf

起動

Dockerでmackerel-agentを起動します。
/etc/mackerel-agent/conf.dにディレクトリがマウントされるようにします。
また、includeを指定して設定ファイルが読み込まれるようにします。

docker run -h `hostname` \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/mackerel-agent/:/var/lib/mackerel-agent/ \
  -e 'apikey=<APIKEY>' \
  -e 'enable_docker_plugin=true' \
  -v /etc/mackerel-agent/conf.d:/etc/mackerel-agent/conf.d:ro \
  -e 'include=/etc/mackerel-agent/conf.d/*.conf' \
  --name mackerel-agent \
  -d \
  mackerel/mackerel-agent

すると、Mackerelの画面にDocker Running Stateと書かれたグラフが追加されていると思います。
グラフの表示方法を変えると下の画像ように表示されるようになります。

スクリーンショット 2016-08-21 23.40.46.png

コンテナが起動していない時は0に、している時は1になるので、コンテナをモニターすることでコンテナが終了したら通知することができます。

mackerel-plugin-docker-stateの仕組み

mackerel-plugin-docker-stateはdockerコマンドが使える環境でないと利用できません。
シェルスクリプトとして動作し、docker psコマンドを実行した結果を整形しています。
mackerel-agentイメージではdockerコマンドが利用できるため、mackerel-plugin-docker-stateを使うことができます。

おわりに

Mackerelのプラグインを結構簡単に作ることができて驚きました。
Mackerel公式のDockerのプラグインではコンテナの起動状態を取得することができませんでしたが、自分で作ったプラグインを使うことで、コンテナの起動状態を監視できるようになりました。

datadogのようにMackerelでもコンテナの起動状態を取得できる機能がほしいなと思ってた人に使ってもらえるとうれしいです。

参考

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?