aoishiの備忘録

備忘録

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に直接接続していることがわかります。

参考

Direct DB Connection - Grafana-Zabbix Documentation

What's New in Grafana v4.3 | Grafana Documentation