2017年5月4日 ニュース

Elastic StackにMachine Learningが登場

著者 Steve Dodson

本日、Elastic StackにMachine Learningが導入されましたのでお知らせします。この機能はX-Packを通じて提供されます。Elasticに加わって以来、めまぐるしい日々を送ってきましたが、猛烈な7か月を経て、Elastic StackへのPrelertの完全統合が遂に実現しました。早くみなさんの感想を聞きたくてうずうずしています。

注: この機能はバージョン5.4.0ではベータ版となっていますのでご了承ください。

機械学習

私たちの目標は、Elasticsearchデータから価値とインサイトを得られるようなツールをユーザーのみなさんに提供することです。Machine Learningは、Elasticsearchの検索・分析機能の延長としてごく自然な選択でした。たとえば、Elasticsearchでは、大量のデータからリアルタイムでユーザー「steve」のトランザクションを検索したり、aggretationやvisualizationを使って、売上げトップ10位の製品や時間的な変化を伴うトランザクションのトレンドを表示したりすることができます。これに Machine Learningが加わることで、「挙動が変わったサービスはあるか?」、「ホストで通常とは異なるプロセスが実行されていないか?」のような、よりディープな質問をすることが可能になります。このような質問には、機械学習技法を用いて自動的に構築できるホストまたはサービスの挙動モデルが必要になります。

ただし、「機械学習」は基本的に、データ駆動型の予測、意思決定、モデリングのための多様なメカニズムや方法を指すもので、ソフトウェア業界で誤解を招くような使われ方が非常に多く見られる言葉です。したがって、余分な情報を取り除いて、Elasticsearchが具体的に何をしようとしているのかを説明しておきたいと思います。

時系列異常検知

X-PackのMachine Learningでは、かつてない機械学習を利用した「時系列異常検知」機能を提供することに注力しています。

今後は段階的に機械学習機能を追加していく予定ですが、今のところは、ログファイルやアプリケーションメトリック、パフォーマンスメトリック、ネットワークフロー、財務/取引データなどの時系列データをElasticsearchに格納しているユーザーに付加価値を提供することに専念する方針です。

例1 - KPIに通常とは異なる変化が生じた場合に自動的にアラート

この技術の最もシンプルな使い方は、メトリックやイベントレートが通常とは異なる挙動を示した場合を特定することです。たとえば、サービスのレスポンス時間が異様に長くなった、ウェブサイトの予想訪問者数が通常のこの時刻とは大きく異なる、といった場合です。従来、この種の分析には、ルールやしきい値、単純な統計法が使用されてきました。残念ながら、このような単純な方法では、統計的仮定(ガウス分布など)が使用されているため(長期や定期の)トレンドには対応できず、兆候の変化に対しては無力であるため、現実のデータを分析することはほぼ不可能です。

したがって、Machine Learningへの第一歩は、どのように製品が何が正常であるかを学習し、単変量の時系列データで異常を特定できるようになるかをSingle Metricジョブを使って調べることです。発見した異常が有意なら、この分析をリアルタイムに継続して、異常が発生したときにアラートを行います。

これは一見、ごく単純なユースケースのように思われますが、製品のバックエンドには、任意の入力値に対しても堅牢性と正確性を保てるように、膨大で複雑な教師無し機械学習アルゴリズムと統計的モデリングが存在します。

Elasticsearch clusterでネイティブに実行するように実装は最適化されています。これで何百万ものイベントを数秒で分析できるようになります。

machine-learning-1.gif

例2 - 多数のメトリックを自動的に追跡

Machine Learningは、何十万ものメトリックやログファイルに対応できます。次のケースとして、複数の指標を一緒に分析します。1つのホストに関する複数の関連するメトリックや、データベースまたはアプリケーションのパフォーマンスメトリック、あるいは複数のホストの複数のログファイルを分析することができます。この場合、分析は分割して行い、その結果を1つの画面に集約(aggregate)してシステム全体の変則性を示すことができます。

たとえば、大きなアプリケーションの応答時間をサービスごとに分析すれば、個々のサービスの異常な挙動を特定すると同時に、システム全体の異常も把握できます。

machine-learning-2.gif

例3 - Advanced Jobs (高度なジョブ設定)

もっと高度なMachine Learningの利用法はたくさんあります。たとえば、母集団と比較して通常とは異なる挙動をしているユーザーや、異常なDNSトラフィック、ロンドン市街地での異常な渋滞を見つけたかったら、高度なジョブ設定を使用して、Elasticsearchに格納された任意の時系列データを柔軟に分析することができます。

Elastic Stackへの統合

Machine LearningはX-Packの機能として利用できます。つまり、X-Packをインストールすれば、Machine Learningを使ってElasticsearchに格納された時系列データをリアルタイムで分析できるようになります。Machine Learning ジョブは、indexやshardとほぼ同じ方法で、自動的に分散され、Elasticsearch cluster全体で管理・実行されます。つまり、Machine Learningはノード障害にも強いということです。パフォーマンスの観点から見ると、緻密な統合により、データをclusterから取り出す必要がありません。これにより、一部のジョブではElasticsearchのaggregationを通じてパフォーマンスが劇的に向上します。また、異常検知ジョブを作成して、その結果をKibanaで表示できるというのも、もう1つの今回の密接な統合のメリットです。

このアプローチでは、Elasticsearchデータを外部のデータサイエンスツールと統合するよりも、大幅なパフォーマンス向上と運用上のメリットをもたらします。今後この分野の技術開発を進めていけば、このアーキテクチャがもたらすメリットはさらに拡大すると予想されます。

Machine Learning Diagram

今すぐお試しください。ぜひご意見をお聞かせください。

これらのMachine Learning機能は、X-Pack 5.4ではベータ版として提供されます。X-Pack 5.4はすでにリリースされていますので、5.4リリースをダウンロードして、X-Packをインストールし、ご意見をお知らせいただくか、Discussフォーラムを通じてご意見をお寄せください。