GUIベースでプログラミングレスに異常検知を実現するMachine Learning
Machine Learningの最たる特徴は「教師なし」の学習が可能であることだ。「何が異常か」という判断ポイントについては人間が決定・設定する必要があるものの、各数値に対して「正常」「異常」とタグ付けを行う必要がなく、LOFの検知のようなパラメーター設定も不要だ。Kibanaのプラグインとして提供され、GUIベースで容易に設定ができる。
「昼夜」や「1週間」というような時系列でのデータを扱って異常を検知するのが得意だ。過去のデータから予想して「予想モデル」を作り、その差異から異常を検知する。
このMachine Learningの機械学習を用いた異常検知について、大輪氏は「実にさまざまな使い道があり、ビジネスによってさまざまな活用法がある。ぜひ皆さんの会社でも使えないか考えてみてほしい」と語る。
例えばITオペレーションでのケース。多量のデータやログが流れ込む中で、「正常」か「異常」かを判断して見極めることは困難だ。しきい値の判断や、問題発生時の原因特定も難しいだろう。また、ITセキュリティにおいてもマルウェアが侵入したシステムや侵入路、影響範囲、そして潜在的脅威となる組織内部のなどを検知し、特定するのは至難の業だ。他にも「多種類の時系列データから異常を検知する」「機材のIoTによって工場が正常に稼働しているかどうかを検知する」など、「他と違うこと」を大量のデータから検知してその原因を突き止め、解決しなければいけないケースは多い。
それでは、具体的にどうやって課題を解決するのか。Elastic StackでMachine Learningを活用し、異常を検知する方法について、大輪氏は2種類のデモンストレーションを行った。
デモ1:[IT オペレーション]ECサイトのトランザクション数の異常検知
ECサイトへの1分ごとのトランザクション(購買件数)データをElasticsearchに記録して「タイムライン」機能で書き出すと、一定期間の増減を見ることができる。その中で、購入数が多い時間帯にブラウンアウト(瞬断)が発生したことを検知するにはどうすればいいのか。仮にしきい値を設けたとしても、夜間はしきい値より常に低いため、昼間のブラウンアウトを検知するのは難しくなる。また、昼夜のムービングアベレージとの比較では、ブラウンアウトは瞬時であるために平均値の差分が小さくなってしまう。そのため、時間の区切り方によっては埋没してしまう。
そこでMachine Learningを使用して、夜の購買が少なく、昼の購買が多いというデータのパターンを認識。そのパターンとどれだけ隔たりがあるか、というアプローチを行う。パターン認識の単位である「バケットスパン」を5分間に設定したところ、明確にブラウンアウトが起きた箇所に対してアラートが上がった。ここでのポイントはバケットスパンの長さの設定であり、小さすぎると差異が大きくなるため異常でないのにエラーとして検知されてしまい、逆に大きすぎるとムービングアベレージ同様に差異が埋もれてしまう。
今回のデモは「購買件数/分」について「少なすぎる」と異常検知するものだったが、他にも平均値や最大値・最低値の異常、地理情報の異常など、さまざまな項目を設定することができる。既にデータを持っている場合であれば、それをベースにして学習に活用できる上、もちろん導入後に学習したことも反映できる。さらに、学習する過程で検知した異常も報告される。
また、Machine Learningは複数のデータを重ねて異常を検知することもできる。例えば、トランザクションの異常検知とネットワークのエラーに関する異常検知を重ねることで、「ネットワーク機器のトラブルによって、ブラウンアウトが発生した」などの原因究明にも役立つ。
デモ2:[ITセキュリティ]Webシステムにおける行動の異常検知
続いて、ITセキュリティのデモンストレーションが行われた。アクセスログがElasticsearchに集約される環境下で、100回ログインに失敗し、2回成功したユーザーがいたとする。Machine Learningはそれを検知。そのユーザーのアクセスログに対して異常検知を行う。すると、そのユーザーは他のユーザーがアクセスしないイントラネットサーバーにアクセスしていたり、そこからクローラーで大量のドキュメントを取得していたり、外部にWebメールで配信したりしていることが分かる。
このように、Machine Learningはデータに潜む行動モデルを教師なしで学習し、異常を検知する。つまり、しきい値を特に設定することなく、他のユーザーの行動モデルと比べて「特定のポートへのアクセスが多い」「何度もログインに失敗している」などの差異を検知し、それを異常と判断して自動的にアラートを出すことができる。
現在、Machine Learningは、Prelertのベータ版として提供されている。2017年上半期のリリースを目標にElastic Stackとの強固なインテグレーションが進行中だ。大輪氏は「ベータ版は2週間利用することができる。ぜひともお手持ちのデータで試してみていただきたい」と述べ、セッションを締めくくった。
お問い合わせ
Elastic Japan