はじめに
監視システムとして有名なところとしては,Prometheusやzabbixなどがある.
それらの構築方法なんかはあったりするし,こういう設定をすれば監視を追加できるよみたいな手引書なんかもある.ただ,実際のインフラ・システム運用において使っていくと意外とどこを見ればよいのかというのは悩みどころ.今回はそんな監視設計についての導入編というところで基本的なところをお話をします.
考え方から書いていくので,回りくどいと思います.飛ばせるところは飛ばしてください.
そもそも監視の目的ってなんだ?
監視する目的とは何だろうか
- アプリケーションの異常をみつける
- インフラの異常を見つける
上記が恐らく想定される回答であろう.
だが,ここで立ち止まって考えてみてほしい.本当は何のために監視を入れようとしている?
監視の目的を考え,目標を決めておかないと,どうなるか.答えは,際限なくいれときゃいいだろうという監視が乱立したり,必要な監視ポイントが抜けるのである.
監視の目的,ついでに目標
いうまでもなく,提供したいものが提供できているか,定めさ仕様を満たしているかといった何らかの達成するべきものが満たせているかというのがポイントとなる.
二つほど例を出そう.
- 例1 お客様に提供しているサービスが提供できているか
- 例2 自社内で提供しているシステムが機能しているか
例1をWebサービスに例えてもう少し掘り下げる.
お客様が活用するECサイトの場合,お客様がアクセスしてきたタイミングで必要な応答ができることが重要になる.例えば,商品検索で長々と検索時間がかかったり,決済ページに飛ぶのにエラーが出まくったとする.そんなサイトだとお客様は離れてしまう.(そこでしか手に入らないなら別だろうが…)
それを考えると,この例においての監視の目的は
- ECサイトの運営において,(お客様に許容していただける範囲内での)Webサービスレベルを維持する
ことと言うのが一例としてあげられる.
そしてそれを達成するための目標として
- システム
- Web
- 応答速度
- エラー頻度,内容
- DB
- 応答速度
- ・・・
- ・・・
- Web
- インフラ
- ネットワーク遅延
- CPU,メモリ,
- ・・・
といった感じで決まっていく.
ここがあいまいなまま適当に進めると,先に述べたように乱立したり,漏れが出たりする.
目的,目標の導出の仕方
まず,つまずきやすい厄介な目的の導出の仕方について.
目的導出
目的を決める際に,個人的に有効だなと思っているのは,きっかけに対して,***そもそもなぜやる必要がある?***というのを必要な回数だけ行うこと.
例えば,「Web監視で抜けがあったせいで気づかず,お客様からのクレームにより対応することになった」というものがあったとする.この時,漏れだけをカバーする監視を適用すればよいだろうか?それだけで解決することもあるかもしれないが,ここでは少し掘り下げてみよう.
- Web監視を追加する必要がある.それはなぜか.
- お客様がWebサービスを利用している際に不便があったため.
今回は1回でそれっぽいところに来た.
では,「お客様がWebサービスを利用している際に不便があったため」を解決するために目的を下記のように反転させ定めよう.
- 反転前「お客様がWebサービスを利用している際に不便があったため」
- 反転後「お客様がWebサービスを利用している際に快適に利用できるようにするため」
それっぽい監視の目的ができた.今度はそれに付随する目標を導出する
目標導出
目標を導出する際は,目的を達成するにはどうすればよいか考えていこう.この時,何が達成されていればOKであるかを考える.
考える際の切り口としてはすでに記述したように,システム,インフラに分けても良いし,自分なりの切り口を持って作っても良いと思う.
ここでは再掲しておく.
- システム
- Web
- 応答速度
- エラー頻度,内容
- DB
- 応答速度
- ・・・
- ・・・
- Web
- インフラ
- ネットワーク遅延
- CPU,メモリ,
- ・・・
目的,目標を定めたうえで,やっと監視の設計に入るのである.目標が漏れが少なく・具体的になっていればいるほど監視を実際に作って,導入した際に期待通りに機能してくれる.
なのでここの考える作業において手を抜かずやることをおススメする.
おわりに
本記事は,監視設計をせざるおえないけど,何からすればよいのか,何をすればよいのかで迷っている人に最初に考えてほしい監視の目的や目標の必要性やその導出方法についての例を示しました.
困っている人の一助になれば幸いです