Zabbix - на мой взгляд одна из лучших систем для мониторинга всей IT инфраструктуры вашей организации. Одной из основных преимуществ перед другими это настраиваемые шаблоны.
Для того, чтобы мониторить параметры БД Oracle недостаточно просто установить шаблон, необходимо чтобы zabbix отправлял запросы на БД. Мне попалась утилита zbxora . Я опишу процесс установки данной утилиты.
Имеется сервер Zabbix на ОС CentOS Linux release 7.4 и бд Oracle 11.2.0.3. В принципе, как описано на сайте разработчика утилита тестировалась под версии Oracle 9,10,11,12.
Первым делом, необходимо убедиться что версия python не ниже 2.7.9 , у меня была установлена 2.6 и с ней возникали проблемы. А лучше всего установить последнюю версию 3.6.5
Не буду вдаваться в подробности установки, я установил по данной ссылке ровно до момента проверки версии.
в etc копируем zbxora.fsdb03.cfg и папку zbxora_checks
Если вы скопировали не под пользователем zabbix, то не забываем сменить владельца файлов и папок командой chown.
на БД oracle 11g создаем пользователя и даем ему гранты:
я не зря уточнил 11g, на 12 версии пользователя создаем по другому:
Создаем файл для постоянного мониторинга
Для того, чтобы мониторить параметры БД Oracle недостаточно просто установить шаблон, необходимо чтобы zabbix отправлял запросы на БД. Мне попалась утилита zbxora . Я опишу процесс установки данной утилиты.
Имеется сервер Zabbix на ОС CentOS Linux release 7.4 и бд Oracle 11.2.0.3. В принципе, как описано на сайте разработчика утилита тестировалась под версии Oracle 9,10,11,12.
Первым делом, необходимо убедиться что версия python не ниже 2.7.9 , у меня была установлена 2.6 и с ней возникали проблемы. А лучше всего установить последнюю версию 3.6.5
Не буду вдаваться в подробности установки, я установил по данной ссылке ровно до момента проверки версии.
[zabbix@Zbbx bin]$ python3.6 -V
Python 3.6.5
создаем переменную $ZBX_HOMEexport $ZBX_HOME=/home/zabbix
Заходим на сервер zabbix под пользователем zabbix и создаем директорииmkdir $ZBX_HOME/etc
mkdir $ZBX_HOME/bin
mkdir $ZBX_HOME/zbxora_out
в bin копируем zbxora.py, zbxora_sender, zbxora_starterв etc копируем zbxora.fsdb03.cfg и папку zbxora_checks
Если вы скопировали не под пользователем zabbix, то не забываем сменить владельца файлов и папок командой chown.
на БД oracle 11g создаем пользователя и даем ему гранты:
create user cistats identified by knowoneknows;
grant create session, select any dictionary, oem_monitor to cistats;
я не зря уточнил 11g, на 12 версии пользователя создаем по другому:
create user c##cistats identified by knowoneknows;
alter user c##cistats set container_data = all container = current;
Теперь импортируем шаблон zbxora_template_zabbix-3.0.xml через веб интерфейс Zabbix, меню Configuration - Templates - Import, так как у меня версия zabbix 3.4.6 я выбрал именно этот шаблон. Добавляем шаблон к хосту вашего сервера бд. Проводим настройку zbxora.fsdb03.cfggrant create session, select any dictionary, oem_monitor, dv_monitor to c##cistats;
Проверяем работу питоновского скрипта:[zbxora] db_url: //IP сервера бд:1521/sid username: cistats password: knowoneknows role: normal # for ASM instance role should be SYSDBA out_dir: /home/zabbix/zbxora_home/zbxora_out hostname: имя хоста -- в дальнейшем будет настроен сервер по этому имени checks_dir: /home/zabbix/zbxora_home/etc/zbxora_checks site_checks: NONE to_zabbix_method: zabbix_sender # if to_zabbix_method is zabbix_sender, every cycle a sender process is started to_zabbix_args: zabbix_sender -z 127.0.0.1 -T -i # the output filename is added to to_zabbix_args
если все нормально, должен быть выдан примерно следующий текст:python3.6 -c /etc/zbxora.fsdb02.cfg
2018-06-13 12:09:22 start python-3.6.5 zbxora-1.98 pid=20644 Connecting for hostname your_host... 2018-06-13 12:09:22.723653 to_zabbix_method: zabbix_sender zabbix_sender -z 127.0.0.1 -T -i /home/zabbix/zbxora_home/zbxora_out/zbxora.em5.zbx 2018-06-13 12:09:22.723701 out_file:/home/zabbix/zbxora_home/zbxora_out/zbxora.sid.zbx 2018-06-13 12:09:22.844644 connected db_url //<IP сервера бд>:1521/sid type RDBMS db_role PRIMARY version 11 2018-06-13 12:09:22.844675 user cistats CISTATS sid,serial 5486,26693 instance my_inst as normal 2018-06-13 12:09:22.845083 using sql_timeout 60 2018-06-13 12:09:22.845172 using checks from ['/home/zabbix/zbxora_home/etc/zbxora_checks/oracle/primary.11.cfg'] 2018-06-13 12:09:22.845977 checks loading /home/zabbix/zbxora_home/etc/zbxora_checks/oracle/primary.11.cfg 2018-06-13 12:09:22.855685 auto_discovery_1000 run every 1000 minutes 2018-06-13 12:09:22.855914 expu.lld: select '' "{#PDB}", username "{#USERNAME}" from dba_users s 2018-06-13 12:09:22.855999 ustat.lld: select '' "{#PDB}", account_status "{#STATUS}" from dba_user 2018-06-13 12:09:22.856099 auto_discovery_60 run every 60 minutes 2018-06-13 12:09:22.856227 arl_dest.lld: select i.instance_name "{#INST_NAME}",d.dest_name "{#ARL_DES 2018-06-13 12:09:22.856296 db.lld: select name "{#PDB}" from v$database 2018-06-13 12:09:22.856357 inst.lld: select distinct inst_name "{#INST_NAME}" from (select inst_n 2018-06-13 12:09:22.856419 p_ts.lld: select tablespace_name "{#TS_NAME}", '' "{#PDB}" from dba_ta 2018-06-13 12:09:22.856479 parm.lld: select i.instance_name "{#INST_NAME}", p.name "{#PARAMETER}" 2018-06-13 12:09:22.856538 rman.lld: select distinct(object_type) "{#OBJ_TYPE}" from v$rman_statu 2018-06-13 12:09:22.856596 service.lld: select '' "{#PDB}", i.instance_name "{#INST_NAME}", s.name " 2018-06-13 12:09:22.856654 t_ts.lld: select tablespace_name "{#TS_NAME}", '' "{#PDB}" from dba_ta 2018-06-13 12:09:22.856713 u_ts.lld: select tablespace_name "{#TS_NAME}", '' "{#PDB}" from dba_ta 2018-06-13 12:09:22.856884 checks_01m run every 1 minutes 2018-06-13 12:09:22.857003 blocked: select 'blocked[topsid]', topsid||'('||blocked||')' from ( s 2018-06-13 12:09:22.857074 db.openmode: select 'db['||name||',openstatus]', decode(open_mode,'MOUNTE 2018-06-13 12:09:22.857134 inst.uptime: select 'inst['||instance_name||',uptime]' key,(sysdate -star 2018-06-13 12:09:22.857195 scn: select 'db[current_scn]', current_scn from v$database union 2018-06-13 12:09:22.857285 checks_05m run every 5 minutes 2018-06-13 12:09:22.857398 arl_dest: select 'arl_dest['|| i.instance_name||','||d.dest_name||',st 2018-06-13 12:09:22.857466 fra: select 'fra[limit]', space_limit from v$recovery_file_dest d 2018-06-13 12:09:22.857528 parm.val: select 'parm['||i.instance_name||','||p.name||',value]' key, 2018-06-13 12:09:22.857588 service.cnt: select 'service[,'||i.instance_name||','|| s.service_name||' 2018-06-13 12:09:22.857647 t_ts: select 't_ts[,'||t.TABLESPACE||',filesize]', t.totalspace 2018-06-13 12:09:22.857723 u_ts: SELECT 'u_ts[,'||tablespace_name||','|| CASE WHEN k = 1 TH 2018-06-13 12:09:22.857872 checks_20m run every 20 minutes 2018-06-13 12:09:22.857998 checks_60m run every 60 minutes 2018-06-13 12:09:22.858103 alertlog: select 'inst['||i.instance_name||',log]', d.value||'/alert_' 2018-06-13 12:09:22.858169 expu: select 'expu[,'|| trim(username)||',expiring]' key, (expiry_ 2018-06-13 12:09:22.858231 p_ts: SELECT 'p_ts[,' || tablespace_name || ',' || CASE WHEN k = 1 2018-06-13 12:09:22.858320 checks_720m run every 720 minutes 2018-06-13 12:09:22.858419 lastpatch: select 'db[last_patch_hist]', ACTION||':'||NAMESPACE||':'|| 2018-06-13 12:09:22.858486 version: select 'inst['||instance_name||',version]', version from gv$ 2018-06-13 12:09:22.858575 startup run at connect only 2018-06-13 12:09:22.858671 lastpatch: select 'db[last_patch_hist]', ACTION||':'||NAMESPACE||':'|| 2018-06-13 12:09:22.858768 version: select 'inst['||instance_name||',version]', version from gv$Теперь проверяем отправку созданного файла на сервер zabbix, будем отправлять на адрес 127.0.0.1 т.е. сами себе:
$zabbix_sender -z 127.0.0.1 -T -i $ZBX_HOME/zbxora.fsdb03.zbxsent: 0; skipped: 0; total: 0
Создаем файл для постоянного мониторинга
$vi zbxora.sh
nohup python3.6 zbxora.py -c $ZBX_HOME/etc/zbxora.fsdb03.cfg &
cd $ZBX_HOME/bin
$chmod a+x zbxora.sh
запускаем на исполнение:
$./zbxora.sh
Проверяем в веб интерфейсе Zabbix , меню Monitoring - Dashboard - Latest data
Комментариев нет:
Отправить комментарий