今回は、あるWebシステムの運用で、筆者がR言語による統計解析を利用した例をご紹介します。

 今日、特に大規模サイトになればなるほど問題発生をリアルタイムに検知する仕組みが標準となりつつあります。ハードウェア/ソフトウェアを問わずログ監視やエラー通知の仕組みにより問題を検知する仕組みを実装し、併せて即時対応が可能な運用体制を敷くことも一般的となっています。

 しかし、これら仕組み/体制でも検知が難しい事象が存在します。正常とは言えないが明示的なエラーに至っていない状態、潜在的な危険性を示す兆候などであり、エラー出力など、明確に問題として顕在化する前に補足するのは困難です。

 これらをシステムデータ解析から検知できれば、よりプロアクティブなシステム運用を行うことが可能となります。

 今回と次回で理解しやすいサンプルを2点ご紹介いたします。今回はロードバランス状況監視での活用例です。

背景

 今日、サーバーロードバランスはWebシステムにおいては当たり前の技術となりました。サービスごと(VIPごと)の設計思想によりロードバランサメトリック(経路制御の基準)を選択することになります。基本的な思想としては水平方向に拡張したWebサーバーに対して、流入トランザクションを均等に割り当てることが目的と言えるでしょう。

課題

 割当先のWebサーバーが停止した場合、ヘルスチェックによりこれを検知し、運用者にエラー通知することが可能です。現象が障害か、計画停止なのかは、運用者にて判断ができます。

 しかし、何らかの理由により均等分散されているはずのトランザクション割り当てに不均衡が生じた場合、これは異常とまでは言えず、明示的なエラーとして判断できません。計画停止などによる一時的な不均衡ではなく、予期しない時間帯にこのような現象が発生するようであれば、システムのリソース状況、設定パラメータなどを再確認し、場合によっては調整を行う必要があるかもしれません。事故予防の観点からもそのような取り組みが望ましいといえます。

 そこで、これを日々運用するには、トランザクション受入数をサーバー単位にグラフ化して、運用者が定期的に確認することになります。しかしこれだけでは、異常現象を見逃す人為的なミスが発生しやすくなります。分散対象(サーバー)が多数になるほど確認に時間を要するうえ、確認対象のグラフは線が重なり合って見づらいものです。