Elasticsearchの概要
■Elastic Stack
Elastic Stackは、Kibana, Elasticsearch, beats, logstashのオープンソースをベースとするプロダクト群の総称。
(1)Kibana : データを可視化
Node.jsで作られている。JavaScriptの c3.js を使ってグラフを描いている。Elasticsearchが持つアグリゲーション機能を利用し、集計して可視化して表示する。
(2)Elasticsearch : データを保存、検索、分析
全文検索、リアルタイム解析を行う、分散型RESTful検索/分析エンジン。Apache Luceneをコア部分に利用している。Apacheライセンスで提供している。
JSON形式データをHTTPでElasticsearchへ送ることでデータの登録・更新・削除・取得・検索ができる。
検索機能には、キーワード検索、絞り込み検索、ハイライト機能、スコア付けといった機能がある。またアグリゲーションと呼ばれる機能で検索結果の中にどういったデータが何件あるのか簡単に集計できる。
クライアントが使用するRESTful APIとして、Java, C#, Python, JavaScript, PHP, Perl, Ruby, SQLなど言語向けのAPIが用意されている。Java用には以下のものがある。
・Java REST Client 7.0
下記の2つがある。
・Java Low Level REST Client
HTTPでElasticsearchと通信する。
・Java High Level REST Client
Low Level Clientをベースにしてメソッド固有のAPIを提供する。
(3)Beats : エッジマシンのデータをLogstashやElasticsearchに入れる
Go言語で書かれている軽量なデータシッパー。データの中から1行取り出してElasticsearchに投げるといったシンプルな作りになっている。
各対象サーバにAgentとしてbeatsを組み込んでファイルを集め、logstashに投げてログを解析して、Elasticsearchに入れる、といった使い方ができる。また、logstashを介さず直接Elasticsearchに送ることもできる。
色々なデータ形式に対応したテンプレートが用意されている。MySQLなどのパケットデータを取り込んだり、Windowsのイベントログを取り込んだりすることができる。
(4)Logstash : 動的にデータ収集しElasticsearchに入れる
Rubyで書かれている。データを収集して解析してコード化してJSONに変換してElasticsearchに投げる。結構重い。
■X-Pack
Elastic Stackの機能を拡張するアプリとして、X-Packプラグインがあり、以下の強化ができる。
(1)セキュリティ
Elasticsearchには認証機能がなく、誰が格納したデータなのか不明であるし、誰が入れたデータでも消し放題である。X-Packを使うことで認証機能を追加することができ、データを入れられる人やデータを消せる人を制限することができる。
(2)アラート
Kibanaはデータを可視化して表示する事はできるが、しきい値に達したときのアラート機能がない。X-Packを使うことでアラートをあげる事ができる。
■Elastic Cloud
AWS上で起動する(?)。