美文网首页
zabbix监控Oracle之orabbix配置

zabbix监控Oracle之orabbix配置

作者: 桩i | 来源:发表于2017-11-20 14:32 被阅读0次

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

    产品说明

    Orabbix是一个插件,它是与Zabbix 配合,对Oracle数据库提供多层监视、性能和可用性报告和度量,以及服务器性能指标。它提供了从大量Oracle实例获取数据的有效机制,并向Zabbix服务器提供监视和性能指标的信息。然后,您可以利用Zabbix的报告功能来收集所有数据,并为涉众提供图表和服务级别协议度量等分析。当前的发行版包含一组预定义的模板,这些模板结合了初始部署的警报和绘图功能。当然,你也可以根据自身需求和数据/监视需求来设计自己的监控。

    它可以监控什么?

    下面是一些orabbix监控的例子:

    数据库的版本;

    归档日志的趋势数据;

    处于等待状态的事务(i.e  Files I/O, single block read, multi-block read, direct path read, SQLNet Messages, Control file I/O, Log Write);

    命中率((i.e  Hit Ratio on Triggers, Tables/Procedures, SQL Area, Body);

    逻辑I/O(Server performance on Logical I/O of: Current Read, Consistent Read, Block Change);

    物理I/O(Redo Writes, Datafile Writes, Datafile Reads);

    PGA;

    SGA(In particular; Fixed Buffer, Java Pool, Large Pool, Log Buffer, Shared Poolm Buffer Cache);

    共享池(Active Sessions, Inactive Sessions, System Sessions);

    数据库大小/数据库文件大小(DBSize size of database really used space and of Filesize);



    安装要求

    zabbix server版本1.8以上;

    Java Runtime Environment 6;

    目前已知的成功测试了Oracle主机平台

    RHEL5.X (CentOS 5.4 & 5.5)

    Windows 2003 (with Java SE 1.6)

    HP-UX 11.31

    AIX 5.3

    目前已知的测试Oracle版本

    10g

    10.2

    注意:不需要为orabbix安装任何类型的客户端

    假设

    安装说明是基于对大多数 unix 部署(即RHEL / CentOS)的指令而创建的,如果你的环境比较特殊,需要做一些修改。

    这个说明是基于俩台主机来的,一台zabbix服务器端,一台Oracle数据库。如果你打算监控zabbix服务器上的Oracle时,步骤是一样的,只需要对一些较小的连接信息进行修改。

    这些步骤也包括你需要配置orabbix来监控一个新安装的或者安装配置好的Oracle数据库。安装步骤将为Zabbix用户提供所有表的访问权限,这将包括在执行时出现的任何用户表。如果你不希望Zabbix访问数据库中的特定表或资源,则需要根据要求设置拒绝Zabbix用户访问权限。详细信息请咨询您的DBA,因为这超出了这些说明的范围。

    安装步骤(orabbix是安装在服务器端的)

    在zabbix server 下载orabbix,地址:https://sourceforge.net/projects/orabbix/files/orabbix-1.2.3.zip/download    需要翻墙

    解压到/opt/orabbix文件夹下;      PS:可以是别的路径

    复制/opt/orabbix/init.d/orabbix 到/etc/init.d/orabbix 

    给orabbix这个文件可执行权限;

    /etc/init.d/orabbix

    /opt/orabbix/run.sh

    创建Oracle用户

    为orabbix访问Oracle数据库创建一个用户(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;

    注意:

    如果你想创建的这个用户权限最小,可以参看以下方案:

    CREATE USER ZABBIX

    IDENTIFIED BY

    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,你需要做以下操作放开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;

    你可以运行以下命令来验证正确性:

    select utl_inaddr.get_host_name('127.0.0.1') from dual;

    (Redhat)将orabbix设置为开机自启动:

    chkconfig --add orabbix

    chkconfig --list                    #检查

    在Zabbix中为您计划监视的DB实例创建一个主机条目,并导入在:/ opt/orabbix/ template中发现的模板

    这一步可以参考zabbix官网:http://www.zabbix.com/documentation.php

    orabbix配置文件

    在/opt/orabbix/conf/ 目录下有个叫config.props.sample的文件,将这个文件复制并改名为config.props

    ]# mv config.props.sample config.props

    配置文件如下:

    #comma separed list of Zabbix servers

    ZabbixServerList=ZabbixServer1,ZabbixServer2    #zabbixserver1、zabbixserver2定义zabbix服务器的名字,与下面的zabbixserver1和2对应

    ZabbixServer1.Address=192.168.10.11          #上面定义的zabbixserver1的IP地址

    ZabbixServer1.Port=10051                              #zabbixserver1的端口

    # ZabbixServer2.Address=IP_ADDRESS_OF_ZABBIX_SERVER    #zabbixserver2默认是注销的,如果你有多个zabbixserver,选填这个

    # ZabbixServer2.Port=PORT_OF_ZABBIX_SERVER

    #pidFile

    OrabbixDaemon.PidFile=./logs/orabbix.pid            #Pid文件的位置

    #frequency of item's refresh

    OrabbixDaemon.Sleep=300                                 # 监控项的刷新间隔(不需修改)

    #MaxThreadNumber should be >= than the number of your databases

    OrabbixDaemon.MaxThreadNumber=100          #orabbix守护进程的最大线程数

    #put here your databases in a comma separated list

    DatabaseList=DB1,DB2,DB3                          #  数据库列表(zabbix中的主机名必须用这个儿定义的名字)

    #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   

    DB1.User=zabbix

    DB1.Password=9133

    DB1是DatabaseList=DB1,DB2,DB3 上面这一项列出的名字

    server.domain.example.com是你Oracle服务器的主机名或者IP地址(建议为IP地址)

    <LISTENER_PORT>是你数据库的端口

    DB1:是Oracle数据库的SID

    下面的你在Oracle里创建的允许orabbix采集数据的账号和密码,DB1与上面保持一致

    #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::DB2

    DB2.User=zabbix

    DB2.Password=zabbix_password

    DB2.QueryListFile=./conf/query.props

    DB3.Url=jdbc:oracle:thin:@server3.domain.example.com::DB3

    DB3.User=zabbix

    DB3.Password=zabbix_password

    DB3.QueryListFile=./conf/query.props

    配置文件补充

    QueryListFile=/opt/orabbix/conf/query.props      #查询文件的位置

    <DBNAME>.QueryListFile=./confQueryTest.props       #定义单个数据库的查询文件位置,可以使用相对路径

    对于不同的数据库使用不同的查询文件,或者每个数据库都有一个查询文件池,这在不同的Oracle版本(如果有不同版本)或生产环境、测试环境、开发环境等不同环境下使用时有奇效。

    <DB_NAME>.ExtraQueryListFile ==./confQueryTest_2.props     

    #官网是这样定义的:adds another custom query to the default query file.If there are duplicates the ExtraQueryListFile will override them

    query.props查询文件

    可以在这个文件中设置自定义查询项。比如你要监控公司一些业务逻辑之类的定制监控项

    创建的每个查询必须有一个item名,必须是独一无二的。zabbix server会识别这个item,就像其他item一样,不能冲突。

    QueryList=queryName1,queryName2,queryName3       #定义item名,以逗号分隔

    customQueryItemName.Query=yourQueryHere         #自定义查询语句结尾不要加封号

    customQueryItemName.NoDataFound=none             #定义无查询结果时的返回值(默认是none)

    customQueryItemName.Period=<Express a period in minute>   #自定义语句的执行周期,例如:数据库的版本

    条件查询

    customQueryItemName.ACTIVE=[true|false]

    你可以定义一个查询返回值,来判断指定的查询语句是否要执行,如下:

    archive.Query=select round( A.LOGS*B.AVG/1024/1024/10 ) \

    from ( SELECT  COUNT (*)  LOGS FROM V$LOG_HISTORY WHERE \

    FIRST_TIME >= (sysdate -10/60/24)) A, \

    ( SELECT Avg(BYTES) AVG,  Count(1), Max(BYTES) Max_Bytes,Min(BYTES) Min_Bytes  FROM  v$log) B

    archive.RaceConditionQuery=select value \

    from \

    v$parameter where name='log_archive_start'

    archive.RaceConditionValue=FALSE

    在上面的例子中,如果archive.RaceConditionQuery这个查询返回的值是archive.RaceConditionValue定义的值,则执行archive.Query查询语句,archive.RaceConditionValue这个值是TRUE时才查询,也就是只有当Oracle数据库处于归档模式时才执行归档日志查询。

    <QueryName>.Trim=[true|false]

    <QueryName>.AddSpaces=[true|false]

    <QueryName>.ExcludeColumnsList=[1,2,3,..n]

    <QueryName>.Period

    <QUERY_NAME>.WhenNotAlive = <VALUE>

    DefaultUser = <USERNAME>

    DefaultPassword =<PASSWORD>

    <QueryName>.ExtraQueryListFile =<VALUE>

    <QUERY_NAME>.WhenNotAlive =<VALUE>

    /opt/orabbix/conf/log4j.properties在这个文件中可以设置orabbix的日志格式,日志格式和apache的一样

    i.e

    如果您有两个主机RAC1和RAC2和一个实例RACINST,你可以在orabbix配置文件中这么写:

    RACINST.Url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=RAC1.EXAMPLE.COM) \

    (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=RAC2.EXAMPLE.COM)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=RACINST)))

    相关文章

      网友评论

          本文标题:zabbix监控Oracle之orabbix配置

          本文链接:https://www.haomeiwen.com/subject/dzgfsxtx.html