インバリアント分析はシステムの「いつもと違う動き」を発見するための技術だ。平常時に成り立つ「不変関係(Invariant)」からモデルを作り、リアルタイムデータと比較。“関係式の崩れ”から障害を検知する。この技術をシステム性能の分析に適用することで、「しきい値」監視ではつかめないサイレント障害も検知できる。
NECの北米研究所で研究開発された「インバリアント分析技術」では、サイレント障害も把握できる。サイレント障害とは、エラーメッセージとして表れないトラブルの総称であり、性能劣化が代表例だ。インバリアント分析の仕組みを見よう。
インバリアント分析では、平常時に成り立つ時系列データの「不変関係(Invariant)」に着目する。複数のデータを掛け合わせ、そこから平常時に成り立つ不変関係を自動的に見つけ出し、関係式としてモデル化しておく。モデルから導き出した予測値と実測値を比較し、「いつもと違う動き」を発見する(図1)。
インバリアント分析技術を性能監視に適用したのがNECのシステム性能分析ソフト「WebSAM Invariant Analyzer」だ。その分析の流れは以下のようになる。
まず、システムが正常に動いているときの性能データをInvariant Analyzerにインポートする。Invariant Analyzerは、CPUやメモリーの使用率、ディスク使用率やネットワーク負荷率といった性能データを総当たりで分析。性能データの関係式を導き出し、関係が安定しているものをモデル化する。例えば、「Webサーバー1号機のネットワーク負荷率と、APサーバー3号機のCPU使用率の間には、Y=f1(x)で表せる関係がある」といった具合だ。
Invariant Analyzerは、リアルタイムの性能データを取得し、正常時のモデルと比較。“関係式の崩れ”から障害を検知する。崩れ方を過去のパターンと比べて、原因を特定する機能も備える。
「正常時のモデルは一回作って終わりではなく、システムの稼働状況から学習した内容を踏まえて更新することが可能だ」(NEC 第二ITソフトウェア事業部の矢吹謙太郎マネージャー)。また、モデルの関係式を活用し、CPUやメモリーなどリソースの消費量を予測することもできる。