zabbix利用orabbix对oracle进行监控

时间:2022-04-14 08:15:22
    orabbix是一个用来监控Oracle数据库性能的zabbix插件工具,通过他收集被监控的oracle服务的数据并将其传给zabbix服务器端,然后通过调用图形显示。类似于zabbix agent的作用,orabbix可单独安装,也可安装在数据库服务器,或者zabbix server上,通过jdbc连接到数据库,利用相应的sql去数据库获取相应的参数,其具有以下功能:
(1)、数据库版本
(2)、归档文件
(3)、等待的事件(如文件的I/O,单块的读,多块的读,直接读,SQLNet消息,控制文件I/O,日志写等)
(4)、HitRatio(监控Hit Ratio的触发,表/存储过程,SQLArea,Body)
(5)、逻辑I/O(当前读操作,持续的读操作,块的更改)
(6)、PGA
(7)、SGA(固定的缓冲,JAVApool,Large Pool,Log Buffer,Shared Pool,Buffer Cache)
(8)、物理I/O(重写操作,数据文件写操作,数据文件读操作)
9、SharePool(PoolDictionary Cache, Pool Free Memory, Library Cache,Sql Area ,Misc.)
10、Pin Hit Ratio(monitor Hit Ratio on Trigger, Tables/Procedures, SQLArea,Body)
11、Session/Processes(monitor Sessions and processes)
12、Session (ActiveSession, Inactive Sessions, System Session)

orabbix的下载地址为:http://www.smartmarmot.com/product/orabbix/download/,由于orabbix是用java写的,所以需要java运行环境,java相关环境自行配置。
orabbix当前的版本为1.2.3,将下载到的orabbix-1.2.3.zip,移动到/opt目录下,并解压到该目录,解压后的目录为:/opt/orabbix,如果不是这个目录的话就需要到配置文件中去修改相应的路径。
给run.sh和init.d/orabbix增加可执行权限。
    chmod +x run.sh
chmod +x init.d/orabbix
    修改配置文件conf/config.props
orabbix所有的配置文件都在conf目录中,需要将默认的配置文件config.props.sample复制一份后再进行修改和配置。
#comma separed list of Zabbix servers
#ZabbixServerList=ZabbixServer1,ZabbixServer2
ZabbixServerList=ZabbixServer1
#(zabbixserver的名字,下行中address和port都引用到了这个名字,所以下面两行的前缀名字要与这里的名字保持一致)
#ZabbixServer1.Address=IP_ADDRESS_OF_ZABBIX_SERVER
ZabbixServer1.Address=192.168.3.163
#ZabbixServer1.Port=PORT_OF_ZABBIX_SERVER
ZabbixServer1.Port=10051
#ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER
#ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER
#pidFile
OrabbixDaemon.PidFile=./logs/orabbix.pid
#frequency of item's refresh
OrabbixDaemon.Sleep=300
#MaxThreadNumber should be >= than the number of your databases
OrabbixDaemon.MaxThreadNumber=100
#put here your databases in a comma separated list
#DatabaseList=DB1,DB2,DB3
DatabaseList=DB_QM (DB名称,可随意定义,但要与下文保持一致,切记要与监控的主机名称保持一致)
#Configuration of Connection pool
#if not specified Orabbis is going to use default values (hardcoded)
#Maximum number of active connection inside pool
DatabaseList.MaxActive=10
#The maximum number of milliseconds that the pool will wait
#(when there are no available connections) for a connection to be returned
#before throwing an exception, or <= 0 to wait indefinitely.
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1
#define here your connection string for each database
#DB1.Url=jdbc:oracle:thin:@server.domain.example.com:<LISTENER_PORT>:DB1
DB_QM.Url=jdbc:oracle:thin:@ip:1521:server_name
#确保有jdk环境,因为这里是通过JDBC连接的
#DB1.User=zabbix
DB_QM.User=qm
#DB1.Password=zabbix_password
DB_QM.Password=qm
#DB的用户和密码,可创建zabbix用户,并赋予权限,如下文(这里直接用dba权限用户)
#Those values are optionals if not specified Orabbix is going to use the general values
DB_QM.MaxActive=10
DB_QM.MaxWait=100
DB_QM.MaxIdle=1
DB_QM.QueryListFile=./conf/query.props

#DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2
#DB2.User=zabbix
#DB2.Password=zabbix_password
#DB2.QueryListFile=./conf/query.props

#DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3
#DB3.User=zabbix
#DB3.Password=zabbix_password
#DB3.QueryListFile=./conf/query.props
#注销未用到的DB连接
    PS:需要注意的是DatabaseList=DB1指的是被监控服务器的名称,该名称要和zabbix server界面中的机器名称保持一致,该配置文件中后续所引用的设定都以该名称为准。
DB1.Url指定的是被监控服务器的连接信息

利用orabbix监控oracle首先要创建一个oracle用户,利用该用户获取相关信息。
创建用户
CREATE USER ZABBIX
IDENTIFIED BY <REPLACE WITH PASSWORD>
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
    授权:

GRANT ALTER SESSION TO ZABBIX;
GRANT CREATE SESSION TO ZABBIX;
GRANT CONNECT TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;
GRANT SELECT ON V_$INSTANCE TO ZABBIX;
GRANT SELECT ON DBA_USERS TO ZABBIX;
GRANT SELECT ON V_$LOG_HISTORY TO ZABBIX;
GRANT SELECT ON V_$PARAMETER TO ZABBIX;
GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO ZABBIX;
GRANT SELECT ON V_$LOCK TO ZABBIX;
GRANT SELECT ON DBA_REGISTRY TO ZABBIX;
GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;
GRANT SELECT ON V_$SYSSTAT TO ZABBIX;
GRANT SELECT ON V_$PARAMETER TO ZABBIX;
GRANT SELECT ON V_$LATCH TO ZABBIX;
GRANT SELECT ON V_$PGASTAT TO ZABBIX;
GRANT SELECT ON V_$SGASTAT TO ZABBIX;
GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;
GRANT SELECT ON V_$PROCESS TO ZABBIX;
GRANT SELECT ON DBA_DATA_FILES TO ZABBIX;
GRANT SELECT ON DBA_TEMP_FILES TO ZABBIX;
GRANT SELECT ON DBA_FREE_SPACE TO ZABBIX;
GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX;
    如果是oracle11g的数据库版本,还需要执行下面的语句开放ACL的访问控制,否则在监控的过程中有部份内容无法正常显示(例于数据库版本,数据库文件大小等),而且orabbix的日志显示中也会有错误提示。需要执行下面的语句:
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服务:
启动服务
/opt/init.d/orabbix start

/opt/orabbix/run.sh
    通过 tail -f /opt/orabbix/logs/orabbix.log日志查看报错信息。
orabbix相关的模板文件,在/opt/orabbix/template下面。导入Orabbix_export_full.xml这个就可以,如果导入的时候出现导入失败Host group "Templates"already exists,将orabbix的xml里面的<group>TEMPLATES</group>改成<group>TEMPLATES_ORACLE</group>,然后重新导入import即可。
在oracle模版上添加linux基础监控
这个oracle模版里面只有oracle的监控,对于oracle服务器的基础监控比如磁盘、io等等是没有的,这个时候我们需要在这个oracle模版上引入linux监控。进入All templates -> Template_Oracle -> Linked templates ->Link new templates选框,点击Select按钮,在进去的界面里面选择Template OS Linux模版,然后退出,点击Add按钮,添加到Linked templates里面,之后点击Update按钮更新完成。

参考:http://www.smartmarmot.com/wiki/index.php?title=Orabbix