3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

ZabbixでOCI Dbaas監視 - エージェント設定

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 メトリクスのダッシュボード作成手順

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?