「Elastic Stack」とは
「Elastic Stack」とは、Webサービスの効率的な運営・管理を実現するオープンソースソフトウェア製品群だ。リアルタイム検索・分析エンジンの「Elasticsearch」、データ可視化ツールの「Kibana」、軽量のデータシッパー群である「Beats」、そして高機能なパイプラインデータ加工処理プログラムである「Logstash」によって構成されている。
Elasticsearch
Elasticsearchは、容易なスケールアウトを前提として作られた検索エンジンである。JSONドキュメントにも対応し、JavaやJavaScriptはもちろん、PythonやPHP、C#など豊富なクライアントライブラリを提供している。RESTfulな操作をサポートし、HTTPに対応したクライアントで操作が可能だ。また、さまざまな検索方法をサポートしており、日本語の全文検索や地理情報、「Aggregation」と呼ばれる集計機能も持っている。例えば、最高値や最低値、平均などの計算を検索と同時に行うことができる。
Kibana
Kibanaは、ElasticsearchのクエリやAggregationを用いてデータの中から“インサイト”を発見するためのツールだ。バーチャートや折れ線グラフ、地理情報を利用した分布図やヒストグラムなどをチャート化、ダッシュボードとしてまとめてリンクし、チームで共有することができる。また可視化だけでなく、Elastic Stackの統合的な運用管理ツールとしても利用できる。例えば、数値でエラーが多く発生しているところを発見して地図上に表示する、ということもできる。
Beats
Beatsは複数形の「s」がついているように単機能な軽量のデータシッパー“群”で、データを収集してElasticsearchや「Elastic Cloud」などに送信する役割を持つ。「libbeat」という開発用ライブラリが提供され、コミュニティを通じて開発者が独自のBeatを開発することも活発に行われている。Elasticが開発した公式Beatは既存の4つに加え、新たにリモートからシステムの稼働状況を監視するための「Heartbeat」が加わった。
Logstash
Logstashは、インプット・フィルター・アウトプットの3ステージで構成される高機能なパイプラインデータ処理プログラムだ。インプットではログやWebアプリケーションはもちろん、データストアやクラウドサービスからのデータなど、さまざまなソースから同時にイベントを取り込むことができる。SNSのストリームの取得やSalesforceとの連係も可能だ。フィルターでは、プレーンテキストを正規表現でパースしたり、XMLやCSVを解釈したり、外部のデータソース、主にElasticsearchをクエリして結果をパイプラインに出すこともできる。アウトプットの出力先はElasticsearchを基本としながらも、他のファイル出力にも対応しており、大規模環境ではApache Kafkaで一度キューイングしてロスを防ぐといった運用もされている。
Elastic Stackに多彩な付加価値を与える「X-Pack」
Elastic StackはOSSのため無料で使用することができる。さらにサブスクプリクションを購入すると、「X-Pack」としてElastic Stackを拡張する「Security」「Alerting」「Monitoring」「Reporting」「Graph」などの付加機能が使用できるようになる。加えて、Elasticが2016年に買収した企業、Prelertが開発した機械学習機能も「Machine Learning」として近日中に追加される予定だ。
Security
SecurityはElasticsearchの暗号化と認証、ロールベースのアクセス制御を提供する。Kibanaにログインダイアログを課すことができ、ネイティブ認証の他、LDAP、Active Directoryなどとの連係も可能だ。特に多数のユーザーを擁している場合や、センシティブなデータを活用しているケースでは必須の機能といえるだろう。
Alerting
Alertingは「一定時間ごとにElasticsearchをクエリして何らかの値と比較し、変化があれば何らかのアクションを起こす」などの設定ができる。例えば「1分間に5回アクセスに失敗していれば、メールで通知する」といった具合だ。
Monitoring
MonitoringはElasticsearchに関わるサーバーやストレージをモニターし、適切な運用を実現する。近年、「Elasticsearchが活用されすぎることによるパフォーマンスの低下」といったうれしい悲鳴も上がっており、大輪氏も「Elasticsearchを使っている方はぜひ活用してほしい」と勧める。
Reporting
ReportingはKibanaのダッシュボードをPDF化する機能だ。便利な使い方として、Alertingと組み合わせた定期的なレポート送信や、異常を感知した時にPDFをメーリングリストに周知する方法などが紹介された。
Graph
GraphはElasticsearchにインデックスされているデータの探索ツールである。例えば、クレジットカードの不正利用や社内のコミュニケーション分析、ネットワークのパケットからセキュリティインシデントを分析するなど、さまざまな用途に使われている。
大量データの中から問題解決のヒントとして有意義な情報を得るために、これまでElastic StackはElasticsearchによる「検索」と「集計」、そしてKibanaを組み合わせた「可視化」を提供していた。さらに、Machine Learningが加わることによって可能性が広がっていく。