zabbix监控orace

Posted sende

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix监控orace相关的知识,希望对你有一定的参考价值。


orabix是目前网络上能找到用zabbix监控oracle最多的文章。orabix项目很久没更新,监控得到的数据不甚满意,没有再深入的去了解。

之前有过用shell写脚本在zabbix上监控业务数据的经历,第一想法就是 zabbix-agent Userparameter 自定义监控。鉴于目前python在运维方面很火,用python自己写一个脚本去抓取数据,通过zabbix-agent Userparameter调用脚本获取oracle的数据,这样的方案一来可以提升一下自己写python的能力,二来需要监控那些数据可以自己定义更灵活。

开始之前先看看github上别人怎么做的,找到pyora(https://github.com/danilochilene/Pyora)这个项目,不用自己从头开始了,先安装上,做适当的扩展就可以。


一、监控部署思路
1、pyora方案框架
pyora 通过在配置主机时添加宏保存数据库服务器IP,用户,密码,数据库名作为参数传给脚本,只需要在一个地方部署,添加主机的时候用宏传递这些参数实现一次部署监控多数据库。

2、部署方式1(作为zabbix服务器扩展脚本运行)
将pyora放入 zabbix externalscripts文件夹(/usr/lib/zabbix/externalscripts/)

3、部署方式2(作为zabbix-agent 用户扩展运行)
在zabbix-agent 配置文件添加一行:
UserParameter=pyora[*],/usr/bin/python /usr/lib/zabbix/externalscripts/pyora --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

 

二、安装步骤
1、准备环境:centos7、zabbix4.0

2、安装cx_Oracle、oracle 客户端

用rpm包安装就可以,安装完成后添加环境变量,cx_Oracle,oracle版本注意要同32位或者64位


rpm下载地址,共三个安装包,都要下载安装:
cx_Oracle x86_64:
https://jaist.dl.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm


oracle_instantclient:
https://download.oracle.com/otn_software/linux/instantclient/195000/oracle-instantclient19.5-basic-19.5.0.0.0-1.x86_64.rpm
https://download.oracle.com/otn_software/linux/instantclient/195000/oracle-instantclient19.5-devel-19.5.0.0.0-1.x86_64.rpm

 

export ORACLE_HOME=/usr/lib/oracle/19.5/client64/
export TNS_ADMIN=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

 

 3、下载pyora

下载地址:https://codeload.github.com/bicofino/Pyora/zip/master
解压得到pyora.py文件和zabbix-template文件夹

4、创建oracle数据库用于监控的用户zabbix

CREATE USER ZABBIX IDENTIFIED BY 123456 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
GRANT CONNECT TO ZABBIX;
GRANT RESOURCE TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;
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;

 

5、执行脚本验证:

./pyora.py --username zabbix --password 123456 --address 192.168.111.170 --database sjtools show_tablespaces

 技术图片

 

6、zabbix联调,前面有提到,zabbix调用脚本有两个方案,这两个方案调用方式不一样,模版监控项读取的方式不一样,所以模版也不同。两个方案选一个就可以,如果是zabbix 4.0 建议用下面的方案一。

6.1、方案一:zabbix服务器扩展脚本

a、导入模版 Pyora_ExternalCheck_4.0

技术图片

 得到 Custom - Service - Oracle 模版 

技术图片

 打开模版可以看到监控项键值格式 pyora["--address","{HOST.CONN}","--username","{$USERNAME}","--password","{$PASSWORD}","--database","{$DATABASE}",bufbusywaits]

技术图片

 用到四个宏:

{HOST.CONN} 创建主机时主机的地址,不需要单独创建
{$USERNAME} oracle数据库拥有监控的用户名,用前面创建的zabbbix,需要在主机的宏里添加
{$PASSWORD} oracle数据库用户的密码
{$DATABASE} 数据库名称


b、将pyora.py文件放入 zabbix 服务器的externalscripts文件夹(/usr/lib/zabbix/externalscripts/)并改名为pyora,确保文件有执行权限。完成后用安装步骤中的方法验证脚本是否正常运行。

c、添加主机
主机IP填数据库的IP,模版链接刚导入的 Custom - Service - Oracle 模版,添加三个宏。因为脚本是在服务器端执行的,如果不需要监控其他项目oracle服务器可以不安装zabbix-agent。

  技术图片

 

 技术图片

 6.2、zabbix-agent调用方案用Pyora_ExternalCheck.xml 模板

a、导入模版 Pyora_ExternalCheck 得到 Custom - Service - Oracle 模版(同方案一,模版文件不一样)

打开模版可以看到监控项键值格式 pyora[{$USERNAME},{$PASSWORD},{$ADDRESS},{$DATABASE},bufbusywaits] 和方案一读取方式是不一样的。

技术图片

 用到四个宏:

{$ADDRESS} 数据库服务器IP
{$USERNAME} oracle数据库拥有监控的用户名,用前面创建的zabbbix,需要在主机的宏里添加
{$PASSWORD} oracle数据库用户的密码
{$DATABASE} 数据库名称

注:这个模版导入后在zabbix4.0不能直接使用,默认监控类型为外部检查需要将类型改为zabbix客户端,4.0之前不知道支不支持。

b、修改zabbix_agent.conf
这个方案脚本是zabbix服务器通过zabbix-agent去调用pyora脚本获取数据,需要zabbix-agent配合。在zabbix-agent配置文件最后添加一行。因为我测试的两个方案是在zabbix服务器上做的,所以脚本文件我直接指向方案一的位置,这个方案的脚本位置(/usr/lib/zabbix/externalscripts/pyora)没有要求,只要zabbix-agent能调用到就可以,自己想放哪里都可以。

技术图片

  UserParameter=pyora[*],/usr/bin/python /usr/lib/zabbix/externalscripts/pyora --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

验证安装:
重启zabbix-agent后在服务器端执行

zabbix_get -s 127.0.0.1 -k"pyora[zabbix,123456,192.168.111.170,sjtools,show_tablespaces]"

 

 技术图片

   c、添加主机

主机IP填脚本所在服务器的IP(必须有zabbix-agent),模版链接刚导入的 Custom - Service - Oracle 模版,添加四个宏。

 技术图片

 

 技术图片

  

三、报错

1、import cx_Oracle出错

 技术图片
 

  • a、检查环境变量有没有设置对,安装客户端版本不一样路径会不一样
  • b、oracle客户端有没有安装
  • c、cx_Oracle有没有安装
  • d、方案二、直接执行脚本没问题,在zabbix-get 时报错,在zabbix-agent启动脚本/usr/lib/systemd/system/zabbix-agent.service增加环境变量(注意自己安装的路径)Environment="LD_LIBRARY_PATH=/usr/lib/oracle/19.5/client64/lib" 
  •  e、方案一报错参照方案二修改zabbix-server的启动脚本 /usr/lib/systemd/system/zabbix-agent.service
systemctl daemon-reload --重载脚本
systemctl restart zabbix-agent.service --重启zabbix-agent

2、方案二模版获取不到数据

技术图片

  将模版监控项类型‘外部检查’改为‘zabbix客户端’ 

技术图片

 

 

三、效果

  技术图片

技术图片

 

 技术图片

 

参考资料:
http://bicofino.io/2013/12/09/monitoring-oracle-with-zabbix/
https://blog.51cto.com/xianglinhu/1699725 zabbix使用pyora监控oracle数据库
https://blog.csdn.net/li_xiqing2008/article/details/80472161 systemctl 环境变量

https://www.cnblogs.com/ddzj01/p/10769448.html

 

以上是关于zabbix监控orace的主要内容,如果未能解决你的问题,请参考以下文章

简单分析percona-zabbix-templates(r10笔记第6天)

基于Zabbix实现监控Jenkins过程详解

zabbix使用zabbix_java_gateway 监控java应用进程

zabbix使用zabbix-java-gateway监控jvm/tomcat性能

日志文件报警监控脚本(可用于zabbix监控文件)测试中...

使用 zabbix 自动发现监控 MySQL