アラートが多すぎる——システム監視について
概要
本稿では監視システムとしてZabbixを前提とし用語を使っています。しかしどの監視システムでも適用できる話題を書くのでZabbixの利用有無は関係ありません。
最初に論旨を明確にしておきます。
- すべての異常を検知しようとするよりも、監視対象に応じて継続的に改善を続けましょう
- マシンのメトリクスよりも、そのマシンが提供するサービスのふるまいを監視しましょう
無駄のない監視の美学
OSの基本的なメトリクスだけでも監視可能な項目は膨大です。ただしあなたのシステムで監視すべきメトリクスはごくわずかです。その監視すべき項目の中でアラートを発報しなければならないものはさらに限られるでしょう。Mike Julianが『入門 監視』(松浦隼人 訳)の中で「MySQLが継続的にCPU全部を使っていたとしても、レスポンスタイムが許容範囲に収まっていれば何も問題ありません」(p13)と述べたように、ひとつひとつのメトリクスに基準——メモリ使用量が90%を超えたら・CPU使用率が80%以上なら・……など——を設けるよりも全体的なパフォーマンスやユーザからみたふるまいを監視すべきです。
このように考えれば、システム監視ソフトウェアを導入するときは「監視したいシステムではなにが動いていればいいのか?」「動いているとはどういう状態か?」を自問しなければなりません。なにをどう監視すればいいのかさえ分かれば、監視項目のひとつひとつに理由付けができ無駄のないシステム監視を実現できるでしょう。
ふるまいを監視する
ここにひとつWebサーバを動かし静的なHTMLページを公開しているマシンがあるとします。このマシンを監視したいとします。ここまでは順調ですが次は立ち止まって考えなければいけません。「なにを監視すればいいだろう?」
監視システムで収集できるメトリクスは無尽蔵でどれを監視するのも魅力的にみえます。基本的なメトリクスでいえばCPU・メモリ・ディスク・ネットワーク速度あたりがあり、ログも監視できます。閾値を考えてトリガーの発報条件とアラート発生後の後処理まで考えればもう手一杯になります。
考え始めるときりがないですが冷静になってみましょう。動かしているのはWebサーバですから、ブラウザでアクセスしてくる世界中のユーザから見て一番大事な問題は「Webページを読めるか?」「許容できる秒数以内にページが描画されるか?」あたりでしょう。Webサーバとの通信をTLSで暗号化しているなら、なりすましを考慮して「このサーバ証明書は有効で正しいものなのか?」と気にするユーザもいるかもしれません。
要するに、サーバ管理者が気にすることとユーザが気にすることは必ずしも一致しないのです。そしてユーザからみたふるまいさえ良ければ、ロードアベレージが6を越えようがメモリ使用量が限界まで近づいていようが問題ではないのです。逆に、メトリクスひとつひとつに異常はなくてもページ描画に通常の20倍も時間がかかっているなら異常事態です。
個々のメトリクスだけを観察していま何が問題になっているかを考察するのは難しいですが、なにが問題になっているのかさえ分かれば個々のメトリクスをヒントに原因究明ができます。したがって監視の優先順位は(1)サービスのふるまい、(2)基本的なメトリクスになります。ですがOSのメトリクスを取るほうがはるかに簡単で監視した気分になれるのでこの順位付けは逆転しがちです。
「監視したつもり」標準テンプレートの害
Zabbixの監視テンプレートは豊富に揃えられており、Zabbixが提供する標準テンプレートさえあれば監視はなにも問題がないようにみえます。しかしまずサービスのふるまいを監視するのが先決だという見方をすれば、基本的なメトリクスを収集する以上の役割を標準テンプレートは担えないと気づくでしょう。
標準テンプレートにはトリガーも用意されていますが、提供するサービスやデプロイするマシンの性能などはチームによってバラバラなはずなのにトリガー基準をひとつに決定できるわけがありません。またCPU利用率やメモリ使用量が高いからといって必ずしもサービスのふるまいに影響するわけでもありません。このことから、あらかじめ「親切」に設定されているトリガー基準は不必要です。必要になるとしても監視対象に応じて変更する必要があります。
このように、標準テンプレートではふるまい監視ができず、OSのメトリクスを収集するにせよ不必要なアラートが発生する可能性が高いです。無駄なアラートはアラート疲れあるいは監視の狼少年化を引き起こし、本当に意味のあるアラートを見逃すきっかけになります。現場に合ったテンプレートの複製元として標準テンプレートを活用するほうが得策です。
参考文献
- Mike Julian, 松浦隼人 訳, 『入門 監視』, オライリー・ジャパン, 2019