Oracle DBをバックエンドにしてZabbixを動かす
Oracle Cloud上のDBをバックエンドにしてZabbix6.2を動かしてみた時のメモ
きっかけ
Oracle CloudにはAlways Freeという素晴らしい制度があり、VMやマネージドなOracleDBを無料で使うことができる。
そこで、無料枠を活用してZabbixを動かして遊ぼうと思っていたが、以前は無料枠のVMのスペックは低く(vCPU2コア、メモリ1GB)DBをVMの外に出さないと動作が厳しそうだった。
現在ではARM64のVMを選ぶことで、CPU4コア、メモリ24GB(!?)のVMを立てられるようになったため、DBをVMの中に入れても余裕で動くが、せっかくなのでOracleDBを使って動かしてみることにした。
注意
-
ちゃんとまとめていない本当のメモなので、あくまで遊び用途の参考程度のメモ。
-
Oracle DBは無料枠でAutonomous DatabaseのWorkload type: Transaction Processingを選択したが、
NLS_NCHAR_CHARACTERSET
がZabbixサポート外のAL16UTF16
になった。とりあえず動いているようだが、変なエラーが出る可能性もあるので注意。 -
全てのコマンドはrootで実行している。
環境
- OS: Ubuntu 22.04.1
- Zabbix 6.2.6
- Oracle Instant Client 19.17.0.0.0
Oracle Instant Clientのインストール
今回は /opt/oracle
の下にインストールする。ライセンスやバージョンに注意。
-
バイナリのダウンロードと展開
mkdir -p /opt/oracle cd /opt/oracle wget https://download.oracle.com/otn_software/linux/instantclient/1917000/instantclient-basic-linux.x64-19.17.0.0.0dbru.zip wget https://download.oracle.com/otn_software/linux/instantclient/1917000/instantclient-sqlplus-linux.x64-19.17.0.0.0dbru.zip wget https://download.oracle.com/otn_software/linux/instantclient/1917000/instantclient-tools-linux.x64-19.17.0.0.0dbru.zip wget https://download.oracle.com/otn_software/linux/instantclient/1917000/instantclient-sdk-linux.x64-19.17.0.0.0dbru.zip apt install -y unzip unzip instantclient-basic-linux.x64-19.17.0.0.0dbru.zip unzip instantclient-sdk-linux.x64-19.17.0.0.0dbru.zip unzip instantclient-sqlplus-linux.x64-19.17.0.0.0dbru.zip unzip instantclient-tools-linux.x64-19.17.0.0.0dbru.zip # PHPから使うために必要 echo /opt/oracle/instantclient_19_17 > /etc/ld.so.conf.d/oracle-instantclient.conf ldconfig
-
Oracle CloudからダウンロードしたWalletのzipの中身を
/opt/oracle/instantclient_19_17/network/admin
の下に展開する。 -
環境変数を設定
export PATH=/opt/oracle/instantclient_19_17:$PATH export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_17:$LD_LIBRARY_PATH export ORACLE_HOME=/opt/oracle/instantclient_19_17
Zabbixのビルド
Zabbixが配布しているパッケージではOracle DBをバックエンドにできないため、自分でビルドする。
-
リポジトリの追加とソースコードの取得 (普通にZabbixのダウンロードページからtarを持ってきても良いかも)
cd /root wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-4%2Bubuntu22.04_all.deb dpkg -i zabbix-release_6.2-4+ubuntu22.04_all.deb apt update apt install dpkg-dev apt source zabbix
-
ビルドのために依存パッケージのインストール
apt install devscripts equivs cd /root/zabbix-6.2.6 mk-build-deps -i
-
ビルド & インストール
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --sysconfdir=/etc/zabbix --libdir=/usr/lib/zabbix --enable-ipv6 --with-libpcre2 --with-openssl --with-ldap --with-net-snmp --with-openipmi --with-libcurl --with-unixodbc --with-libxml2 --with-libevent --with-ssh --enable-server --enable-proxy --with-oracle --with-oracle-include=/opt/oracle/instantclient_19_17/sdk/include --with-oracle-lib=/opt/oracle/instantclient_19_17 make make install # 本当だったらパッケージにまとめて自動でやってもらうやつ addgroup --system --quiet zabbix adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix/ --no-create-home zabbix mkdir -p /var/log/zabbix chown -R zabbix:zabbix /var/log/zabbix mkdir -p /run/zabbix chown -R zabbix:zabbix /run/zabbix
初期設定
-
DBに初期データを追加
これ: https://www.zabbix.com/documentation/current/en/manual/appendix/install/oracle
cd database/oracle/ sqlplus ADMIN/(password)@(サービス名)
SQL> @schema.sql SQL> @images.sql SQL> @data.sql
結構時間がかかる。
-
設定追加
これ(上と同じ): https://www.zabbix.com/documentation/current/en/manual/appendix/install/oracle をみて
zabbix_server.conf
に設定を書く。
今回はNet service nameで設定した。
DBHost
をデフォルト値にしているとlocalhost
に繋ぎに行こうとするので、DBHost=
をちゃんと記載する。DBHost= DBName=(DB名)_tp DBPassword=(パスワード) DBUser=ADMIN
-
起動
cd /usr/sbin # 一瞬でプロンプトが戻る ./zabbix_server # 起動してるか確認 tail /var/log/zabbix/zabbix_server.log
-
フロントエンド用の色々
# パッケージ版のフロントエンドを導入 (依存関係のため) apt install zabbix-apache-conf # PHP用のOracleライブラリを入れるために必要なパッケージをインストール apt install php-pear php-dev # oci8のインストール, 途中で何か聞かれるので、 instantclient,/opt/oracle/instantclient_19_17 と回答 pecl install oci8 echo "extension=oci8.so" > /etc/php/8.1/mods-available/oci8.ini ln -s /etc/php/8.1/mods-available/oci8.ini /etc/php/8.1/apache2/conf.d/20-oci8.ini systemctl restart apache2
パッケージ版のフロントエンドで動かない場合は、ソースコードからコピーする。
cp -ra /root/zabbix-6.2.6/ui/* /usr/share/zabbix/
おわりに
ここまでの作業でOracle DBをバックエンドにしてZabbixが動いた。
今回はテストということもあり、かなり雑に作業をしてしまったが、debやrpmにまとめても面白そうなので、何かのタイミングで試してみたい。