http://dl528888.blog.51cto.com/2382721/1637433 


有时候服务器的一个磁盘出现Read Only,导致数据不可写,但此服务器安装的zabbix监控并未报警,所以针对此情况,新增了监控系统磁盘读写状态的监控。

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控

如果返回值0代表磁盘都是rw状态可以正常读写,返回值1的话,代表磁盘是ro状态,会报警。

如何实现:

一、客户端

1、修改zabbix_agentd.conf文件

在zabbix_agentd.conf最后添加以下内容

1
UserParameter=check_disk_status,mount awk '{print $NF}'|cut -c 2-3|awk '{if($1~/ro/) {print 1}}'|wc -l|awk '{if($1<=0) {print 0 } else {print 1}}'

2、重启zabbix客户端服务

service zabbix_agentd restart


二、服务端

1、新增项目

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_02

2、触发器

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_03


这个触发器是如果10分钟内有数据,并且最近3次检测都出现ro状态,就会报警。

3、图形

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_04


针对zabbix添加触发器表达式:{Template OS Linux:check_disk_status.nodata(5m)}=1&{Template OS Linux:check_disk_status.count(#3,1,"eq")}=3 报下面错误
不正确的触发器表示式. 检查开始于"1&{Template OS Linux:check_disk_status.count(#3,1,"eq")}=3"的表示式部份.

解决方法:

这是zabbix版本问题 ,2.2以下的是&,以上的是and ,上面触发器表达式改成下面即可。
{Template OS Linux:check_disk_status.nodata(5m)}=1 and {Template OS Linux:check_disk_status.count(#3,1,"eq")}=3



Zabbix之监控Oracle性能


主要使用pyora这个python脚本来监控,具体地址可以参考https://github.com/bicofino/Pyora
我的zabbix版本为2.0.6,oracle为11g
下面是部分效果图

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_05


zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_06

报警方面:

1、oracle的1521端口是否监听

2、表空间使用率

3、Oracle是否重启

4、query lock是否有

5、query session大于250

6、asm使用率


如何实现:

一、客户端

1、修改zabbix_agentd.conf文件

在zabbix_agentd.conf最后添加以下内容

1
UserParameter=pyora[*],/data/zabbix/bin/pyora.py --username $1 --password $2 --address $3 --database $4 $5 $6 $7 $8

2、把附件的pyora.py的脚本放到/data/zabbix/bin里,然后给与755权限,并修改用户与组为zabbix(注意,我的pyora.py脚本修改了一些内容,比如如果出现None的返回,我修改为0了,如果需要使用原来的脚本,请去https://github.com/bicofino/Pyora 里面下载.

3、安装依赖

确保本机python在2.6以上

安装cx_Oracle与argparse

easy_install cx_Oracle
easy_install argparse


4、在oracle里创建监控oracle账户

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE USER ZABBIX IDENTIFIED BY 'zabbix' DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;
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;
GRANT SELECT ON V_$SESSION TO ZABBIX;
GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX;
GRANT SELECT ON V_$EVENT_NAME TO ZABBIX;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO ZABBIX;

5、重启zabbix服务

service zabbix restart


二、服务端

1、模板导入

把Template Oracle Auto Discovery导入到zabbix里(模板在附件)。

2、主机关联模板

在添加主机,并且关联模板的时候,选择“宏”,然后输入对应信息.

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_07

zabbix应用监控磁盘读写状态 , Zabbix之监控Oracle性能_zabbix 监控_08

这样就能出图了,注意自动发现规则的时间为3600秒。