Oracle Cloud InfrastructureのDbaasをZabbixで監視する手順です。
Dbaasの監視となるとOCIのMonitoring機能では不十分なため(というかDbaasのメトリクスがない?)、
他の監視ツールを使う必要があります。
使用するZabbixテンプレートはzabbix3系、4系でも実行可能なことを検証済みです。
ASMの使用率などDbaas特有の監視アイテムも含まれています。
前提
- OCIのDB SystemsよりOracleDB StandardEditionをプロビジョニング。
- プロビジョニングされたノードは「hoge01」とする。
- ノードでzabbix-agentのインストール・設定が完了していること。
- 監視対象のPDB名は「PDB1」とする。
- Zabbixテンプレートやスクリプトが入っているフォルダを端末に用意。
⇒GITにアップロードしてあります。
https://github.com/y-araki-git/zabbix-oci-dbaas
⇒自作したテンプレートなのでZabbix Shareにもアップロードしています。
https://share.zabbix.com/databases/oracle/zabbix-oci-dbaas
OracleDB監視 エージェント設定
ノード「hoge01」にログインしてからの作業です。
DB接続
$ su - root
# su - oracle
$ sqlplus / as sysdba
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
SQL> alter session set container=PDB1;
監視用ユーザ作成
パスワードは例。以下SQLを流す。
CREATE USER monitor IDENTIFIED BY "$_1A2b3C4d5" DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
GRANT CONNECT TO monitor;
GRANT RESOURCE TO monitor;
ALTER USER monitor DEFAULT ROLE ALL;
GRANT SELECT ANY TABLE TO monitor;
GRANT CREATE SESSION TO monitor;
GRANT SELECT ANY DICTIONARY TO monitor;
GRANT UNLIMITED TABLESPACE TO monitor;
GRANT SELECT ANY DICTIONARY TO monitor;
GRANT SELECT ON V_$SESSION TO monitor;
GRANT SELECT ON V_$SYSTEM_EVENT TO monitor;
GRANT SELECT ON V_$EVENT_NAME TO monitor;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO monitor;
ZABBIX用プロファイルを作成しパスワード有効期限を無期限にする
SQL> create profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;
SQL> alter user monitor profile ZABBIX;
SQL> alter profile ZABBIX limit PASSWORD_LIFE_TIME unlimited;
SQL> select * from dba_profiles where profile='ZABBIX' and resource_name='PASSWORD_LIFE_TIME';
リスナー確認
PDB名の記載がある行を控える。
# lsnrctl status LISTENER
例) Service "pdb1.xxxxxxsubnet01.xxxxxxvcn.oraclevcn.com" has 1 instance(s).
tnsname編集
最下部に追記 (先頭にPDB名、HOSTにノード名、SERVICE_NAMEにリスナー確認で表示されたものを記載。
$ vi /u01/app/oracle/product/バージョン/dbhome_1/network/admin/tnsnames.ora
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hoge01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1.xxxxxxsubnet01.xxxxxxvcn.oraclevcn.com)
)
)
接続確認
※パスワードに特殊記号がある場合 \ でエスケープしないとエラーになる。
sqlplus monitor/\$_1A2b3C4d5@PDB1
zabbix-oci-dbaas-masterをhoge01に転送
転送先:/root/zabbix-oci-dbaas-master
デプロイスクリプト実行
$ logout (rootになる)
# cd ~
# chmod +x zabbix-oci-dbaas-master/deploy_zabbix-oci-dbaas.sh
# ./zabbix-oci-dbaas-master/deploy_zabbix-oci-dbaas.sh "monitor" "\$_1A2b3C4d5"
↑スクリプトパス "監視用ユーザ名" "監視用ユーザパスワード"
※以下ファイルが設置される
/etc/zabbix/zabbix_agentd.d/zabbix-oci-dbaas.conf → Zabbixの設定ファイルがこのファイルを読み込む
/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.sh → OracleDB監視アイテム取得のスクリプト
/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.conf → OracleDB監視用ユーザの情報
/etc/zabbix/scripts/agentd/zabbix-oci-dbaas/sql/*.sql → OracleDB監視用SQL
スクリプト権限付与
# chmod +x /etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.sh
環境設定ファイル作成
pathのversionは各環境に合わせる。ORACLE_SIDにPDB名を記載
# vi /etc/zabbix/scripts/agentd/zabbix-oci-dbaas/zabbix-oci-dbaas.oraenv
ORACLE_HOME=/u01/app/oracle/product/バージョン/dbhome_1; export ORACLE_HOME
ORACLE_BASE=/u01/app/oracle/product/; export ORACLE_BASE
PATH=$PATH:/u01/app/oracle/product/バージョン/dbhome_1/bin; export PATH
LD_LIBRARY_PATH=/u01/app/oracle/product/バージョン/dbhome_1/lib; export LD_LIBRARY_PATH
NLS_LANG=AMERICAN_AMERICA.UTF8; export NLS_LANG
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_UNQNAME=ORCL_iad1js;export ORACLE_UNQNAME
ORACLE_SID=PDB1; export ORACLE_SID
Zabbix-agent設定変更
sed -i -e "s/# AllowRoot=0/AllowRoot=1/g" /etc/zabbix/zabbix_agentd.conf
sed -i -e "s/# UnsafeUserParameters=/UnsafeUserParameters=1/g" /etc/zabbix/zabbix_agentd.conf
sed -i -e "s/# EnableRemoteCommands=0/EnableRemoteCommands=1/g" /etc/zabbix/zabbix_agentd.conf
※リモートコマンドの設定や、特殊記号を含めたパラメータの受け渡し許可など
Zabbix-agent再起動
/etc/init.d/zabbix-agent restart
zabbixコンソールにログイン
設定 > テンプレート > インポートより、zabbix-oci-dbaasフォルダ内にあるtemplate_oci_dbaas.xmlをインポート。
作成されたTemplate_OCI_Dbaasを監視対象に割り当てる。
これで監視が取得できていればOKです。
↓自分でSQLを作成し監視項目を取得する手順も記事にしています。
ZabbixでOCI Dbaas監視 - SQLで監視項目の取得
関連記事
・ZabbixでOCI Dbaas監視 - SQLで監視項目の取得
・GrafanaでZabbixとOCI Monitoringのメトリクスを一元化
・GrafanaでOCI Monitoring メトリクスのダッシュボード作成手順