7,8年前のことです。
当時、お客様からサーバ管理をお願いされることが増えてきて、
サーバのヘルスチェックを一括監視できないかと頭を悩ませていました。

UIをWebシステムで作成し、監視対象のサーバには
こちらから叩けるプログラムを設置することで、
・CPUの状態
・ディスク残量
・メモリ使用量
等々を定期的に取得し、Web上で常に確認ができる。
問題があればメールで通知。
そんなシステムを作ろうと、設計を進めていたんだけど、
日々の業務に忙殺され、いつの間にか忘れ去られてしまったとう、
本当によくあるお話。
もう少しちゃんと時間を割いても良かったなと、今になってよく思います。

余談だけど、その開発が頓挫した監視システムの名称は「ビッグブラザー」
まずは名前をつけてから、という作戦でした。笑

今年になって、その悩みを解消してくれるサービスを教えてもらいました。


監視対象サーバに、agentをインストールすれば、
あとはブラウザやアプリから素敵な画面で、
サーバの状態が確認できます。


 
■ログイン
2週間の無料トライアルをやってみます。
まずは、アカウント登録。

1-1
今回は自分のGitHubアカウントでサインイン。


1-2
 名前や会社名を入力。

1-3
まずは、トライアルで。


1-4
プランを選ぶとこの画面に遷移します。

それでは、早速監視対象のサーバを登録します。



■ホスト登録
今回、mackerelの監視サービスの導入するのは、
弊社開発サーバ(cresson)です。
OSはCentOS。

Welcome画面より、「Register a new Host」をクリック。

 9a2ff07cbb444e0dcdb520ef30464e72
「Install with RPM package」をクリック。

mackerel-agentのインストール手順が表示されますので、
そのとおりにコマンドを叩いていけばOKです。

僕はyumでインストールしました。

0d7f2fb5f2745fcbf59b105b0078fdb3

無事、mackerel-agentが起動しました。
apikeyはユーザ固有のものですので、
この時点でmackerelへサーバの情報が同期されています。


2-2
New Hostsにサーバが追加されました!


■サーバの状態を確認

HOST NAMEをクリックしてください。
確認できる情報の多さに、驚くかもしれません。

3-1
現在のモニター・ロール・HW情報のサマリーが出てます。
(モニター・ロールに関しては後述)

3-3a
ロードアベレージ


3-3b
CPU使用率


3-3c
メモリー使用状況


3-3d
ディスクIOの状態


3-3e
ネットワークのトラフィック状況


3-3f
ディスク使用状況


mackerel-agentを起動するだけで、これだけの情報が定期的に送られてきます。



■サービス・ロール・モニター

サーバの状況が確認だけるだけでは、サーバ管理の観点からは不十分です。
mackerelには、監視対象のサーバに、
問題があった(問題が起こりそうな)場合に、管理者に知らせる機能があります。 

例えば、
「CPUの使用率が90%以上になったら、管理者に通知を行う」
とかですね。

そのために、まずサービスを作成します。 
サービスを作成することで、複数のホストをまとめて管理を行うことが出来ますが、
監視対象が数台の場合は、サービスは1つで大丈夫です。
ここでは、Commonというサービスを作成します。

4-1

Commonを作成後、「New Role」をクリック。
Commonサービスにロールを追加します。
ロールは、監視内容だと考えてOKです。

4-2

appというロールを追加します。
追加後、以下の画面に遷移します。

4-3
左側に作成したappロールがあります。
このappの「setting」をクリックしてください。


4-4
ここに監視内容を追加していきます。

「New Monitor」をクリック。

4-5
ここでは、
・CPUの監視を行う
・70%以上でWarning
・90%以上でCritical
・5分のアベレージで判定
というモニターを、appロールに追加する、ということをやってます。

 4-6
同様に、
・メモリー監視
・ディスク容量監視
を追加しました。

appロールに追加になっているのが確認できますね。
ちなみにconnectivityはどのロールにもデフォルトで追加されている死活監視です。

ここまでの作業で、 
Commonサービスに、appロールを追加し、
そのロール内にCPU・メモリー・ディスク容量の監視を作成しました。


次に、この作成したサービス・ロールをサーバに紐付けます。

5-1
「Hosts」から、対象サーバの「Assign roles」をクリック。
Common:appを選択。
これで、サーバとロールが紐付きました。



■通知

弊社では、チャットツールにslackを使ってます。
閾値を越えた場合の通知をslackに投げる設定を行います。

「Monitors」をクリック。

6-1

「Channels Settings」をクリック。

6-2

「Slack」をクリック。

6-3
・通知するチャンネル名
・webhook URL
を登録。

6-4

デフォルトのEmailでの通知の下に
 slackへの通知チャンネルが登録されました。

各チャンネルは、グループでまとめ、そのグループをロール配下の監視に紐付けるイメージです。
現状の設定だと、いずれかの監視内容が 閾値を越えた場合、
・メールで通知
・slackに通知
を行います。

6-5
slackへの通知設定に問題ないか、テストが出来ます。
「Test」をクリック。

6-6
 
問題ないようです!



今回は以上になります。
トライアルでは2週間限定ですが、有料版と同等の機能が使えるので、
他の機能も試してみたいと思ってます。


fqkoji