はじめに
こんにちはnaya(@NayaTaiyo)です。前回はZabbixアラートのSlackへの通知設定についての記事だったのですが、今回はGrafana への連携設定について記事を書いてみました。
Grafanaとは
Grafanaは、オープンソースのデータ可視化および監視ツールで、時系列データやその他のメトリクスデータをダッシュボード形式で表示するために使用されます。以下に、Grafanaの概要や特徴を説明します。
- 特徴
- 柔軟で直感的なインターフェースを使用してカスタマイズ可能なダッシュボードを作成可能
- チャートやグラフ、表などを用いてデータを視覚化
- 多様なデータソース対応
- Grafanaは多くのデータソースに対応しており、以下のようなサービスと統合できる
- Prometheus
- InfluxDB
- Elasticsearch
- AWS CloudWatch
- Athena
- Datadog
- MySQLやPostgreSQLなどのリレーショナルデータベース
- Grafanaは多くのデータソースに対応しており、以下のようなサービスと統合できる
- アラート機能
- Grafanaにはアラート機能があり、設定したしきい値を超えた場合に通知を送ることができる
- 通知先として、メール、Slack、Webhookなどを指定可能
- ユーザー管理とアクセス制御
- ユーザーごとに権限を設定することができ、チームでの利用がしやすい
- シングルサインオン(SSO)にも対応
- プラグインエコシステム
- 豊富なプラグインを利用して、データソースの追加やカスタムビジュアライゼーションを実現可能
- クラウドおよびオンプレミスでの利用
- Grafanaはオンプレミスでのインストールと、クラウドサービスとして提供される「Grafana Cloud」の両方で利用できる
何といっても見た目がかっこいいです。
今回は、Zabbixで収集したデータを上の画像のようにグラフ化するところまでやっていきます!
構築環境
- OS Amazon Linux 2
- Zabbix 5.0
- Grafana 11.4.0-1
- alexanderzobnin-zabbix-app 4.5.7
Grafanaイメージ図
私の環境での処理の流れとしては、以下のようになるかと思います。
- ZabbixServerがZabbixAgentからデータを収集
- 収集したデータをMySQLに保存
- PHPとNginxの機能を用いてデータベースのデータをWebへ出力(ここまでがZabbix画面の出力)
- GrafanaがZabbixServerとAPIで接続してデータを収集
- GrafanaはNginxと連携することでエンドポイントの指定、リバプロの設定が可能。(Nginxと連携せずともポート通信でのWebへの表示は可能)
Grafanaインストール
まずは、Grafanaをインストールするために、リポジトリのファイルを作成します。以下のリンクにリポジトリファイルの作成例があるので、参考にして作成しましょう。
1 2 3 4 5 6 7 8 9 10 |
# vi /etc/yum.repos.d/grafana.repo [grafana] name=grafana baseurl=https://rpm.grafana.com repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://rpm.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt |
1 |
# yum install grafana |
Zabbixプラグインのインストール
1 |
# grafana-cli plugins install alexanderzobnin-zabbix-app |
こちらのプラグインを導入することで、Zabbixをデータソースとして設定することが可能になります。
プラグインを導入後、Grafanaを再起動しましょう。
1 |
#systemctl restart grafana-server.service |
Grafanaのコンソール設定
以下のURLでGrafanaのログイン画面に飛びましょう
http://[IPアドレス]:3000
すると画像のようにログイン画面が表示されます。
初回ログイン情報
- ユーザー名 :
admin
- パスワード :
admin
初回ログイン後、すぐに新規のユーザ名とパスワードの変更を求められるので、任意のものに変更しましょう。
では、実際に設定していきます。「Administration」⇒「Plugins and data」⇒「Plugins」検索欄でZabbixを検索して表示されたら押下しましょう。
Enableを押下します。
次にデータソースとしてZabbixを設定、「Connections」⇒「Data sources」でZabbixを検索します。
※先ほど設定したプラグインの設定がないとZabbixが表示されないので注意。
赤丸部分のName
、URL
、Username
、Password
を設定しましょう!設定後、Save&testを押下します。
正常に設定されている場合は画像のような表示が出ます。
Zabbixユーザーグループ権限設定
「管理」⇒「ユーザーグループ」からZabbix administratorsを押下ない場合は作成しましょう。以下のようにユーザーにAdminが選択されていればOKです。
次に権限タブに移動して「選択」を押下後すべてのグループを投入しましょう。今回の権限は「表示のみ」を設定します。その後、追加をクリック
追加をクリックすると、以下のように表示が変更するので、更新を押下しましょう。
なぜユーザーグループ権限を設定するのか?
そもそもなんでユーザーグループを設定するのかという話なのですが、こちらの閲覧権限を設定することでAPIユーザー(Grafana)がホストグループのデータを閲覧できるようになるためです。
以下のように個別のユーザ設定で権限がされている場合でもあくまでも、Zabbix上では確認可能だけどAPIを用いてZabbixからデータを取得する場合などはユーザーグループの閲覧権限が使用されます。
※Adminユーザーのデフォルト設定は特権管理者として設定されているため閲覧権限が表示/設定となっています。
ダッシュボードの作成
それでは、Grafanaに戻ってダッシュボードの作成を行っていきます。「Dashboards」から「Create dashboard」または「New」をクリック
「Add visualization」を選択。
先ほど、設定したData sourceが表示されるので選択
以下のように何も設定がされていない、まっさらなダッシュボードが作成されます。
それでは、実際に設定してZabbixからのデータを取得しましょう。Query type
、Group
、Host
、Application
、item
を設定します。右のサイドバーでは、グラフの細かなレイアウトを設定することが可能です。
👇実際に設定した画像 赤丸部分はデータソースの設定です。
設定が完了したら右上の「Save dashboad」から設定を保存しましょう。
「Dashboards」から先ほど作成したダッシュボードを選択し、
グラフがちゃんと作成されているか確認しましょう。
おまけ
今回は、ダッシュボードを新規で作成したのですが、ダッシュボードのテンプレートが用意されておりこちらを利用して作成することも可能です。「Data sources」⇒「Zabbixのデータソース名」⇒「Dashboards」タブ
使用したいテンプレートの「import」を押下します。「import」を押下後、テンプレートの名前を選択するとダッシュボード画面に遷移します。
テンプレートのimport後はデータ取得がちゃんと設定されていないので、テンプレートを使用する場合は修正しましょう。また、グラフの作成の設定方法がわからないという方もこちらのテンプレートを利用することで、扱いやすいのではないかと思います。
Nginxリバプロ設定+エンドポイント設定
最後に、Nginxでリバプロの設定とエンドポイントの設定をしましょう。各自で使用している、Nginxのconfファイルに以下を追記しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
server { listen 80; server_name grafana.techbull.cloud; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } |
NginxのバックエンドのGrafanaに対してのリクエストに関する設定を追記しています。また、http://localhost:3000
でGrafanaのコンソールへ接続していたものが、http://grafana.techbull.cloud
での接続が可能となります。
まとめ
今回は、Grafanaの連携について記事にしてみました。Grafanaはデータソースとして指定できるものが多く、各設定方法を覚えるのは大変ですが、とても便利だと思いました。また、Grafanaがデータを取得する際、アクセス権限の設定がとても重要なので、個人的に一番気を付けるポイントかなと感じました!
以上となります。ありがとうございました!!
2000年生まれ。社会人2年目の駆け出しエンジニア。SESにてインフラエンジニアとして従事。この先、設計や構築の案件に関われるようなエンジニアになりたいという思いからTechBullに加入し、日々勉強中。主に駆け出しエンジニアに向けて、手助けになるような記事を執筆中。