Pyora介绍
首先要介绍下:cx_Oracle ,这是一个使用 python 开发的 python连接Oracle数据库的驱动,有了这个驱动,python 就可以与Oracle 交互了
Pyora 就是利用 cx_Oracle 完成与Oracle的连接, 然后利用 sql 来获取 Oracle 数据库的状态,达到监控目的的
所以要安装 Pyora ,首先就得安装 数据库驱动: cx_Oracle,然后在安装 Pyora ,最后Zabbix_agentd 利用Userparameter,调用Pyora 脚本来 获取监控数据
有了Pyora后,监控就变成了这样了,我们不需要在数据库上 安装任何软件,只需要找一个能部署abbix_agent的节点,而这个节点最好啥都不要运行,专用来搜集监控 数据库,从而这个节点就成了 监控数据库的 中心节点.
Oracleclient11g 安装
- oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
- oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm
- oracle-instantclient11.2-jdbc-11.2.0.3.0-1.x86_64.rpm
- oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm
1 | yum install oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm |
填加tnsanme信息
创建文件夹nework/admin,整个路径如:/usr/lib/oracle/12.1/client64/network/admin 加入tnsnames.ora
1 | shell |
配置环境信息
请打开 /etc/profile 文件,在这个文件里面追加如下内容:
1 | export ORACLE_BASE=/usr/lib/oracle/11.2 |
验证是否登陆成功
1 | sqlplus xxx/[email protected]:1521/orcl |
Python安装
系统自带的Python 2.6.6 对 Pyora 支持不好 编译python27时加上-enable-shared 否则不会生成libpython2.7.so.1.0的动态链接库,不加默认生成libpython2.7.so.a的静态链接库
1 | ./configure --prefix=/usr/local/python27 -enable-shared |
没有报错Python安装成功
如果启动python时报以下错误:
解决如下:
cx_Oracle安装
Pyora 安装
离线安装Pyora时需要提前安装好setuptools及 argparse模块
写入下面的参数到 /usr/local/zabbix/etc/zabbix_agentd.conf 并重启 zabbix_agent 读取新配置
1 | UserParameter=pyora[*],/usr/local/python27 /home/zabbix/scripts/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8 |
在Pyora 的包里,别人已经为我们做好了模板,直接导入模板:zabbix-template/Pyora.xml即可
导入模板后,需要稍作修改,以适用于我们 自己的监控需求,你监控那个Oracle 数据库,只需在 模板级别的宏里面,知道其相应信息,让后将模板 套到 该zabbix_agent上 ,这样zabbix_agent 就可以调用脚本来完成监控 远程的数据库服务器了
填入宏前,要手动调试,看看 Python脚本是否能 连接数据库正常 获取数据,以及zabbix server 能否正常通信。
zbbix_agent 端:
1 | /usr/local/python27/bin/python /usr/local/zabbix/shared/exectscripts/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8 |
zabbix_server端:
这些内容 填在 模板 宏变量出:例如
监控的结果:
最后, Oracle 表空间的 自动发现,大概需要1个小时 左右,所以 请耐心等待 ,而 脚本 也能 根据 自己需求 ,自定义一些 SQL 调用
不错一个工具 ,至少比 那些zabbix 监控 Oracle 插件 方便多了.
zabbix使用pyora的工作原理
通过在zabbix_agentd.conf中加入UserParameter=
1 | UserParameter=pyora[*],/usr/local/python27/python /home/zabbix/scripts/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8 |
在zabbix GUI中设定主机宏来指定zabbix_agentd调用pyora时运行时需要的参数信息,zabbix基于宏保存预设的文本模式,并在调用时将其替换为其中的文本,可理解为全局变量,最大可返回512k数据,
带*参数的UserParameter可批量监控多个同类监控项
如:
1 | UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $2}' |
server端的调用的key为memory.usage[MemFree] ,获得被监控主机剩余内存的数值
server端的调用的key为memory.usage[MemTotal} ,获得被监控主机总内存的数值
UserParameter 详情请参考这里