ksaitoの日記

日々試したことの覚え書き

orabbixでOracleを監視する(インストール編)

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> 

Zabbix側の設定

/opt/orabbix/template/Orabbix_export_full.xmlをZabbixにインポートします。

これで、Template_Oracleがインポートされます。
以上でOrabbixのインストールは完了です。