Docker VPS

Mackerelでサーバ内ホスト・Dockerコンテナを監視する

投稿日:

サーバ監視ソフトを入れたいなと考えていたところ、ひょんなことからMackerelというサーバ監視サービスを発見したため、導入してみました。

環境は以下です。

  • OS:Ubuntu16.04

要件と仕様

今回の要件は以下になります。

  • サーバのCPU使用率やメモリ使用量等を監視できる
  • メール等の手段で、アラートを出すことができる
  • Dockerコンテナ内部の状態を監視することができる
  • サーバ監視サービスを監視する必要がないこと
  • 無料で使用できるサービスが有ること

仕様は以下になります

  • Mackerelを使用してCPUを使用率・メモリを監視する
  • Mackerelのアラート機能を使用して自身に通知する
  • Mackerelの各種プラグインを使用してDockerコンテナの状態を監視する
  • (Mackerelはウェブサービスであるため、Mackerel自体を監視する必要はない)
  • 無料プランがある

今回使用するMackerelは、株式会社はてなが運用するサーバ管理サービスです。監視対象のサーバにmackerel-agentをインストールすることで、サーバの状態がMackerelのページより閲覧可能になります。

mackerel-agentはOSSであり、Githubに公開されています。また、各種プラグインが充実しており、こちらもGithubに公開されております。

Mackerel以外のその他のサーバ監視サービスとしては、実績のあるものとしてZabbix、NewRelicがあります。
が、どうやら最近の主流はMackerelのようで、日本で動作している有名なWebサービスは徐々にMackerelに移行しているor移行したがっているようです(下記参考ページより)。

Mackerel導入

ホスト環境監視

単純なホスト環境監視用途の導入はとても簡単です。Mackerelの公式ページにしたがって導入してください(笑)

簡単な手順としては以下です。

  1. Mackerelのユーザを登録
  2. mackerel-agentをインストール
  3. サービス・ロールを設定
  4. 完了!
  5. (適宜、グラフボードのカスタマイズやアラートの設定を追加)

ここまでものの15分で完了します。
以下のようなグラフでリソースを監視することができます。

Dockerゲスト環境監視

Dockerゲスト環境の監視には、各種プラグインをインストールする必要があります。

Ubuntuを使用している場合は、以下のようにapt-getを利用してプラグインをインストールできます。

apt-get install mackerel-agent-plugins

その後、/etc/mackerel-agent/mackerel-agent.conf を以下のように編集します。

[plugin.metrics.docker]
command = "mackerel-plugin-docker -name-format name"

-name-formatオプションは、コンテナごとのメトリック名を指定するものです。今回は、nameを指定することで、コンテナ名をメトリック名に用いています。

その後、(systemdを使用している場合)以下のコマンドでmackerel-agentを再起動します。

sudo systemctl restart mackerel-agent.service

数分後、Mackerelのウェブページから、各Dockerコンテナの各種リソースが確認できます。リソースはDockerのAPIから取得しています。
確認できる項目は以下になっています。

  • custom.docker.
    • blkio.io_service_bytes:読み書きしたバイト数
    • blkio.io_serviced: I/O 操作の実行回数
    • cpuacct_percentage:user,sysそれぞれのCPU使用率
    • memory:メモリ使用量

以下の画像では、本サイトのバックエンドのwordpressコンテナのCPU使用率を表示したグラフです。

参考:

終わりに

Mackerelの導入により、topやvmstat、iostatで見られるようなリソースの監視が簡単に行え、かつグラフィカルに表示できる様になりました。また、プラグインを入れるだけでDockerコンテナの監視環境を作成できました。
ここまで低コスト・少工数でサーバ監視が行えるのは驚きでした。

-Docker, VPS
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

VPS(scaleway)へのlogwatchの導入+gmailへ送信

VPS(scaleway)へのlogwatchの導入に詰まったのでメモ 目次1 logwatchの概要2 動作環境3 導入手順3.1 logwatch3.1.1 インストール3.1.2 初期設定3.2 …

Docker上でWordPressとnginx-proxyを連携(SSL対応)

今回は、Docker上でWordpressサーバを構築し、SSLに対応したnginx-proxyとの連携を行います。 追記(2017/10/08):作成したdocker-compose.ymlをGit …

Dockerを使用した簡単なC++実行環境の構築

今回は、C++の機能を調査するための簡単なテスト環境を、Dockerを用いて構築する手順を解説します。 目次1 要件2 仕様3 実装3.1 元になるイメージ3.2 Dockerfileの作成3.3 実 …

ハニーポットcowrieをDockerから起動する

設定等でハマったのでメモとして残します。 [2018/5/2 追記] 下記に取り上げたcowrie公式dockerイメージの公開が停止しています。 代わりに、docker上でKippoを用いて低対話型 …

systemdからdockerコンテナを起動+timerで定期実行

今回はdockerコンテナをsystemdから起動し、かつtimerを使用して定期実行する方法を紹介します。 目次1 背景2 要求と仕様3 systemdについて4 設計・実装4.1 テストアプリとs …