GrafanaでZabbixとOCI Monitoringのメトリクスを一元化


複数のパブリッククラウドのメトリクスや、他の監視ツール(ZabbixやPrometheusなど)の
監視アイテムをGrafanaで一元化して閲覧できるようにと思いやってみました。

Grafnaダッシュボードのコミュニティでは多くのダッシュボードがシェアされていますが、OCI Monitoring用のものがなかったため自作してシェアしています。
OCI Monitoringの画面と全く同じ配置でグラフを作成しました。

ダッシュボード作成方法についてはこちらで紹介しています。

  • 前提
    Grafana環境はOCIにてOracleLinux7で構築
    Grafanaコンソール閲覧用に3000ポートを開放
    GrafanaサーバとZabbixサーバを互いに80番で通信できるよう設定
    Grafanaサーバのselinux無効化、firewalld無効化

GrafanaとOCI Metrics連携

※サーバ内rootで作業

Grafanaインストール

yum install https://dl.grafana.com/oss/release/grafana-6.0.1-1.x86_64.rpm

smtpの設定

vi /etc/grafana/grafana.ini
※340行目辺りを以下に編集

[smtp]
enabled = true
host = localhost:25
user = grafana
# If the password contains # or ; you have to wrap it with trippel quotes. Ex
"""#password;"""
;password =
;cert_file =
;key_file =
skip_verify = false
from_address = 送信元アドレスを記載
from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com

起動

systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server

ブラウザで以下URL指定し動作確認

http://<サーバーのipアドレス>:3000

初期ログインは
username : admin
password : admin

再びサーバでOCIのプラグインインストール

grafana-cli plugins install oci-datasource
ls -l /var/lib/grafana/plugins
service grafana-server restart

OCI metricsと連携設定

Dynamic Groupのプリンシパルを使う方法で連携します。
この方法が使えるのはOCI上のインスタンスのみです。他にOCI CLIを使う方法もありますが、Dynamic Groupで設定すればCLIはインストール不要です。
Dynamic Groupはインスタンス、コンパートメントなどユーザ以外のリソースに権限を付与・管理する場合に使います。

API発行の許可

OCI管理コンソールより
"Identity" > "Dynamic Groups" > "Create Dynamic Group"

NAME 任意の名前
例)test-dg
DESCRIPTION 任意の説明
例)test-dg
RULE 1 任意のルール
例)ALL {}の中に任意のコンパートメントのOCID記載。
「ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa'}」
※これでコンパートメントのみ監視項目が取得できると思いきや、下の設定により全コンパートメントのインスタンスのメトリックが見られる。

Dynamic Groupへ権限の付与

IAMのポリシーで、Dynamic Groupへ以下の権限を付与する。
※"tenancy"レベルの権限を付与するため、rootコンパートメントで定義する必要がある。
Allow dynamic-group to read metrics in tenancy
Allow dynamic-group to read compartments in tenancy

Grafanaにデータソース追加

Grafanaコンソールログイン後、Add data sourceをクリック

Data sourceとしてOracle Cloud Infrastructure(左下あたり)をクリック

Data Sourceの設定

※以下入力しSave
Tenancy OCID テナンシーのOCID(※今回は検証用にfullenergy120のテナンシーOCID)
Default Region 任意のリージョン(ホームリージョンである必要はない us-ashburn-1)
Environment OCI Instance

Grafana Dashbordのインポート

左サイドバー「+」マークのImportより。
Grafana.com Dashboardボックスにインポートしたいダッシュボードの番号を入力します。
10497 :oci_computeagent
10498 :oci_lbaas
10499 :oci_blockstore
10500 :oci_vcn

左上でregion,compartmentを変更すれば自動で環境が切り替わります。
※イメージ (oci_computeagent.json)

※イメージ (oci_lbaas.json)

GrafanaとZabbix連携

grafanaサーバにZabbixのプラグインをインストール

grafana-cli plugins install alexanderzobnin-zabbix-app
service grafana-server restart

grafanaでZabbixデータソースの設定

zabbixコンソールでgrafana用のユーザーを作成。ユーザーにREAD権限を付与。

Grafanaコンソールより、
Home > 右側Installed Appsにzabbixが表示されるのでクリック

Enableをクリック

Home > Create data source typeで右下zabbixをクリック

Data Sourceの設定

※以下入力しSave
URL http://ZabbixサーバのIP/zabbix/api_jsonrpc.php
Username Zabbixで作成したgrafana用ユーザのユーザ名
Password Zabbixで作成したgrafana用ユーザのユーザパスワード
※ここでは検証用にAdminユーザを設定していますがGrafana用にユーザ作成したほうがよいです。

grafanaダッシュボードインポート

左サイドバー「+」マークのImportより、Grafana.com Dashboardボックスに 10560 と入力します。
Zabbixのダッシュボードはたくさんアップロードされていると思いますが、簡単に作成してみました。
余談ですがHinemosとGrafana連携の情報が全くないですが、
NTTデータの技術さんに聞いたところ連携はできるけど会社として公開してないらしいです。
でもそれについての情報自体アップロードしていいとのことで、タイミングあればやってみます。

※イメージ (一番上にアラート情報、その下にサーバリソースのグラフを表示させました。配置はお好みで。)

※イメージ (ログ監視も表示できます)

イメージ (JMX監視など手動で追加した監視項目も表示できます。もちろんWebシナリオも)

あとは左サイドバー「Dashboards」のManageでフォルダを作ってダッシュボードを整理します。

新しいzabbix環境を追加したければ、同じようにZabbixデータソースを追加し上のダッシュボードをインポートするだけです。ホストグループやホスト名を切り替えれば自動で反映されます。

GrafanaとCloudwatchの連携もとても簡単ですし、アラート設定、通知設定もZabbixより簡単なのでGrafanaおすすめです。

関連記事

・GrafanaでOCI Monitoring メトリクスのダッシュボード作成手順
・ZabbixでOCI Dbaas監視 - エージェント設定
・ZabbixでOCI Dbaas監視 - SQLで監視項目の取得