关于Orabbix
产品描述
Orabbix是一个插件,旨在与Zabbix Enterprise Monitor配合使用,为Oracle数据库提供多层监控,性能和可用性报告和度量,以及服务器性能指标。
它提供了一种有效的机制,可以从众多Oracle实例中获取数据,并为Zabbix服务器提供监视和性能指标的这些信息。然后,您可以利用Zabbix的报告功能收集所有数据,并为利益相关者提供图表和服务水平协议指标等分析。
当前分发包含一组预定义的模板,这些模板包含初始部署时的警报和图形功能。但是,这些可以根据您的需求和数据/监控要求进行微调。
图1 - Orabbix架构
它能监控什么?
以下是Orabbix能够监控的一些示例:
数据库版本(即包的有效性)
存档(使用趋势分析存档日志生成)
事件等待(文件I / O,单块读取,多块读取,直接路径读取,SQLNet消息,控制文件I / O,日志写入)
命中率(触发器,表/程序,SQL区域,正文的命中率)
逻辑I / O(逻辑I / O上的服务器性能:当前读取,一致读取,块更改)
物理I / O(重做写入,数据文件写入,数据文件读取)
PGA
SGA(特别是;固定缓冲区,Java池,大型池,日志缓冲区,共享池缓冲区高速缓存)
共享池(池字典缓存,池可用内存,库Chache,SQL区域,MISC。)
引脚命中率(Oracle库缓存引脚是由与库缓存的争用引起的,用于存储SQL可执行文件以供重用的区域)
会话/流程
会话(活动会话,非活动会话,系统会话)
DBSize / DBFileSize(DBSize数据库的大小确实使用了空间和Filesize)
下载地址:http://www.smartmarmot.com/product/orabbix/download/
安装步骤
安装 Java 环境
1.查看yum库中都有哪些jdk版本
2.选择版本,进行安装
yum search java grep|sdk
yum install java-1.7.0-openjdk //安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
将Orabbix下载到您的Zabbix服务器
在Zabbix服务器上,将Orabbix解压缩到:/ opt / orabbix
将文件/opt/orabbix/init.d/orabbix复制到/etc/init.d/orabbix
对以下文件增加执行权限:
/etc/init.d/orabbix /opt/orabbix/run.sh
为Orabbix创建用户(ZABBIX)以访问Oracle数据库。您可以使用以下脚本:(12c 创建用户需要使用create user c##zabbix ...)
CREATE USER ZABBIX IDENTIFIED BY <REPLACE WITH PASSWORD> 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;
注意如果您需要具有可用最小授权的Orabbix用户(ZABBIX),您可以使用以下脚本:
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;
注意 :如果您使用的是Oracle 11g,则需要添加以下内容:
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;
您可以通过运行来验证以上内容是否正确:
select utl_inaddr.get_host_name('127.0.0.1') from dual;
对于RedHat 、Centos上的此示例,请运行:
chkconfig --add orabbix
配置
现在我们需要配置您的Orabbix设置。列出下面的标记,因为它们将出现在相应的配置文件中。您需要修改的第一个是config.props文件,用于定义Zabbix和Oracle的连接属性。
cp /opt/orabbix/conf/config.props.example /opt/orabbix/conf/config.props
配置文件如下: #comma separed list of Zabbix servers ZabbixServerList=ZabbixServer1,ZabbixServer2 ZabbixServer1.Address=127.0.0.1 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 #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:@192.168.1.48:1521:orcl DB1.User=byzc DB1.Password=byzc #Those values are optionals if not specified Orabbix is going to use the general values DB1.MaxActive=10 DB1.MaxWait=100 DB1.MaxIdle=1 DB1.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
注意:实例的名称必须与在Zabbix中指定主机名称一致
配置完成后,重启 orabbix 服务
/etc/init.d/orabbix restart
查看日志有没有报错
tail -f /opt/orabbix/logs/orabbix.log
监控成功!
dbsize、 DB Files Size 没有值,因为并没有监控着。
修改 /opt/orabbix/conf/query.props
在 QueryList 中增加 key:
dbfilesize,dbsize,
在文件最后增加
dbfilesize.Query=select to_char(sum(bytes/1024/1024/1024), 'FM99999999999999990') retvalue from dba_data_files dbsize.Query=SELECT to_char(sum( NVL(a.bytes/1024/1024/1024 - NVL(f.bytes/1024/1024/1024, 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')
重启orabbix,查看日志是否报错。
监控oracle 12c 会报错:
ORA-28040: 没有匹配的验证协议
在安装路径中找到 sqlnet.ora 文件,我的位于E:\app\bril\product\12.2.0\dbhome_1\network\admin
在文件的最后添加 SQLNET.ALLOWED_LOGON_VERSION=8 就解决了;(不需要重启oracle)
在 Centos image 下安装 orabbix 会报错:
/etc/rc.d/init.d/functions: No such file or directory
解决:yum install initscripts -y
然后报错:
/etc/sysconfig/network : No such file or directory
解决:echo "NETWORKING=yes" >/etc/sysconfig/network
Comments (0)