Elasticsearchのデータ・ログ可視化ツールとしてはKibanaが用意されているが、ZABBIXなどのデータを組み合わせてGrafanaでダッシュボードを作りたいときもある。使い始めとして、GrafanaのデータソースとしてElasticsearchを連携させる設定方法を記載する。
KibanaとGrafanaの使い分け
はじめに簡単に私のKibanaとGrafanaの使い分け。
Kibana:検索・抽出(詳細)
こちらの記事に書いたとおり、Kibanaの拡張版を使用すればDiscoverタブでの検索結果をCSVにエクスポートすることもできる。
Grafana:ダッシュボード(概要)
ひと目で現在の稼働状態を監視するためのダッシュボードとしての使用がメインと考えている。また、データソースとしてInfluxDBをはじめ、ZABBIXやPrometheusといった統合監視など多彩なプラグインが用意されているため、ひとつの画面で多くの情報を集約できる。
Grafana・Elasticsearchインストール
割愛します。YumリポジトリやオフィシャルDockerもあるため導入は簡単。ログ収集はFluentd(td-agent)、Logstashどちらでも問題なし。
Grafana Data Sources
ElasticsearchをGrafanaのData Sourcesとして追加する。次の通りType:Elasticsearchを選択しURLを入力する。Nameは任意。AccessはProxyにするとGrafana自身がデータを取得しにいく。
Indexを入力する。通常だとPattern: Dailyとして[<logstash-prefix>-]YYYY.MM.DD
とする。
なお、Pattern: No patternで<logstash-prefix>-*
としても動作するが、オフィシャルではYYYY.MM.DDでの設定方法が記載されている。
Addで登録するとDatasource addedと表示される。
注意:設定が誤っていても登録は完了される。ダッシュボードでログが正常に読み込まれない場合は設定を再確認する。また、Grafana v3.xではES v5.xを未サポート。
ダッシュボード作成
Graphを作成する。Panel data sourceで連携したElasticsearchのインデックスを指定し、Metric: Count、Group by: Date Histgramとすると、ログ数のグラフが表示される。
TableからMetric: Raw Documentとして生ログを表示することもできる。
なお、JSONデータはカラム指定で表形式で表示することができる。
複数指定することで必要な情報を並べることができる。
パネル作成時にクエリ指定することができるため、あとはカスタマイズしていく。Kibanaとの差別化ができていないが、FWのアクセスログだけでもそれなりのダッシュボードを作成することができる。GEO IPなどを使ってさらにカッコ良くしたい。
まとめ
GrafanaにElasticsearchのデータを取り込むことができた。各種クエリも継続使用できるため、柔軟性は高く、用途に応じたダッシュボードを作成することができる。