Grafana-ZabbixでDirect DB Connectionを使ってみた
はじめに
Grafana-ZabbixでDirect DB Connectionを使ってみたのでまとめてみました。
Gfarana-ZabbixはZabbixのデータをGrafanaで可視化するためのデータソースプラグインです。
α版ではありますがGrafana 4.3以降でMySQLがデータソースとしてサポートされ、Grafana-Zabbix 3.6以降でDirect DB Connectionという、時系列データをZabbixのデータベースから直接取得する機能が実装されました。
Direct DB Connectionの利点
Zabbix API経由で時系列データを取得する場合は、指定した時間範囲すべてのデータを取得し、クライアント側で大量データからグラフ表示枠に収まるよう調整しながら描画します。
Direct DB Connectionでは、この調整する作業をサーバサイドに任せることで、クライアント側のデータ読み込みサイズと描画の計算量を削減し、より効率よくグラフ表示できるようにしています。
具体的には、MySQLのクエリで上手く調整しているようです。
設定方法
環境
- Zabbix 3.2.7
- MySQL 5.7.18
- Grafana 4.6.1
- Grafana-Zabbix 3.7.0
MySQLデータソースの設定
今回はZabbixのデータベースにMySQLを使っていますので、GrafanaがZabbixのデータベースにアクセスできるようにMySQLのデータソース設定をします。
下記を参考にします。
SQL Data Source Configuration - Grafana-Zabbix Documentation
注意点としては、GrafanaがデータベースにアクセスするユーザはZabbixサーバがアクセスするユーザとは分けて作成し、不具合などで誤ってデータ更新しないよう、SELECT権限のみを付与することを推奨しているようです。
また、ここで入力したホストにはGrafanaサーバから接続されるようです。Zabbix API経由の場合はProxyとDirectでアクセス方法を選択できたので念のため確認してみました。
Zabbixデータソースの設定
次にZabbixのデータソース設定でDirect DB Connectionを有効化します。
下記を参考にします。
Configuration - Grafana-Zabbix Documentation
「Direct DB Connection」という項目がありますので、チェックを入れて先ほど作成したMySQLのデータソースを選択します。
これで、グラフ描画時の時系列データがZabbix API経由ではなくDBから直接取得されるようになります。
まとめ
Grafana-Zabbixで新しく実装されたDirect DB Connectionとその設定方法を紹介しました。
私のZabbixサーバはそこまで大量のデータがあるわけではないため、体感できるほどの効果は確認できませんでしたが、ダッシュボードに大量のグラフを並べると効果を実感できるかもしれないです。
またDirect DB Connectionを有効化した状態では、グラフ描画時にZabbixサーバにアクセスログが出力されなかったことから、MySQLに直接接続していることがわかります。