zoukankan      html  css  js  c++  java
  • orabbbix query.props 格式不对导致抓取不到数据

    问题现象:

    新加入数据库监控,发现新加的主 机都没有采集到orabbix 的所有数据,系统数据有采集成功。旧的监控数据库不受影响

    看上去应该是连接上数据库 采集的数据都是为空的导致的,连接用户的权限没有问题,

    cd orabbix/logs 

    grep java.lang.NullPointerException *.log


    20-05-13 15:53:55,961 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,962 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,981 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,982 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,983 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,989 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,990 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,991 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,991 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,992 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,993 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,994 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:55,995 [main] ERROR Orabbix - Error on Querybox java.lang.NullPointerException
    2020-05-13 15:53:56,092 [pool-1-thread-2] ERROR Orabbix - Error on dbJob for database pdbdb05 QueryList error: java.lang.NullPointerException

    2.对比配置文件

    2.采集不到数据的的配置信息,2者并未看到异常,用sqlplus 链接数据库也是正常连接上的。
    pdbdb05.User=user
    pdbdb05.Password=userdb11
    pdbdb05.Url=jdbc:oracle:thin:@10.0.102.22:1528:db
    pdbdb05.MaxActive=10
    pdbdb05.MaxWait=100
    pdbdb05.MaxIdle=1
    pdbdb05.ExtraQueryListFile=./conf/query_db.props
    pdbdb05.QueryListFile=./conf/query_dg.props

    正常采集的配置信息,
    pdbdb03.User=user
    pdbdb03.Password=userdb11
    pdbdb03.Url=jdbc:oracle:thin:@db:1528:db
    pdbdb03.MaxActive=10
    pdbdb03.MaxWait=100
    pdbdb03.MaxIdle=1
    pdbdb03.ExtraQueryListFile=./conf/query_db.props
    pdbdb03.QueryListFile=./conf/query.props

    3.在试过各种方法之后,按照附件中的方法恢复 query.props 和 query_dg.props 后,重启orabbix 问题得到修复。

    方法如下:

       所以我在新服务器上调试成功的Orabbix文件query.properties,在备份之后我就拷贝到了原来的目录下,这样连接信息不变,模板也不变,监控项保留了绝大部分,整个Orabbix的监控又跑起来了。

    总结如下:

    手工修改query.prop 和 query_dg.props 前,记得对文件备份,(为何修改文件,导致文件读取失败,原因未知,但是这2个文件对格式要求很严格的)

    因为手工修改后,orabbix 不重启的话,orabbix 还是读的旧的缓存文件,因此不会有监控数据采集不到的问题,但是新加入监控db 主机后,就会使用的

    query.props 数据,这个时候就会带来采集不到的数据, 这个时候,重启orabbix ,读取新的query.pros 还是会有同样的问题。

    只有恢复才能解决问题

    后继,每周对这2个文件query.prop 和 query_dg.props  定时做备份一次,应该可以有效的规避该问题。

    附件中。

    ###感谢

    https://blog.csdn.net/weixin_33712987/article/details/90251253

     自从使用了Orabbix监控Oracle以来,很多工作都能够通过这种配置可控的方式处理,有些问题是潜在问题,有些是遗留问题,多多少少还是提高了效率。

       最近涉及机房搬迁,我们的Zabbix服务器也在迁移计划中,而因为部署的规模也不大,所以Orabbix和Zabbix Server放在了一起,结果搬迁之后问题就来了,搬迁之后开通了网络防火墙的前提下,系统层面的监控Zabbix Agent表现正常,而原本可用的Orabbix现在没有任何监控信息,

       在这种监控基本失效的情况下,我总是不断的收到这样的报警信息,对于一个核心业务而言,这类报警会很敏感,

    ZABBIX-监控系统:
    ------------------------------------
    报警内容: Alive xxxx
    ------------------------------------
    报警级别: PROBLEM
    ------------------------------------
    监控项目: Alive:0
    ------------------------------------
    报警时间:2017.07.21-22:25:40

       查看Orabbix的日志信息,发现在连接正常的情况下,最后会抛出一个空指针异常。

    [root@orabbx_monitor logs]# tail -f orabbix.log
     2017-07-22 23:15:43,168 [main] INFO  Orabbix - maxIdleSize=1
     2017-07-22 23:15:43,168 [main] INFO  Orabbix - maxIdleTime=1800000ms
     2017-07-22 23:15:43,168 [main] INFO  Orabbix - poolTimeout=100
     2017-07-22 23:15:43,168 [main] INFO  Orabbix - timeBetweenEvictionRunsMillis=-1
     2017-07-22 23:15:43,169 [main] INFO  Orabbix - numTestsPerEvictionRun=3
     2017-07-22 23:15:43,774 [main] INFO  Orabbix - Connected as ORABBIX
     2017-07-22 23:15:43,778 [main] INFO  Orabbix - --------- on Database -> test

    ERROR Orabbix - Error on dbJob for database test  QueryList error: java.lang.NullPointerException
    INFO  Orabbix - Done with dbJob on database testQueryList elapsed time 1089 ms

      在这种情况下,分析问题也变得很艰难,因为目前还不知道到底是哪里的问题,到底是Zabbix Server,还是Agent还是Orabbix本身。

      这个空指针异常很模糊,通过这些信息,我们基本可以断定Zabbix Server是没有问题的,如果有问题Zabbix Agent的系统监控修直接会失效,而Orabbix的角色有点类似于一个Zabbix AGent,本质上是使用JDBC的方式来发送SQL来达到监控的需求。

       所以我的注意力自然而然到了Orabbix上面,首先我把监控的数据库列表精简为一到两个,这样方便排查问题。

       经过一番排查,大体的收获就是Zabbix Server端的Zabbix Agent没启动,Orabbix还是需要的。另外一个就是因为服务器搬迁,IP信息发生变化,所以原本的本机的防火墙信息需要补充,比如自己给自己开通10050端口的访问,因为这台服务器是Zabbix Server,也是一台服务器,所以也要监控自己,而Orabbix是需要这个Zabbix Agent的,还有一点也很重要,那就是在/etc/hosts里调整IP信息。

       做了这些之后重启Orabbix,发现问题依旧,重启了Zabbix Agent,Zabbix Server,问题依旧。

       而且我发现日志信息很简单,开启了Debug模式之后,日志信息虽然多了,但是都是失败的信息,暂时没有发现有价值的信息。

       所以我决定通过对比来确定问题的边界。

       Orabbix本质上架构虽然简单,官方提供的图形如下:

       

       但是出了问题之后信息很有限,要想得到更多的支持就有些难了,我搜了一圈,关于Orabbix的文章,十篇里面有八篇都是我写的,这种情况真是很尴尬,看来只能自己硬着头皮继续分析了。

       目前的情况没有进展,数据库层面的监控项都没有生效,所以一个重点的方向就是保证首先Orabbix可用,这个怎么办呢,在当前的环境中调试总是没有进展,那我就干脆重新搭建一套,搭建起来大概10多分钟就搞定了,安装Java,解压orabbix软件包,启动。

       数据库和Orabbix的连接信息配置是通过Orabbix里的config.properties文件来控制的,而监控项的信息是通过query.properties来控制的,而在Zabbix里面orabbix的监控项是通过模板来控制的,所以Orabbix的问题分析就主要是通过这三个文件来得到更多的信息。

       配置好Orabbix之后,监控项我保留了默认的,发现Orabbix竟然可用了,这就说明config.properties文件没有问题。

       而当我把监控项的文件query.properties替换为目前的文件时,启动Orabbix竟然抛出了刚开始的错误,所以可以说明问题出在了query.properties文件上。

        那么问题继续如何定位呢,我恢复了query.properties文件之后,监控又恢复了正常,但是我定制了大量的监控项,这些在默认的模板中是没有的,是不是监控模板出了问题呢。

        这种情况下,我做了一种中和,那就是使用默认的模板,然后先把一个定制监控项加进去,结果发现这个监控项竟然取不到数据。在Zabbix中错误信息如下:

    看起来是数据类型不匹配造成的,我把数据类型改为文本,最后发现这个监控项的输出就是一个空字符,所以转换类型的时候出了问题。

    那以前怎么是好的,是不是Orabbix向Zabbix推送数据的时候有问题。监控项是使用Zabbix trapper来推送的,那么我们可以使用zabbix_sender来推送一条信息试试是否成功,比如下面的命令。

    ./zabbix_sender  -z 10.129.xx.xx -p 10051 -s "test" -k db_time -o "test"
    info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000051"
    sent: 1; skipped: 0; total: 1

       其中10.129.xx.xx是IP的信息,10051是端口的信息,test是对应的数据库的实例名,也就是对应Zabbix里面的一个主机名,db_time是监控项的名字,最后-o "test"就是发送的信息是test

    结果显示这个信息推送还是正常的,那我们就逐步缩小排查范围,基本排除了模板的问题,因为信息推送是没有问题的。

       所以一圈排查下来就是query.props文件的问题了,这个空指针的问题看起来很诡异,但是我们可以在这种情况下先折中处理,比如先配置几个优先级很高的监控项,让监控生效,然后在后期对这个监控列表做出很细致的调整。有一点可以确定的是,这个Orabbix自从启动以来就没有停过,所以不排除Orabbix本身的检查机制是否在重启之后有些验证就过不去。

       所以我在新服务器上调试成功的Orabbix文件query.properties,在备份之后我就拷贝到了原来的目录下,这样连接信息不变,模板也不变,监控项保留了绝大部分,整个Orabbix的监控又跑起来了。

        比如下面的这个DB time监控

  • 相关阅读:
    C#删除只读文件
    在超链接href中实现form的提交
    C#中复制数组
    C#判断字符串中是否包含一个子字符串是可以直接使用Contains()方法
    C#使用System.xml.linq来生成XML文件
    C# 获取SHA256码
    C#中要使ListBox使用AddRange()时,能够触发SelectedValueChanged事件
    报错:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop bei
    elementUI el-select 中disabled设置
    实现element-ui中table点击一行展开
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/12884115.html
Copyright © 2011-2022 走看看