最近どうっすか?

コンピュータをメインに技術系の話題について書いていけたらいいなぁ。

MRTGの話をしようかな

プログラマーでプログラムを作っていたけど、インフラの設計・構築・運用担当になってプログラマーには戻れなくなってしまいましたのでインフラの話をしようかと思います。

システムの監視ツールとして一番簡単なのは、パッケージをインストールしたら、すぐに使えるMRTGが楽ですよね。
まぁ、SNMPとかの基本的な知識は必要ですが…
いまさらMRTGって思っている人には面白くないかもしれません。

とりあえず、MRTGを動かしてデータを取りグラフが出来た。というところまではOKという前提で書いていこうと思います。

一番大事なのはデータを取り続けることができているか?(エラーになっていないか?)ということです。
当たり前ですけどね。

あまりにも、当たり前のことばかり書いていると読んでもらえない(そもそも読者なんていないけど)ので、現実的なことを書いていきます。

何かサンプルを定義しましょう。

何でも良いのですが、ルーターのネットワークトラフィックとします。
MRTGを動かしていると(通常は)5分間に流れたデータ量を取得してグラフを表示してくれます。
特に興味が無い人はグラフが出来ていることだけで「ふむふむ」(って分かってないのに)納得して終わりです。

ここで興味をもちたい(もってほしい)のは現在のデータ(数値)です。
この数値が「いくつなのか?」、そしてその数値は「どのような状態を表しているのか?」ということを考える必要があります。

でも、「よく分からないな」というのが本音です。

よく分からないときの方法は2つあります。

一つは「とりあえず状態や重要度を定義してみる」そして運用しながら度合いを調整する。
(これは監視を始めたばかりの場合に適していると思います)

とりあず定義してみる、と言いましたので定義します。
+---+--------+
|重要度|データの値(%)|
+---+--------+
| 1 | 0%~ 30%|
+---+--------+
| 2 |31%~ 60%|
+---+--------+
| 3 |61%~ 80%|
+---+--------+
| 4 |81%~100%|
+---+--------+
これは暫定的に定義しただけなので、運用しながら重要度を変更していけばよいと思います。
重要度の変更とは、その段階を減らしたり増やしたりすることと、段階に応じて対応する内容を決める、ということです。
システムの利用者から「遅い」とか「つながらない」などのインシデントのレポートが上がってきたときに、そのデータの重要度はどのレベルか?を記録してきます。
その記録を蓄積していくことで、「どのMRTGの監視項目」が「システムの動作(状態)にどのくらい関連がある」のかを分析することができるようになります。

そこまできたら、次は先手を打ちたいところです。
「システムの動作(状態)」に「大きく関連するMRTGの監視項目」が、重要なインシデントに発展してしまう手前のレベルに達したことを知ることができます。
その時点で先手の「詳細調査」(ネットワークのトラフィック解析やサーバーのパフォーマンス調査など)や「利用者への(集中的な使用を控えてもらう等)事前告知」(いわゆる運用でカバー)などが可能になります。

MRTGは簡単にインストールできて使いやすいツールですが、グラフを作って見るだけじゃなくてデータが読めると良いことがありますね。


と一つめの例で落ち着いてしまいましたが、二つめもありますので続けます。

二つめは「前の値と比較してみる」です。
(これはデータの取り始めからグラフが一周している状態に対して適しています)

一つめの例で重要度を定義しましたが、高レベルな重要度の値が検知されたら「必ず・即対応」ということをしていたら大変になります。
何故かというと、実際に運用していると一時的に高レベルの値が検知されることは、良くあることだったりするのです。
だから、「必ず・即対応」を真面目に実践していると、いわゆる「オオカミ少年」の童話のようになってしまい、本当に対応が必要な値が検知されたときに対応が遅れて重大事故に発展することがあります。
それを防ぐためには、今検知された「この値」は本当に対応が必要な状態なのか?を見極める必要があります。

そんなことできるの?と言われると100%できるとは言い切れません。
でも、目安はいくつかあります。それが二つめのテーマになっている「前の値との比較」です。
じゃぁ「前の値」って何?ということになりますよね。

  1. 今の値の直前の値
  2. 今の値の1時間前の値
  3. 今の値の前日の同じ時刻の値
  4. 今の値の同じ曜日の同じ時刻の値
  5. 今の値の前の月の同じ日の同じ時刻の値
  6. 今の値の前の月の第何週目の同じ曜日の同じ時刻の値
  7. 今の値の前の年の同じ月の同じ日の同じ時刻の値

そして、比較した過去の値が同じレベルの重要度を示していて、何らかの重大なインシデントが発生していた場合は、今回も重大なインシデントに発達する可能性が高いので、まさに「即対応」が必要になります。
逆に言うと、同じレベルの重要度が検知されたにもかかわらず、重大なインシデントが発生していなかった場合は、「経過観察」もしくは「関連部署への注意喚起」程度にとどめて「大騒ぎ」の必要は無いとも言えます。

しかし、比較した過去の値と同じレベルの重要度を示す例がなかった場合、原因を究明するための調査を内部で進める必要があります。必要に応じて関連部署への調査依頼も必要なので正確な時刻(何時何分何秒)MRTGの場合は5分間隔なので(何時何分何秒から300秒間)という表現になります。
ネットワークトラフィックの場合は、INとOUTがありますので「どこから入って」「どこに出た」という流れをグラフの波形を見ながら解析していきます。
原因となる対応するポートが1個の場合もありますし、複数のポートのトラフィックが集中して監視対象のトラフィックの値を増加させたという場合もあるでしょう。

とにかく重要度のレベルが高い値が検知されたときに、その値は「問題あり」なのか「問題なし」なのかを判定する基準の一つとしていくつかの過去の値との比較というのが役に立つと考えています。

今回はここまでにします。

今後は「レベルの変化」や「Daily, Weekly, Monthly, Yearlyのデータ比較」などについてまとめていけたらと思います。


ではでは。