Orabbix监控Oracle数据库

一. 服务端安装jdk
二. 创建oracle监控帐号,在oracle的sqlplus窗口里面执行
CREATE USER ZABBIX IDENTIFIED BY 123456 DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;

2 Roles for ZABBIX

GRANT CONNECT TO ZABBIX;
GRANT RESOURCE TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;

5 System Privileges for ZABBIX

GRANT SELECT ANY TABLE TO ZABBIX;
GRANT CREATE SESSION TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;
GRANT UNLIMITED TABLESPACE TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;

如果使用的是oracle 11g,继续添加如下命令,开放ACL的访问控制,否则在监控的过程中有部份内容无法正常显示

exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ZABBIX', is_grant => true, privilege => 'resolve');
exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
commit;
三. 安装 orabbix
1. 下载orabbix
wget https://nchc.dl.sourceforge.net/project/orabbix/orabbix-1.2.3.zip
2. 在 /opt 目录下新建一个orabbix目录:

建议在此目录下,如果放置其他目录稍后需要更改orabbix的启动文件orabbix,启动文件默认写在opt/orabbix目录下

midir-p /opt/orabbix
3. 解压安装文件
unzip orabbix-1.2.3.zip
4. 赋予权限
chmod -R a+x orabbix/
5. 通过/opt/orabbix/conf/config.props.sample文件创建一个config.props文件:
cp /opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props
6. 编辑orabbix配置文件
vim /opt/orabbix/conf/config.props
ZabbixServerList=ZabbixServer1          #此处的ZabbixServer1与以下两行开头对应
ZabbixServer1.Address=192.168.11.48     #zabbixserver地址
ZabbixServer1.Port=10051                #zabbixserver的端口
#以上端口号为与Zabbix Server通讯的端口,我这里是将Orabbix与Zabbix装在同一台机器上的,
#如果不在同一台机器,那装Orabbix的机器需要先装Zabbix Agent,否则数据将无法传送到Zabbix Server。


OrabbixDaemon.PidFile=./logs/orabbix.pid
OrabbixDaemon.Sleep=300
OrabbixDaemon.MaxThreadNumber=100

DatabaseList=DB1                         #数据库名(要与下面对应),多个数据库用逗号隔开
#1.等号后的名字可以自己任意取名,但在Zabbix中添加Oracle Host时,必须用你在此设定的名字,否则无法监测。
#2.以上等号后面的值修改后,在下面的数据库连接定义=处,也需要修改相应的名字;


DatabaseList.MaxActive=10
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1


DB1.Url=jdbc:oracle:thin:@192.168.11.17:1521:ORCL
#1. 以上行开始的那个值,需要与之前DatabaseList后面的值保持一样。
#2. 192.168.11.17为Oracle服务器的地址,1521为TNS Port,ORCL为DB SID。

DB1.User=ZABBIX
DB1.Password=123456
DB1.MaxActive=10
DB1.MaxWait=100
DB1.MaxIdle=1

DB1.QueryListFile=./conf/query.props   
#此句指定数据查询文件,可针对不同数据库,定制不同的查询文件,默认为./conf/query.props这个文件
7.启动程序

直接运行

/opt/orabbix/run.sh

把程序做成系统服务启动

cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix
systemctl start orabbix

设置开机启动

chkconfig --add orabbix
chkconfig orabbix on

查看启动的orabbix进程

ps aux |grep orabbix

systemctl status orabbix
四. 在zabbix上导入Oracle的模板

导入模版,模版放置在 /opt/orabbix/template 下
- Orabbix_export_full.xml 全部导入(图表 监控项 触发器)
- Orabbix_export_graphs.xml 图表
- Orabbix_export_items.xml 监控项
- Orabbix_export_triggers.xml 触发器

注意:如果导入错误,提示群组Template已存在,则新建Template_Oracle群组,并修改模板

修改Orabbix_export_full.xml

<group>Template</group> 
修改为 
<group>Template_Oracle</group>
五. 部分监测项没有数据的解决方法
获取Oracle DB Size和DB Files Size

默认的query.props文件内没有配置这两个选项的检测,需要手动加上

vim /opt/orabbix/conf/query.props
1. 在“QueryList=”的最后加上“,dbfilesize,dbsize”,注意要用逗号格开;

2. 另外加上,dbfilesize,dbsize的检测语句,如下:

dbfilesize.Query=select to_char(sum(bytes/1024/1024/10), 'FM99999999999999990') retvalue from dba_data_files

dbsize.Query=SELECT to_char(sum(  NVL(a.bytes/1024/1024/10 - NVL(f.bytes/1024/1024/10, 0), 0)), 'FM99999999999999990') retvalue \
FROM sys.dba_tablespaces d, \
(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, \
(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f \
WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) \
AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')

休改后结果如下:


QueryList=archive,audit,dbblockgets,dbconsistentgets,dbhitratio,dbphysicalread,dbversion,hitratio_body,hitratio_sqlarea,hitratio_table_proc, \
lio_current_read,locks,maxprocs,maxsession,miss_latch,pga_aggregate_target, pga,phio_datafile_reads,phio_datafile_writes,phio_redo_writes,pinhitratio_body,pinhitratio_sqlarea,pinhitratio_table-proc,pinhitratio_trigger, \pool_dict_cache,pool_free_mem,pool_lib_cache,pool_misc,pool_sql_area,procnum,session_active,session_inactive,session,session_system,sga_buffer_cache, \ sga_fixed,sga_java_pool,sga_large_pool,sga_log_buffer,sga_shared_pool,tbl_space,userconn,waits_controfileio,waits_directpath_read, \ waits_file_io,waits_latch,waits_logwrite,waits_multiblock_read,waits_singleblock_read,hitratio_trigger,lio_block_changes,lio_consistent_read,waits_other,

waits_sqlnet,users_locked,uptime,dbfilesize,dbsize


DataGuardPrimaryQueryList=dg_error,dg_sequence_number
DataGuardStandbyQueryList=dg_sequence_number_stby
RmanQueryList=rman_check_status

dbfilesize.Query=select to_char(sum(bytes/1024/1024/10), 'FM99999999999999990') retvalue from dba_data_files


dbsize.Query=SELECT to_char(sum(  NVL(a.bytes/1024/1024/10 - NVL(f.bytes/1024/1024/10, 0), 0)), 'FM99999999999999990') retvalue \
FROM sys.dba_tablespaces d, \
(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, \
(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f \
WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) \
AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')
获取 memory utilization

获取 memory utilization 需要在oracle所在系统上安装 zabbix_agentd ,并在主机上添加Template OS Windows监控模板,添加Template OS Windows模板会提示内存已经被监控

删除 Orabbix_export_full.xml 中内存相关

<item type="0" key="vm.memory.size[total]" value_type="3">...</item>

<graph name="Memory Utilization" width="900" height="200">...</graph>



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值