zabbixでOracleを監視してみました。
zabbixで直接、Oracleを監視するのではなくorabbixというJDBCベースのエージェントからOracleにログインして各種SQLを発行し、取得した値をZabbixに通知する仕組みです。
エージェントを動かすサーバにはJRE6以上があればよく、監視対象のOracleにはエージェントは不要でディクショナリにアクセスできるOracleユーザを準備するだけです。
これなら既存のデータベースにも割と簡単に組み込むことができます。
日本語の情報は少ないのですが、Orabbixのサイトにあるインストール手順に従って比較的簡単に導入できます。
ダウンロードと展開
Orabbixは、zipファイルで提供されます。
インストール手順は、/opt/orabbixに展開される前提です。
$ cd /opt $ ls $ sudo mkdir orabbix $ cd orabbix $ sudo unzip /tmp/orabbix-1.2.3.zip Archive: /home/ksaito/orabbix-1.2.3.zip creating: conf/ inflating: conf/config.props.sample inflating: conf/log4j.properties inflating: conf/log4j.properties.sample inflating: conf/query.props inflating: conf/query.props.sample inflating: conf/query_a.props inflating: conf/query_a_1.props inflating: conf/query_b.props creating: doc/ inflating: doc/CHANGELOG.txt inflating: doc/Orabbix_Install_v0.6.pdf inflating: doc/gpl.txt creating: init.d/ inflating: init.d/orabbix inflating: install.cmd creating: lib/ inflating: lib/commons-codec-1.4.jar inflating: lib/commons-dbcp-1.4.jar inflating: lib/commons-lang-2.5.jar inflating: lib/commons-logging-1.1.1.jar inflating: lib/commons-pool-1.5.4.jar inflating: lib/hsqldb.jar inflating: lib/log4j-1.2.15.jar inflating: lib/ojdbc6.jar inflating: orabbix-1.2.3.jar inflating: orabbix.exe inflating: orabbixw.exe inflating: run.bat inflating: run.sh creating: template/ inflating: template/Orabbix_export_full.xml inflating: template/Orabbix_export_graphs.xml inflating: template/Orabbix_export_items.xml inflating: template/Orabbix_export_triggers.xml inflating: uninstall.cmd inflating: conf/query - Copy.props $
セットアップ
展開後にいくつか設定したらインストール完了です。
$ sudo cp /opt/orabbix/init.d/orabbix /etc/init.d $ sudo chmod u+x /etc/init.d/orabbix $ sudo chmod u+x /opt/orabbix/run.sh $
監視対象のデータベースの設定
Orabbixは、JDBCで監視対象のデータベースに接続してディクショナリのデータを取得しZabbixサーバに送信します。
監視対象のOracleには、監視専用のユーザを作成する必要があります。
SQL> CREATE USER ZABBIX IDENTIFIED BY <<パスワード>> 2 DEFAULT TABLESPACE SYSTEM 3 TEMPORARY TABLESPACE TEMP 4 PROFILE DEFAULT 5 ACCOUNT UNLOCK; ユーザーが作成されました。 SQL> GRANT CONNECT TO ZABBIX; 権限付与が成功しました。 SQL> GRANT RESOURCE TO ZABBIX; 権限付与が成功しました。 SQL> ALTER USER ZABBIX DEFAULT ROLE ALL; ユーザーが変更されました。 SQL> GRANT SELECT ANY TABLE TO ZABBIX; 権限付与が成功しました。 SQL> GRANT CREATE SESSION TO ZABBIX; 権限付与が成功しました。 SQL> GRANT SELECT ANY DICTIONARY TO ZABBIX; 権限付与が成功しました。 SQL> GRANT UNLIMITED TABLESPACE TO ZABBIX; 権限付与が成功しました。 SQL> GRANT SELECT ANY DICTIONARY TO ZABBIX; 権限付与が成功しました。 SQL>
後処理
Oracle 11gの場合、以下の後処理が必要となるようです。
SQL> select utl_inaddr.get_host_name('127.0.0.1') from dual; UTL_INADDR.GET_HOST_NAME('127.0.0.1') -------------------------------------------------------------------------------- localhost SQL> exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve'); PL/SQLプロシージャが正常に完了しました。 SQL> exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*'); PL/SQLプロシージャが正常に完了しました。 SQL> commit; コミットが完了しました。 SQL>