Elasticsearchの概要

■Elastic Stack

Elastic Stackは、Kibana, Elasticsearch, beats, logstashのオープンソースをベースとするプロダクト群の総称。

 

(1)Kibana : データを可視化

 Node.jsで作られている。JavaScriptc3.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を提供する。

Java API 7.0

 

(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上で起動する(?)。