ユーザー企業は、ベンダーがシステム監視をしていると考えているが、実は本質的なシステム監視はしていない。コンピュータの死活監視をしていることでシステム監視をしていると考えている企業が大半なのである。正しくシステム監視をすればシステム障害を未然に防ぐことはできるだろうが、現状のシステム監視方法では未然防止は難しい。
現状のシステム監視方法の問題
現状のシステム監視方法は「死活監視」と「リソース監視」がある。死活監視は、その名の通りで、コンピュータが死んでいるのか、"活きて" いるのかを監視することが主目的で、具体的にはコンピュータの応答監視などを行う。死活監視により障害を検知した場合、自動復旧を行い、障害対応にかかる時間を短縮してダウンタイムを短くする。リソース監視は、CPU、メモリー、ディスクなどのリソース使用状況の監視である。
システム監視ソフトウェアの多くは、リソース監視を行うことで、システム負荷状況を把握することができる。現状のシステム監視の多くは、障害発生の有無を監視してはいるものの、結果的には発生後のリアクティブ(事後)の行動であり、障害が発生しそうだからといってプロアクティブ(事前)な行動に移すことができない。わずかな時間であってもダウンはするというのが現状のシステム監視の問題である。
泥棒が入ったお知らせでなく、入りそうなお知らせが必要
コマーシャルでよく見るホームセキュリティは、泥棒や不審者が自宅に近づけばアラートがあがり、警備員が駆けつけるなどの対策がとられる。事故や盗難の前に何かしらの対処がされるのが当たり前のサービスである。泥棒が入った後に知らせてくれても無駄だろう。
ITシステムの多くは、「泥棒が入った後にお知らせします」と同様で、システム障害が起きたらアラートがあがる。システム障害が起きそうなのでアラートをあげるというシステム監視をしている企業は、まずない。「障害発生時でも何分以内で保守要員が駆けつけます」や「障害発生を検知して自動復旧します」という宣伝をしているシステムインテグレータが多く、これらのサービスは良いサービスではあるが、障害発生後のサービスであることが残念なポイントである。
システム監視もホームセキュリティと同様に、泥棒が入りそう、システムがダウンしそうであるという予兆を検知して知らせてくれないと意味がないのだ。
現在のシステム監視ツールで行っていること
現在のシステム監視ツールでは死活監視、リソース監視が中心に行われており、特にリソース監視では、一定のしきい値を設定して、そのしきい値を越えるか否かだけを判断していることが多い。CPU稼働率のしきい値を70%と設定し70%を越えたらアラートを出すという方法であったり、httpリクエストの応答速度が500msec以上になったらアラートを出したりするといった方法である。
現行システム監視ツールでは、あらかじめ設定したしきい値を越えるか否かは監視できるが、異常値(外れ値)を検出することは難しい。なぜならば、しきい値はあらかじめ設定できる静的な値だからである。現行ツールであっても、季節単位、時間単位でしきい値を設定することはできる。Webアクセスの応答時間を時間帯に区分して設定できる。夜間であれば当たり前のアクセス数であっても、深夜や早朝のアクセス数としては異常であることを示すため、しきい値を変えればよい。
しかし、現行ツールでは動的にしきい値を変更することはほとんどできない。つまり、変化率をリアルタイムで把握して一定変化率を越えたらアラートをあげるということは非常に難しいのである。
最新のシステム監視ツールでできること
最新システム監視ツールでは、1分前のアクセス数に対して現在のアクセス数が±50%の変化率になると突発的な異常値(外れ値)であることを検出してアラートをあげることができる。
上図をご覧いただきたい。これはWebサイトの応答時間による異常値(外れ値)の検知方法である。
まずは、ベースラインを生成する。ベースラインとは過去のある瞬間、あるいは一定期間の過去に収集した情報を蓄積して自動的に生成するもので、通常値と思っていただければよい。例えば、このベースラインの±15%を正常値範囲として設定する。正常範囲を±どちらかに逸脱すれば、それは異常値(外れ値)として検出される。しかし、その値が異常であることが確かでサービスレベルが低下している状況ではあるが、まだ致命的な障害ではないということを意味している。なぜなら、絶対的なしきい値を越えていないからである。絶対的なしきい値を越えた時に初めてアラートを出すのである。
「絶対的なしきい値」は一般的に「サービスレベルしきい値(SLO:Service Level Objectiveしきい値)」と呼ぶ。SLOはすなわちビジネス目標であり、SLOしきい値はビジネス目標を担保する性能要件ということになる。正常範囲を逸脱した異常値を把握することが予兆検知となる。異常値が出現した事象をサイレント障害と呼ぶ。
サイレント障害
サイレント障害とは、システム上にあらかじめ設定した静的なしきい値(絶対的なしきい値)では検知できない障害を指す。一般的なシステム監視ツール上では検知されないが性能劣化などの症状が出る障害となる。サイレント障害という予兆を検知することで、ダウンしないシステムを構築できる。さらにサイレント障害が頻発すれば、致命的な障害を発生させる根源的原因が潜んでいることも予測できるはずだ。
正しくリアルタイムにシステム監視をすれば、サイレント障害を検知し、システム障害を未然に防ぐことは可能だ。経営者の皆さんは、IT責任者や運用保守ベンダーに、どのようにサイレント障害を検知しているのかを確かめておく必要があるだろう。
次回は、サイレント障害を検知した時に、どのような対策を講じればシステム障害が起こさずに済むのかを解説する。
執筆者紹介
寺澤 慎祐 (てらざわ しんすけ)
日本サイトラインシステムズ株式会社 シニアコンサルタント 兼 株式会社アイトップ 代表取締役
分析指向マーケティングとITマネジメントのスペシャリスト。サン・マイクロシステムズを退職後、企業向けにマーケティングマネジメントとITマネジメントのコンサルティングを行っている。光産業創成大学院大学においてB2Bマーケティングの講師も務める。