複数のパブリッククラウドのメトリクスや、他の監視ツール(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)
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をクリック
※以下入力し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で監視項目の取得