zabbix 监控 oracle 详细步骤

作者:admin 发布:2018-12-19 浏览:2492次

关于Orabbix

产品描述

Orabbix是一个插件,旨在与Zabbix Enterprise Monitor配合使用,为Oracle数据库提供多层监控,性能和可用性报告和度量,以及服务器性能指标。
它提供了一种有效的机制,可以从众多Oracle实例中获取数据,并为Zabbix服务器提供监视和性能指标的这些信息。然后,您可以利用Zabbix的报告功能收集所有数据,并为利益相关者提供图表和服务水平协议指标等分析。
当前分发包含一组预定义的模板,这些模板包含初始部署时的警报和图形功能。但是,这些可以根据您的需求和数据/监控要求进行微调。

Orabbix架构

图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)