Grafanaの導入メモ

目次

Prometheus + Grafanaでサーバの監視をするメモの第一弾として、Grafanaを導入してZabbixのデータを表示させたメモ。

環境

  • OS: Ubuntu 20.04.2

Grafanaのインストール

公式ページhttps://grafana.com/docs/grafana/latest/installation/debian/によると、Ubuntu向けにaptリポジトリが用意されているとのことなので、こちらからインストールする。

また、OSS版とEnterprise版があるが、基本的にはEnterprise版のインストールが推奨とのことなので、そちらに従う。

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana-enterprise

自動起動を有効にしながら起動してみる。

sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

起動後、http://127.0.0.1:3000/にアクセスしてGUIを確認。 admin/adminでログインできる。
Chromeだとログインした瞬間に以下のようなダイアログが出るが無視。

Chrome

ちなみに、Enterprise版をインストールしているため、ライセンスを購入すればアップグレードすることができる。

ログイン後、左のメニューの盾マーク(Server Admin)の中のUpgradeがその関連のメニュー。アップグレード後に解放される機能などが出てくるので、見てみると面白い。

Zabbix + Grafana

ZabbixにGrafana用ユーザの作成

この項目は実施しなくても、GrafanaにAdminユーザを登録すれば動作するが、セキュリティ的にあまり気分が良くないので、Grafana専用のユーザを作成する。

方法は簡単で、Zabbix UIにログインして左のメニューから「管理」->「ユーザー」の順に選択。
その後、右上の「ユーザーの作成」を押して、ユーザー名などを入れる。
Grafana用ユーザがZabbix UIにアクセスすることはないため、グループは No access to the frontend を指定した。

権限は、読み取り専用の権限を適当に付与すればOK。

Zabbix 5.4ではロールを選択する方式になっていたため、User roleを選択した。

Zabbix プラグインの導入

最終的な目標はZabbixではなくPrometheusでデータの収集を行うことだが、とりあえずGrafanaの雰囲気をつかむために、Zabbixプラグインを導入して既存のZabbixサーバと連携させる。

まずはプラグインのインストール。Prometheusは既に組み込まれているが、Zabbixは組み込まれていないため、追加作業が必要になる。

# アンインストールの際は install -> remove
sudo grafana-cli plugins install alexanderzobnin-zabbix-app

sudo service grafana-server restart

GrafanaのGUIでConfiguration(歯車マーク) -> Plugins -> Zabbixと進み、Enableボタンをクリック。

Zabbix をデータソースとして追加

プラグインの有効化が終わったら、Zabbix ServerをData Sourceとして追加する。

GrafanaのGUIでConfiguration(歯車マーク) -> Data Sources -> Add data source -> Zabbixの順にクリック。

URLにZabbix ServerのAPIのパス (例: http://localhost/zabbix/api_jsonrpc.php)を入力し、 Username、Passwordを入力し、一番下のSave & Testを押す。

緑でZabbix APIのバージョンが表示されればOK。

image3

ダッシュボードを作成

データソースを追加しただけでは何も表示されないので、ダッシュボードを作成していく。

GrafanaのGUIでCreate(+マーク) -> Dashboardを押すと、まっさらなダッシュボードが出てくる。
そのまま青い「+ Add new panel」ボタンを押すと、Zabbixのアイテムを指定する画面に入るので、Group, Host, Application, Itemの順に設定すると、上部に選択したアイテムのグラフが現れる。

グラフを追加したい場合は、下の「+ Query」で追加できる。同じホストのアイテムを追加したい場合は、設定し終わったクエリの右上のコピーマークから複製すると早いかもしれない。

このままだと、グラフの凡例がアイテム名のままになってしまうため、変更したい場合はFunctionsの横の+を押して、Alias -> setAliasを押し、表示したい名前を入力する。
Receivedだけエイリアスを設定して、右のPanel Settingsでタイトルを変更してみた様子が以下の通り。

エイリアスの例

設定が終わったら右上のApplyで確定させる。
ダッシュボードに戻るので、上部のグラフアイコンみたいなやつ(Add panel)をクリックすれば、またパネルを増やすことができる。

パネル同士の位置関係は、パネルの名前のあたりをドラッグすることで入れ替えられる。
また、パネルの右下をクリックすることで、パネルの大きさを変更することができる。

パネルの追加が終わったら、上部のバーの歯車を押して、ダッシュボードの名前を変更する。
そして、最後にSave Dashboardを押せば完成。

ダッシュボードの上部では、表示する期間の変更などができる。良い。

完成したダッシュボード

(おまけ) Direct DB Connectionする

以上の操作でZabbixのデータをGrafanaに表示することができるが、このままだとZabbix API経由でのデータ取得になり、たぶん効率的ではない。

代わりに、Direct DB Connectionを設定することで、GrafanaからZabbixのDBに直接アクセスしてデータを取得することができる。

詳しい設定方法はZabbixプラグインの公式ページに記載されている。
https://alexanderzobnin.github.io/grafana-zabbix/configuration/direct_db_datasource/

DBをGrafana用ユーザを作成する

まずはDB側にGrafana用のユーザを作成し、ZabbixのDBのSELECT権限のみを与える。

例えばMySQLの場合は以下のSQLを実行する。

GRANT SELECT ON zabbix.* TO 'grafana'@'grafana-host' identified by 'password';

今回は、バックエンドDBがPostgreSQL、Zabbix、DB、Grafanaが動いているサーバがすべて同一、またZabbixのDBはデフォルトのzabbixであるため、以下のようにSQLを実行した。

suuei@monitor$ sudo su postgres -c 'psql'
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type "help" for help.

postgres=#

(あんまり自信ない)

CREATE USER grafana PASSWORD 'password';
\c zabbix
-- GRANT SELECT ON ALL TABLES IN SCHEMA public TO grafana;
GRANT SELECT ON history,history_uint,trends,trends_uint TO grafana;
exit

DBをデータソースに追加する

Zabbixをデータソースに追加した方法と同じように、使用しているDBをデータソースに追加する。

今回はPostgreSQLを追加。分かりやすいようにNamePostgreSQL-Zabbixとした。
Databaseをzabbix、UserとPasswordに上記のSQLで作成した情報を入力。
TLS/SSL Modeをrequireに設定し、下の方のPostgreSQL detailsでPostgreSQLのバージョン情報をあわせて、Save & testを実行。

Database Connection OKと表示されたら追加完了。

DB追加

Direct DB Connectionを有効にする

最後に、ConfigurationのData sourcesからZabbixを選び、Direct DB ConnectionをEnableに変更する。その後、Data Sourceに上記で追加したデータソース(今回はPostgreSQL-Zabbix)を設定して、Save&testを実行すれば完了。

image5