[Mackerel] ディスク単位で異なる監視閾値を設定してみた

Mackerelでディスク単位で異なる監視閾値を設定してみました。監視対象のOS上のconfigファイルに追記する「公式チェックプラグイン集check-diskを利用した監視設定」と、管理コンソール上から行える「式による監視を使った監視設定」の2パターンでやってみました。
2021.12.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんばんは、東京オフィスのあしさんです。

Mackerelって、サービスやロール単位でまとめてリソースを管理したり、細かい設定をしなくてもプリセットの監視設定でなんとかなったり、便利で楽だと感じることが多いと思います。

それでもちょっと複雑な設定をしたいって時ありますよね?

たとえば、Windowsサーバの閾値をCドライブ:90%、Eドライブ:95%のようにディスク単位で異なる設定をしたかったり。

そんな要件を想定して、実際にやってみたのでご紹介します。

前提条件

事前にMackerelを利用した監視設定済みの環境が必要です。

以下の設定を行なってMackerel Organizationsの作成Mackerel Agentをインストールして監視済みのインスタンスを準備している前提で、手順を進めます。

実装方法

実装する方法は2パターンあります。

1つ目は、公式チェックプラグイン集に含まれるcheck-diskを使うパターンです。

OSのディストリビューションやMackerel Agentのバージョンにもよりますが、公式プラグインをインストールし、mackerel-agentのconfigファイルに設定項目を追加することで設定できます。

2つ目は、式による監視を使うパターンです。1

Makerel独自の関数を利用した式で計算したメトリックに対して監視設定が可能です。

ここまでの説明を聞いただけでは「????」となると思うので、今回はどちらのパターンでも実際に試してみましたのでご紹介します。

やってみた

1. 公式チェックプラグイン集check-diskを利用した監視設定

ディスク容量が90%の場合にWarning、95%の場合にCriticalのアラートを出すように設定します。

この方法は、各監視対象のサーバ上のconfigファイルを編集し、監視設定を追加します。

OSのディストリビューションによってチェックプラグインを別途インストールする必要があったり、設定ファイルのパスが違いますので注意しましょう。

Windows系のOSの場合

公式チェックプラグインはAgentに同梱されているため別途インストールの必要はありません。

C:\Program Files (x86)\Mackerel\mackerel-agent\mackere-agent.confファイルに以下を追記します。

[plugin.checks.disk]
command = ["check-disk", "--path", "C:", "--warning", "10%", "--critical", "5%"]

追加後にagentを再起動します

Restart-Service -Name mackerel-agent

Linux系のOSの場合

事前に公式チェックプラグインのインストールが必要なのでやっておきましょう。

/etc/mackerel-agent/mackerel-agent.confファイルに以下を追記します。

[plugin.checks.disk]
command = ["check-disk", "--path", "/", "--warning", "10%", "--critical", "5%"]

追加後にagentを再起動します

sudo systemctl restart mackerel-agent


設定後、Host画面からdisk監視メトリクスが追加されていることが確認できます。(Windows/Linux共通)

2. 式による監視を使った監視設定

こちらも同様に、ディスク容量が90%の場合にWarning、95%の場合にCriticalのアラートを出すように設定します。

こちらの設定は、Mackerel管理コンソールから行います。

サイドバーのMonitors画面から監視ルールを追加をクリック。

式による監視をクリック

監視対象の欄に以下を入力します。

divide(
  host(<MackerelホストID>, filesystem.<ファイルシステム名>.used), host(<MackerelホストID>, filesystem.<ファイルシステム名>.size)
) 
## 対象ディスク使用率を、(ホストのディスク使用量) ÷ (ディスクサイズ) で計算しています。


※ MackerelホストID、ファイルシステム名は以下の手順で確認できます。

サイドバーのHosts画面から、メトリクスを取得する対象のインスタンスをクリックします。

インスタンスの詳細画面から、MackerelホストID、ファイルシステム名を確認できます。


実際に入力してみると、

このようにグラフが自動的に表示されます。

閾値を入力します。(使用率90%の場合、0.9のように指定)

監視ルール名を記載します。

作成をクリックする。

監視ルール設定の一覧に表示されることを確認してください。

アラートが出た場合、このように表示されます。

結局どっちがいいの?

監視対象が基本的なシングル構成のインスタンスのみの場合は、式による監視を使った監視設定が良いと思います。

Mackerel管理コンソール上で作業が完結していて、サーバ内のconfigファイルに直接書き込む必要がないので、再設定や設定の追加が容易です。

ですが、この機能は注釈しているように現在正式リリース前の機能なため、その点を気にされる場合は検討する必要がありますね。


一方、監視対象に特殊な構成(Autoscallngを利用しているなど)のインスタンスが含まれる場合は、 公式チェックプラグイン集check-diskを利用した監視設定を選択する場合があります。

Mackerelのサービス・ロールの構成にもよりますが、Autoscallingを使用している場合は、スケールアウトの度にロールなど監視メトリクス設定を変更する必要があったり現実的ではない場合があります。

その場合は、configファイルに直接設定を書き込んでしまえば、スケールアウト時にも対応できますね。

次回予告

ディスク単位のメトリクスを設定した時に、サービスメトリクスなど別のメトリクスと重複して設定していると、想定通りアラートが上がらないことがあります。

以下のような状態です。

  • 監視メトリクスA:ディスク監視閾値を90%に設定
  • 監視メトリクスB:ディスク監視閾値を95%に設定

ディスク使用率が91%になった場合、Aではアラート発生しませんが、Bでアラートが発砲されてしまうので、監視メトリクスBは実質的に機能しないことになります。

よく考えれば当たり前の話なのですが、サービスやロールを使用して一律で監視メトリクスの設定をしている環境の場合は起きてしまいがちです。

次回のブログで、その対策について説明したいと思います。

以上、東京オフィスのあしさんでした。


  1. Mackerelのhelpサイトによると式による監視機能は、2021年12月時点で実験的機能となっていて、正式リリース前の機能のため今後変更がある可能性があります。