designetwork

ネットワークを軸としたIT技術メモ

GrafanaでElasticsearchのデータを表示する

Elasticsearchのデータ・ログ可視化ツールとしてはKibanaが用意されているが、ZABBIXなどのデータを組み合わせてGrafanaでダッシュボードを作りたいときもある。使い始めとして、GrafanaのデータソースとしてElasticsearchを連携させる設定方法を記載する。

KibanaとGrafanaの使い分け

はじめに簡単に私のKibanaとGrafanaの使い分け。

Kibana:検索・抽出(詳細)

こちらの記事に書いたとおり、Kibanaの拡張版を使用すればDiscoverタブでの検索結果をCSVにエクスポートすることもできる。

Grafanaダッシュボード(概要)

ひと目で現在の稼働状態を監視するためのダッシュボードとしての使用がメインと考えている。また、データソースとしてInfluxDBをはじめ、ZABBIXPrometheusといった統合監視など多彩なプラグインが用意されているため、ひとつの画面で多くの情報を集約できる。

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: CountGroup by: Date Histgramとすると、ログ数のグラフが表示される。

TableからMetric: Raw Documentとして生ログを表示することもできる。

なお、JSONデータはカラム指定で表形式で表示することができる。

複数指定することで必要な情報を並べることができる。

パネル作成時にクエリ指定することができるため、あとはカスタマイズしていく。Kibanaとの差別化ができていないが、FWのアクセスログだけでもそれなりのダッシュボードを作成することができる。GEO IPなどを使ってさらにカッコ良くしたい。

まとめ

GrafanaにElasticsearchのデータを取り込むことができた。各種クエリも継続使用できるため、柔軟性は高く、用途に応じたダッシュボードを作成することができる。