ログ解析で用いられるElasticsearchとはなんなのか
いきさつ
Elasticsearchについて「大量のデータをスピーディーに解析する」
くらいしか理解できていなかったので、整理することにした。
ただし、今回は「ログ解析」という観点に絞って整理する。
ログ解析の一般的な構成
おもにログ収集、ログ集積、ログ解析の3つの要素から構成されることが多い。
具体的には以下の通り。
ログ収集
- Fluentd
- Logstash
- Apache Flume
ログ集積
ログ解析(可視化)
- Tableau
- Kibana
- Grafana
ElasticSearchはログ集積にあたる。
ElasticSearchを一言で
スケーラビリティに優れた全文検索エンジン。
用語をざっくり理解
Elasticsearch | リレーショナルデータベース |
---|---|
Index | データベース |
Type | テーブル |
Document | レコード |
実際に動かしてみる
インストール
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz $ tar -xzf elasticsearch-6.5.0.tar.gz # 日本語で全文検索をするためのプラグインを入れておく $ bin/elasticsearch-plugin install analysis-kuromoji
起動
$ bin/elasticsearch
にアクセスして、以下のようにjsonが表示されればOK。
{ "name" : "lzmX37g", "cluster_name" : "elasticsearch", "cluster_uuid" : "gs4RKJXHTj6XSHeQmn_irw", "version" : { "number" : "6.5.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "816e6f6", "build_date" : "2018-11-09T18:58:36.352602Z", "build_snapshot" : false, "lucene_version" : "7.5.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Indexを登録
基本的に操作はREST方式で行います。
Indexを登録
- リクエスト
PUT /library/books/1
{ "title": "Norwegian Wood", "name": { "first": "Haruki", "last": "Murakami" }, "publish_date": "1987-09-04T00:00:00+0900", "price": 19.95 }
- レスポンス
{ "_index": "library", "_type": "books", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "created": true }
取得
- リクエスト
GET /library/books/1
- レスポンス
{ "_index": "library", "_type": "books", "_id": "1", "_version": 1, "found": true, "_source": { "title": "Norwegian Wood", "name": { "first": "Haruki", "last": "Murakami" }, "publish_date": "1987-09-04T00:00:00+0900", "price": 19.95 } }
検索
- リクエスト
GET /library/books/_search
{ "query": { "match": { "title": "fox" } } }
- レスポンス
長いので省略。
まとめ
わかったこと
Elasticsearchはログ集積に使用される
操作はRESTに則っている
kibanaと組み合わせて使うことができる(使ってみたけどまだ使いこなせていない)
まだわかっていないこと
ログ収集するときは、ログを持っている各インスタンスからElasticsearchのエンドポイントを叩く感じになるのだろうか
そのために必要なのがログ収集用のソフトなのかな
どうやってスケーラビリティを高くしていくのか、具体的にわかっていない