Zabbix: мониторинг базы данных Oracle

Не так давно отдел поддержки SAP поставил задачу мониторинга внутренних параметров БД Oracle, в частности tablespace. Имея в качестве системы мониторинга Zabbix на базе Debian Squeeze, и порывшись на форумах наткнулся на такую статью:

https://www.zabbix.com/forum/zabbix-cookbook/13898-another-way-to-monitor-oracle?t=13666

Смысл в том, чтобы подключаясь к базе данных при помощи SqlPlus, запускать sql-запрос и результат передавать сервису zabbix при помощи утилиты zabbix_sender.

Итак, для начала создадим пользователя в Oracle для подключения скриптов zabbix и выполнения запросов:

CREATE USER ZABBIX
IDENTIFIED BY <PASSWORD>
DEFAULT TABLESPACE SYSTEM
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
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;

На стороне сервера Zabbix должны быть установлены Oracle instant client (SQLPlus), утилита tnsping и файл tnsnames.ora. Можно все это собрать по частям, а можно установить локально БД со всем необходимыми инструментами – “Oracle databases express edition”, скачать .rpm можно здесь http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html. 

Инструкцию по конвертации .rpm в .deb и установке пакета здесь: https://mariadb.com/kb/en/library/oracle-xe-112-and-mariadb-101-integration-on-ubuntu-1404-and-debian-systems/

После установки компонентов скачиваем набор скриптов и sql-запросов по ссылке с форума zabbix выше или отсюда: https://ucblog.ru/wp-content/uploads/2018/04/attachment.zip

Распаковываем архив в папку externalscripts сервера zabbix, у меня это путь /usr/lib/zabbix/externalscripts

Теперь нужно поправить файлы конфигурации.

Задаем имена хостов, порты баз данных и имена сервисов SAP:

/u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora:
# tnsnames.ora Network Configuration File:
ewm1.domain.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ewm1.domain.local)(PORT = 1528))
)
(CONNECT_DATA =
(SID = ESD)
)
)

Добавляем в профиль пути к файлам Oracle:

export ORACLE_BASE=/u01/app/oracle/product/11.2.0/xe
export ORACLE_HOME=$ORACLE_BASE
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=/lib/:/usr/lib:$ORACLE_BASE/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin

Проверяем, что подключение к серверу Oracle работает:

# tnsping ewm1.domain.local
TNS Ping Utility for Linux: Version 11.2.0.2.0 – Production on 04-APR-2018 10:05:48
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ewm1.domain.local)(PORT = 1528))) (CONNECT_DATA = (SID = ESD)))
OK (0 msec)

Задаем параметры работы скриптов:

/usr/lib/zabbix/externalscripts/globalcfg:
ORACLE_BASE=/u01/app/oracle/product/11.2.0/xe
ORACLE_HOME=$ORACLE_BASE
PATH=$PATH:$ORACLE_HOME/bin
LD_LIBRARY_PATH=/lib/:/usr/lib:$ORACLE_BASE/lib
TNS_ADMIN=$ORACLE_HOME/network/admin

SCRIPTDIR=”/usr/lib/zabbix/externalscripts/check_ora”
CONNFILE=”$SCRIPTDIR/credentials”
CFGFILE=”/usr/lib/zabbix/externalscripts/globalcfg”

ZBX_SENDER=”/usr/bin/zabbix_sender”
ZBX_SERVER=”zabbix.domain.local”
ZBX_PORT=”10051″

/usr/lib/zabbix/externalscripts/check_ora/credentials:

ewm1.domain.local;zabbix/password@ewm1.domain.local

После этого импортируем в Zabbix шаблон template_oracle.xml.

Проверяем работу скрипта запроса к БД:

#./check_ora_sendtrap.sh -i ewm1.domain.local -q procnum
61

Передаем заданное значение в серверу Zabbix:

#/usr/bin/zabbix_sender -z 192.168.x.x -p 10051 -s ewm1.domain.local -k archive -o 101 -vv

Должен сработать триггер Archivelog>100

Остается добавить в cron запуск скрипта опроса БД:

*/10 * * * * . /root/.profile; /usr/lib/zabbix/externalscripts/check_ora_cron.sh > /dev/null

Внимание! Скрипт check_ora_cron.sh выполняет последовательный запуск всех sql-запросов в каталоге check_ora, поэтому нужно сопоставлять время выполнения запросов и частоту выполнения скрипта в cron, а также удалить из каталога ненужные запросы.

Постоянная ссылка на это сообщение: https://ucblog.ru/2018/04/zabbix-%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d0%b0%d0%b7%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85-oracle/

Добавить комментарий

Ваш адрес электронной почты не будет опубликован.