■ODBCによるZabbix4でのOracle監視設定方法
1.Oracle Instant Clientインストール
----------------------------------------------------
https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
から以下をダウンロード
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
※oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpmのインストールには、
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpmが必要
# cd /usr/local/src
# ls oracle*
oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:oracle-instantclient12.1-basic-12################################# [100%]
# rpm -ivh oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
準備しています... ################################# [100%]
更新中 / インストール中...
1:oracle-instantclient12.1-odbc-12.################################# [100%]
※ディレクトリ構造は下記
/usr/lib/oracle/
`-- 12.1
`-- client64
|-- bin
| |-- adrci
| `-- genezi
`-- lib
|-- libclntsh.so.12.1
|-- libclntshcore.so.12.1
|-- libipc1.so
|-- libmql1.so
|-- libnnz12.so
|-- libocci.so.12.1
|-- libociei.so
|-- libocijdbc12.so
|-- libons.so
|-- liboramysql12.so
|-- libsqora.so.12.1 ★これがODBCドライバ
|-- ojdbc6.jar
|-- ojdbc7.jar
`-- xstreams.jar
/usr/share/oracle/
`-- 12.1
`-- client64
|-- ODBC_IC_Readme_Unix.html
`-- odbc_update_ini.sh
----------------------------------------------------
2.共有ライブラリ検索パスに、/usr/lib/oracle/12.1/client64/libを登録
----------------------------------------------------
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
よって、/etc/ld.so.conf.d 配下に「oracle.conf」を作成
# vi /etc/ld.so.conf.d/oracle.conf
# cat /etc/ld.so.conf.d/oracle.conf
/usr/lib/oracle/12.1/client64/lib
# ldconfig
# ldconfig -v
略
/usr/lib/oracle/12.1/client64/lib:
libsqora.so.12.1 -> libsqora.so.12.1
liboramysql12.so -> liboramysql12.so
libons.so -> libons.so
libocijdbc12.so -> libocijdbc12.so
libociei.so -> libociei.so
libocci.so.12.1 -> libocci.so.12.1
libnnz12.so -> libnnz12.so
libmql1.so -> libmql1.so
libipc1.so -> libipc1.so
libclntshcore.so.12.1 -> libclntshcore.so.12.1
libclntsh.so.12.1 -> libclntsh.so.12.1
略
※OracleのODBCについては下記に詳しい
https://docs.oracle.com/cd/E57425_01/121/ADFNS/adfns_odbc.htm
アプリ<--->unixODBCドライバマネージャ(※1)<--->ODBCドライバ(※2)<--->OCIクライアント<--->リスナー
(※1)/usr/lib64/libodbc.so
(※2)/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1
----------------------------------------------------
3.ODBC接続のためのtnsnames.oraの作成
----------------------------------------------------
# cd /usr/lib/oracle/12.1/client64
# mkdir -p network/admin ←ディレクトリは任意
# vi network/admin/tnsnames.ora
# cat network/admin/tnsnames.ora
oracle12c =
( DESCRIPTION =
( ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.203.94)(PORT = 1521) )
( CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl) )
※tnsnames.oraでは、接続識別子(ここではoracle12c)以外の行先頭はスペースで必ず空ける
----------------------------------------------------
4.ODBC接続設定(本題)
※前提:zabbixユーザ情報は下記
# grep zabbix /etc/passwd
zabbix:x:987:981:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
----------------------------------------------------
(1)ODBC関連設定確認
# su -s /bin/sh - zabbix -c "odbcinst -j"
su: warning: cannot change directory to /var/lib/zabbix: そのようなファイルやディレクトリはありません
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /var/lib/zabbix/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
(2)/etc/odbcinst.ini(ドライバマネージャーにドライバを教えてあげる)
# vi /etc/odbcinst.ini
下記を追記
[Oracle]
Description = ODBC for Oracle
Driver = /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1
(3)/var/lib/zabbix/.odbc.ini(ODBCドライバのデータソース = データ取得先)
# mkdir /var/lib/zabbix
# ls -ld /var/lib/zabbix
drwxr-xr-x 2 root root 6 7月 19 04:32 /var/lib/zabbix
# vi /var/lib/zabbix/.odbc.ini
# chown zabbix /var/lib/zabbix/.odbc.ini
# cat /var/lib/zabbix/.odbc.ini
[DSNoracle12c]
Driver = Oracle ←/etc/odbcinst.iniに書いた[Oracle]のこと
ServerName = oracle12c ←tnsnames.oraに書いた接続識別子
(4)接続確認
# su -s /bin/sh - zabbix -c "export TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin; isql -v DSNoracle12c scott tiger"
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
接続成功
SQL> quit
※「SQL> exit」だと「[ISQL]ERROR: Could not SQLExecute」になる
★上記の接続構図は以下の通り(/var/lib/zabbix/.odbc.ini→/etc/odbcinst.iniの順)
isqlで「DSNoracle12c」指定
⇒/var/lib/zabbix/.odbc.iniから「DSNoracle12c」を探してODBCドライバエントリ名が「Oracle」と知る
同時に接続識別子が「oracle12c」であることを知る
⇒ODBCドライバエントリ「Oracle」を/etc/odbcinst.iniから探して、
ドライバが「/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1」であることを知る
(5)zabbix-serverに対してODBC接続設定(★ここにたどり着くまで大変でした…)
※zabbix_serverプロセスの所有者がzabbixユーザのため
まずは、zabbix-server.serviceの設定ファイルを確認
# systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
略
⇒「/usr/lib/systemd/system/zabbix-server.service」と分かったので、環境設定ファイルの場所を確認
# grep -i environmentfile /usr/lib/systemd/system/zabbix-server.service
EnvironmentFile=-/etc/sysconfig/zabbix-server
⇒「/etc/sysconfig/zabbix-server」と分かったので、このファイルに環境変数を記載
(デフォルトでは、このファイルは存在しないので、新規作成)
# vi /etc/sysconfig/zabbix-server
# cat /etc/sysconfig/zabbix-server
TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
zabbix-server再起動
# systemctl restart zabbix-server
zabbix-serverの環境変数を確認するため、プロセスID確認(ここでは10429)
# ps -ef | grep zabbix_server | grep zabbix_server.conf | grep -v grep
zabbix 10429 1 0 05:02 ? 00:00:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix-serverの環境変数を確認
# strings /proc/10429/environ
LANG=ja_JP.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
CONFFILE=/etc/zabbix/zabbix_server.conf
TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
----------------------------------------------------
5.Zabbixでデータベースモニター作成
----------------------------------------------------
下記キャプチャ参照
----------------------------------------------------