ログ収集分析基盤 Rsyslog + Elasticsearch + Kibana その2 (Elasticsearch+Kibana構築)

はじめに

かくかくしかじかでログ収集分析基板を作ることにした.

heavymoon.hateblo.jp

前回までで Rsyslog 部分の設定は終わったので,引き続き Elasticsearch と Kibana 部分の設定を行う.

Elasticsearch について

www.elastic.co

Elasticsearch は,Elastic 社が中心となって開発しているオープンソースで,スケーラブルで,スキーマレスで,マルチテナントで,全文検索に特化した検索エンジン

Elastic Stack と呼ばれる Logstash + Elasticsearch + Kibana の組み合わせて利用できる.

オンプレで構築してもいいし,AWS などのクラウドプロバイダを利用することができる.

「まだ用途が決まってないけど,これから必要なデータ増えるらしいからとりあえず VARCHAR 10列くらい追加しておて」 なんてふざけた仕様の後出しジャンケンに頭を悩ませることもない.

Kibana について

www.elastic.co

Kibana も Elastic 社が中心となって開発しているオープンソースなデータ可視化ダッシュボード.

Metabase,Superset などと肩を並べる OSS な BI ツールの1つ.

大量のデータを棒グラフ,折れ線グラフ,散布図などなど,色々な形で可視化してくれる.

最初は Metabase を使おうと思ったけれど Rsyslog に続き謎のバグに遭遇してしまい,調査が難航しそうなので Kibana に乗り換えた.

ちなみに遭遇したバグはこれ.

Distinct, non-empty sequence of Field clauses metabse-mac · Issue #11588 · metabase/metabase · GitHub

Elasticsearch Kibana 構築

インストール

www.elastic.co

それぞれ公式の手順に沿ってインストールを進めればいいけれど,やることはどちらも対して変わらない. リポジトリの設定をしてインストールしてもいいし,パッケージをDLしてインストールしてもいい.

今回はパッケージをDLしてインストールした.

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.0-x86_64.rpm
$ sudo yum install ./elasticsearch-7.6.0-x86_64.rpm ./kibana-7.6.0-x86_64.rpm

ちなみに Elasticsearch は Java で動いているけれど,RPM をインストールすればバンドルされているので個別に JDK を入れる必要はない1

Elasticsearch includes a bundled version of OpenJDK from the JDK maintainers (GPLv2+CE). To use your own version of Java, see the JVM version requirements

ファイアウォール

ブラウザから Kibana に接続するために /etc/kibana/kibana.yml の設定を追記する.

server.host: "サーバのアドレス"
$ sudo firewall-cmd --add-service=kibana --permanent
$ sudo firewall-cmd --reload

あわせてファイアウォールの設定を追加しておく.

起動

$ sudo systemctl start elasticsearch.service 
$ sudo systemctl start kibana.service

細かい設定はお好みで変更するとして,サービスを起動する.

後は Rsyslog の設定を有効化すれば自動的に Elasticsearch に蓄積されていく.

Kibana から Elasticsearch に接続

ブラウザから Kibana に接続して,Management > Kibana > Index Patterns から読み込むインデックスを指定する. その他の設定はお好みで.

スクリーンショット忘れた...

おわりに

ここまでで,Rsyslog のデータを Elasticsearch に入れて Kibana でなんとなくデータが見れる状態になった. これでログの収集が自動化されたので,データ貯まるまでしばらく待つ.