YandexDirect

28 июня 2018

Настройка мониторинга БД Oracle с помощью zbxora в Zabbix

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

Не буду вдаваться в подробности установки, я установил по данной ссылке ровно до момента проверки версии.

[zabbix@Zbbx bin]$ python3.6 -V

Python 3.6.5
создаем переменную $ZBX_HOME

export $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; 
grant create session, select any dictionary, oem_monitor, dv_monitor to c##cistats; 
Теперь импортируем шаблон zbxora_template_zabbix-3.0.xml через веб интерфейс Zabbix, меню Configuration - Templates - Import, так как у меня версия zabbix 3.4.6 я выбрал именно этот шаблон. Добавляем шаблон к хосту вашего сервера бд. Проводим настройку zbxora.fsdb03.cfg

[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

Комментариев нет:

Отправить комментарий

Общее·количество·просмотров·страницы