12
8

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.

富士通クラウドテクノロジーズAdvent Calendar 2017

Day 20

MackerelでゆるいDocker監視

Last updated at Posted at 2017-12-20

はじめに

こんにちは.@blue271828 です.

昨日12月19日は @FukMo10 さんの エンジニアが学生向け技術インターンを二年連続で企画から運営までやったのでまとめる でした.今日12月20日は,Mackerelを使ったDockerの監視について小ネタを紹介したいと思います.

Dockerとは

Dockerを知らない方に簡単に説明すると,DockerとはDocker, Inc.が提供している軽量な仮想環境みたいなもので,この仮想環境をコンテナと呼びます.厳密にはVM(仮想マシン)とは違うんですが,実行環境をそのまま Dockerイメージとして保存できるので,アプリを手軽に手元で動作確認したり,デプロイしたり,何かと便利に利用できます.

image.png

Mackerelとは

Mackerelとは,株式会社はてなが提供しているウェブベースのサーバ管理サービスです.監視したいサーバーにMackerelエージェントをインストールすることで,サーバーの状況を可視化したり,監視をしたりできます.ウェブベースのサービスなので構築いらずで,とても簡単に運用が開始できます.ちなみにMackerelの名前の由来はサーバー→鯖→Mackerelらしいです.

mackerel.png

Dockerの監視

そんな便利なDockerとMackerelですが,なんと公式に Mackerel エージェント込みのDockerイメージ が公開されており,ホスト側へのインストールいらずで使い始めることができます.Docker コンテナのメトリクスを取得することができる公式の mackerel-plugin-docker も含まれており,設定ファイルに必要な記入を行えば簡単にメトリクス取得が開始されます.

ただ,こちらDockerコンテナ内のプロセス監視の機能が提供されていません.公式イメージには mackerel-check-plugins も含まれておりプロセス監視自体は行えるのですが,Dockerの仕様上Mackerelコンテナから別コンテナ内のプロセスを直接参照することは基本的にはできません.ちょっと困った状況ですが,少し工夫をすればコンテナ内のプロセス監視もできるようになります.ここでは,その方法を紹介したいと思います.

方法1:コンテナ内のプロセスをDockerコマンドで監視する

実は公式イメージでは,Dockerコンテナのメトリクスを取得する際に Docker APIを利用しており,コンテナ内のプロセスも同様の手続きで mackerel-check-plugins を使って確認することができます.

solution2.png

例えば hoge_cntr コンテナの hoge_app プロセスを確認する場合,以下のような設定を行うと docker exec コマンドを使って確認することが可能です.

[plugin.checks.hoge_app]
command = 'docker exec hoge_cntr ps | grep hoge_app || exit 2'

方法2:HealthCheckオプションを使って監視する

もう一つの方法ですが,DockerのHealthCheckオプションを使う方法があります.Docker APIを経由して取得するのは同様ですが,HealthCheckではコンテナ単位で healthy かどうか確認できるため,コンテナ内に複数プロセスを走らせている場合にまとめて確認することが可能です.注意点としては,そのコンテナが healthy かどうかの仕様はコンテナに依存するため,コンテナにHealthCheckオプションの設定を適用する必要があります.

solution3.png

以下が設定例になります.hoge_app の記述が必要ないため,コンテナ単位での管理ができるようになります.

[plugin.checks.hoge_cntr]
command = 'docker inspect --format "{{json .State.Health.Status}}" hoge_cntr | grep healthy || exit 2'

おわりに

過去に自分が同様の状況になったとき,少し困った経験があったため紹介してみました.ちょっとした工夫って見つからないときは,なかなか見つからなかったりしますよね.

さて明日12月21日は @tily さんの「[HR-Tech] 社員のプロフィールと会社の歴史を共有するためのマイクロサービス Profistory」です.お楽しみに.

12
8
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
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?