(後編)Zabbix で Orabbix インストール

前編では、Orabbix をインストールする Zabbix 3.0 をインストールしました。
Orabbix では JDBC を使用して、Oracle Database のリソース(SGAやPGAなど)監視できます。
本投稿は、後編として Orabbix をインストールするまでを記載します。

前編は以下へ
http://qiita.com/junya19862/items/c75b50693326b33ac674

# Orabbix公式マニュアル
http://www.smartmarmot.com/wiki/index.php?title=Orabbix#ORABBIX

# ダウンロードは以下のサイトより
http://www.smartmarmot.com/product/orabbix/download/

# 構成
<dl>
  <dt>OSバージョン</dt>
  <dd>CentOS6.7 64bit</dd>
  <dd>※SELinux無効しておく</dd>
  <dt>Zabbix 3.0</dt>
  <dt>Oracle Database 12.1.0.2 64bit</dt>
  <dt>PHP 5.6</dt>
  <dt>Apache 2.2</dt>
  <dt>MySQL 5.7</dt>
</dl>

# zipファイル解凍
```
# Orabbix は orabbix-1.2.3.zip という名前の zip ファイルで提供される。
# マニュアルに従い、/opt/orabbix に解凍する。
cd /opt/
sudo mkdir orabbix
sudo unzip orabbix-1.2.3.zip
```

# セットアップ
```
# /opt/orabbix/init.d/orabbix を　/etc/init.d/orabbix としてコピーし、
# /etc/init.d/orabbix と /opt/orabbix/run.sh に実行権限を与える。
sudo cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix
sudo chmod 755 /etc/init.d/orabbix
sudo chmod 755 /opt/orabbix/run.sh
```

# 監視対象の Oracle Database 設定
```
# SYSユーザで Oracle Database にログイン
sqlplus / as sysdba

# zabbix ユーザ作成
CREATE USER ZABBIX
IDENTIFIED BY zabbix
DEFAULT TABLESPACE SYSTEM
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;

# zabbix ユーザへロールと権限付与
GRANT CONNECT TO ZABBIX;
GRANT RESOURCE TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;
GRANT SELECT ANY TABLE TO ZABBIX;
GRANT CREATE SESSION TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;
GRANT UNLIMITED TABLESPACE TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;

# 指定プロシージャ実行
exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve');
exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
commit;

# 設定確認
# localhost と返ってくること。
select utl_inaddr.get_host_name('127.0.0.1') from dual;
UTL_INADDR.GET_HOST_NAME('127.0.0.1')
--------------------------------------------------------------------------------
localhost
```

# Zabbix へテンプレートインポート
Zabbix へ Admin/zabbix でログインし、設定 > テンプレート> インポートと押下。
/opt/orabbix/template/Orabbix_export_full.xml をインポートする。
![1.png](https://qiita-image-store.s3.amazonaws.com/0/117488/f4ef9fa0-acad-cf55-e282-a69b0ff39abc.png)

# /opt/orabbix/conf/config.props の設定
## 設定ファイル作成
```
# /opt/orabbix/conf/config.props.sample をコピーして、/opt/orabbix/conf/config.props を作成する。
sudo cp /opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props
```

## 設定
```
# DatabaseList の SID は Zabbix で設定したホスト名と同じにする。
sudo vi /opt/orabbix/conf/config.props
#pidFile
OrabbixDaemon.PidFile=./logs/orabbix.pid
#frequency of item's refresh
OrabbixDaemon.Sleep=300
#MaxThreadNumber should be >= than the number of your databases
OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list
DatabaseList=<DBインスタンス名>

#Configuration of Connection pool
#if not specified Orabbis is going to use default values (hardcoded)
#Maximum number of active connection inside pool
DatabaseList.MaxActive=10
#The maximum number of milliseconds that the pool will wait
#(when there are no available connections) for a connection to be returned
#before throwing an exception, or <= 0 to wait indefinitely.
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1

#define here your connection string for each database
<DBインスタンス名>.Url=jdbc:oracle:thin:@<ホスト名>:<リスナーポート>:orcl
<DBインスタンス名>l.User=zabbix
<DBインスタンス名>.Password=zabbix
#Those values are optionals if not specified Orabbix is going to use the general values
<DBインスタンス名>.MaxActive=10
<DBインスタンス名>.MaxWait=100
<DBインスタンス名>.MaxIdle=1
<DBインスタンス名>.QueryListFile=./conf/query.props

DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2
DB2.User=zabbix
DB2.Password=zabbix_password
DB2.QueryListFile=./conf/query.props

DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3
DB3.User=zabbix
DB3.Password=zabbix_password
DB3.QueryListFile=./conf/query.props
```

# ホスト作成
インポートしたテンプレートを指定して、DBインスタンス名と同名のZabbixのホストを作成する。
![2.png](https://qiita-image-store.s3.amazonaws.com/0/117488/778287f3-9021-8a6e-7629-0a17f0e1be84.png)

```
# Orabbix 再起動
sudo /etc/init.d/orabbix restart

# 動作しているかはログを確認
cat /opt/orabbix/logs/orabbix.log
2017-09-15 19:58:39,668 [main] INFO  Orabbix - Starting Orabbix Version 1.2.3
2017-09-15 19:58:39,714 [main] INFO  Orabbix - Orabbix started with pid:3563
2017-09-15 19:58:39,714 [main] INFO  Orabbix - PidFile -> ./logs/orabbix.pid
2017-09-15 19:58:39,990 [main] INFO  Orabbix - DB Pool created: org.apache.commons.dbcp.datasources.SharedPoolDataSource@62bbf09c
2017-09-15 19:58:39,990 [main] INFO  Orabbix - URL=jdbc:oracle:thin:@ora190:1521:orcl
2017-09-15 19:58:39,990 [main] INFO  Orabbix - maxPoolSize=10
2017-09-15 19:58:39,990 [main] INFO  Orabbix - maxIdleSize=1
2017-09-15 19:58:39,990 [main] INFO  Orabbix - maxIdleTime=1800000ms
2017-09-15 19:58:39,990 [main] INFO  Orabbix - poolTimeout=100
2017-09-15 19:58:39,990 [main] INFO  Orabbix - timeBetweenEvictionRunsMillis=-1
2017-09-15 19:58:39,990 [main] INFO  Orabbix - numTestsPerEvictionRun=3
2017-09-15 19:58:41,710 [main] INFO  Orabbix - Connected as ZABBIX
2017-09-15 19:58:41,712 [main] INFO  Orabbix - --------- on Database -> orcl
```

# 確認
グラフを確認すると監視されていることがわかる。
![3.png](https://qiita-image-store.s3.amazonaws.com/0/117488/3308cc33-8a6a-3b4c-3ebf-f8102bbd4409.png)

グラフの種類はこんな感じ。
監視が最低限必要なリソースは監視可能です。
![4.png](https://qiita-image-store.s3.amazonaws.com/0/117488/ed6d5091-6af0-2de0-1811-42d9a3944af2.png)

以上、前編/後編と2回に分けて記載しましたがいかがでしたでしょうか。
皆様の Oracle Database の監視ライフに少しでもお役に立てたら光栄です。