玩转 Zabbix: 用 LLD 完全自动化监控 Oracle

Posted 运维帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转 Zabbix: 用 LLD 完全自动化监控 Oracle相关的知识,希望对你有一定的参考价值。

上次写完《 》后,近期又遇到一个用 Zabbix 监控 Oracle 的需求,有一些心得体会,记录一下以备后用。


这次还是用到了 Zabbix 的 LLD 功能,这个功能可谓是:无 LLD 不 Zabbix ,强大到让人想哭。


一、Orabbix 和 Zabora 的问题


一开始用 Orabbix 监控 Oracle,这个插件的工作模式是配置好实例信息,然后起一个JAVA程序,这个进程会根据定义好的查询语句获取到数据,用Trapper模式发送给 Zabbix 收集并展现。


但是用 Orabbix 监控 Oracle 存在几个问题:

1、JAVA程序需要 JRE 环境,但实际情况是:并不是所有机器都安装了JRE。

2、每个实例都需要在 Zabbix 里配置一个HOST,这是一个非人性化的设计。

3、Orabbix 不在 Zabbix 框架内,不受 Zabbix 统一管理,要想升级、配置的话都麻烦要死。

4、不能自动发现实例的所有表空间,我们非常需要这个功能。

5、最可怕的是网上的好多中文文档全有问题,走了很多弯路。


用了一段 Orabbix 时间后,果断放弃,目光转向了 Zabora 插件,这是用 Shell 写的,Zabora 设计思路还可以,不过写的有点简陋,也不能满足我的需求。有兴趣的朋友可以在全球最大的同性交友网站github上搜索:zabora


所以,我打算重新造这个轮子。


二、监控 Oracle 的需求


1、可以自动发现所有数据库实例并监控

2、可以自动发现所有数据库实例里的表空间,监控大小及使用率

3、可以灵活扩展监控选项

4、可以方便升级(如果在zabbix框架里,我已经实现里自动升级功能)


三、设计及功能详解


首先来看一个 Oracle 数据库的架构,和我们常用的mysql有一点不一样。

在一个数据库里可以有多个实例,每个实例下面包括多个用户和多个表空间。




我们最终要监控的 item 至少应该知道以下几个信息:

实例名字、数据库用户名、数据库密码、管理数据库的操作系统用户及环境文件,如果要监控表空间,还需要表空间的名字。


听起来还是比较晕的,下面我来梳理一下这些信息。


四、几个主要程序的作用:


1) key.conf 文件中定义了4个key


玩转 Zabbix: 用 LLD 完全自动化监控 Oracle

第一个key用来发现有几个实例

第二个key用来获取实例里需要监控的值

第三个key用来发现所有实例里所有的表空间

第四个key用来获取表空间的大小和使用率


2) oracle.conf 定义了实例的基本信息


玩转 Zabbix: 用 LLD 完全自动化监控 Oracle
其实也可以没有这个文件,但是需要满足一些条件,完全做到关联模板就自动发现并监控。


但是需要两个条件,有兴趣的朋友可以试试:

  • 用程序发现所有实例及运行实例的用户,这个简单

    ps -ef|grep smon|grep -v grep|awk '{print $8}'|awk -Fora_smon_ '{print $2}'

  • 为 Zabbix 在所有数据库里创建统一的监控账号和密码,然后在获取数据里的shell定义或者从Zabbix web传参给获取数据的shell也行。


3、discover_oracle_db.sh

发现所有实例并输出JSON格式数据给Zabbix


4、discover_oracle_tb.sh

发现所有实例及表空间并输出JSON格式数据给Zabbix


5、sql目录下的*.sql

sql目录下的所有sql文件都是用到的执行语句,所以在shell里你看不到具体的执行语句,都是调用的这里的,在shell里的调用语法大概都是这样:


sqlplus -s ${DB_USER}/${DB_PASS} @/etc/zabbix/zabbix_agentd.d/script/sql/xxxxx.sql


如果你需要扩展监控,还需要添加一个对应的sql语句


五、在Zabbix Web里配置监控项


1、添加两个自动发现,一个数据库实例自动发现,一个数据库表空间自动发现。

2、添加需要监控的item及trigger等


六、Latest data里的效果


三个Applications分组


玩转 Zabbix: 用 LLD 完全自动化监控 Oracle


所有实例里的监控项


玩转 Zabbix: 用 LLD 完全自动化监控 Oracle

所有实例里所有表空间的使用率


玩转 Zabbix: 用 LLD 完全自动化监控 Oracle


理论上这套架构设计可以满足多数据库实例(单实例,集群实例)、多表空间的自动发现及监控需求。


代码我需要整理一下发布,因我不太懂Oracle,谁要是很懂,可以帮我写一些oracle监控语句,我丰富一下监控项,加我微信yunweibang008


在此感谢搜狐畅游的杨建荣同学,他也是业内知名 Oracle 专家,帮我贡献了很多Oracle sql语句,下面是他的个人订阅号,有很多干货,值得关注。



近期技术活动

今年8月18-19号,由极客邦InfoQ、听云联合主办,运维帮协办的2016APMCon中国应用性能管理大会将在北京正式拉开帷幕,大会邀请了来自LinkedIn、支付宝、腾讯、京东、网易、新浪、天猫、1号店等公司的技术负责人,共同探讨APM相关的性能优化、技术方案以及架构细节,为更多的行业从业者传递应用架构优化和创新内容。点击阅读原文,了解详情。

输入ywb优惠码,可以优惠500RMB


输入ywb优惠码,可以优惠500RMB

↓↓↓

以上是关于玩转 Zabbix: 用 LLD 完全自动化监控 Oracle的主要内容,如果未能解决你的问题,请参考以下文章

用powershell脚本实现zabbix LLD 监控IIS站点

Zabbix实战-简易教程--低层次发现(LLD)

Zabbix通过MegaCli实现对LSI Raid卡硬盘监控(LLD)

zabbix低级自动发现之mysql多实例

Zabbix用好LLD,立马感觉高大上许多

青蛙学Linux—Zabbix Web使用之Zabbix发现功能③低级别发现