zabbix3.0.2 监控oracle高可用dataguard的standby库状态详细过程
来源:互联网 发布:普通话水平测试的软件 编辑:程序博客网 时间:2024/05/17 22:00
1,判断standby复制实时的标准
判断标准是,通过sqlplus执行select sequence#,applied from v$archived_log order by sequence#;如果全是YES则表明standby库已经实时复制了,primary和standby数据一致了没有延迟,否则就是有延迟的。如下所示:
SQL> select sequence#,applied from v$archived_log order by sequence#;
SEQUENCE# APPLIED
---------- ---------
5118 YES
5119 YES
5120 YES
5121 YES
5122 YES
5123 YES
5124 YES
5125 YES
5126 YES
5127 YES
5128 YES
SEQUENCE# APPLIED
---------- ---------
5129 YES
419 rows selected.
SQL>
所以通过进入oracle帐号,登录sqlplus控制台执行selectsequence#,applied from v$archived_log order by sequence#;来判断,将获取的查询结果集列出来,如果都是YES表明standby复制正常,反之则有问题,编写判断脚本如下:
脚本一get_dg.sh,获取standby状态,将所有的YES记录放在当前的文件bst.csv下面:
#!/bin/bash
su - oracle -c "
cd /oracle/backup/data
sqlplus -S zabbix/ys_zb_0418@PD2 << EOF
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
spool bts.csv
select sequence#,applied from $1 order by sequence#;
spool off
exit
EOF
脚本二check_dg.sh,取出YES的num数量,取出standy所有的记录数,如果两个数字相等,则证明standby复制正常,否则复制不正常,则报警出来,check_dg.sh脚本如下:
#!/bin/bash
#> /oracle/backup/data/bts.csv
/bin/sh /oracle/backup/data/get_dg.sh $1 > /dev/null
cd /oracle/backup/data
result_num=`cat bts.csv |wc |awk '{print $1}'`
yes_num=`cat bts.csv |grep YES |wc |awk '{print $1}'`
in_memory_num=`cat bts.csv |grep IN-MEMORY |wc |awk '{print $1}'`
out_num=0;
standby_num=`expr $yes_num + $in_memory_num + $out_num`
if [ "$result_num" -eq 0 ]
then
echo 0
elif [ "$result_num" -eq 1 ]
then
echo 0
elif [ "$result_num" -eq "$standby_num" ]
then
echo 1
else echo 0
fi
2,Zabbix-agentd配置文件添加参数
vim /usr/local/zabbix/conf/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=oracle.standby_status,/oracle/backup/data/check_dg.sh 'v$archived_log'
添加完后,重启zabbix_agentd
3,使用普通的root帐号调用sqlplus脚本报错
在oracle服务器可以正常调用:
[root@pldb02 data]# sh check_dg.sh'v$archived_log'
1
[root@pldb02 data]#
但是在zabbix-server上调用出错:
[root@zabbix_serv_121_12 ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.3.13 -p10050 -k"oracle.standby_status"
standard in must be a tty
1
[root@zabbix_serv_121_12 ~]#
4,改用zabbix帐号来调用check_dg.sh
4.1在脚本里面添加oracle环境变量
需要在脚本里面配置一些oracle的环境变量,这样可以利用当前的zabbix帐号来运行sqlplus命令,get_dg.sh如下:
[root@pldb02 data]# more get_dg.sh
#!/bin/bash
export NLS_LANG=american_america.ZHS16GBK
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=powerdesdg2
export PATH=$ORACLE_HOME/bin:$PATH
cd /oracle/backup/data
sqlplus -S zabbix/ys_zb_0418@PD2 << EOF
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
spool bts.csv
select sequence#,applied from $1 order by sequence#;
spool off
exit
EOF
[root@pldb02 data]#
脚本2check_dg.sh基本没有变动,如下所示:
[root@pldb02 data]# more check_dg.sh
#!/bin/bash
#> /oracle/backup/data/bts.csv
/bin/sh /oracle/backup/data/get_dg.sh $1 > /dev/null
cd /oracle/backup/data
result_num=`cat bts.csv |wc |awk '{print $1}'`
yes_num=`cat bts.csv |grep YES |wc |awk '{print $1}'`
in_memory_num=`cat bts.csv |grep IN-MEMORY |wc |awk '{print $1}'`
out_num=0;
standby_num=`expr $yes_num + $in_memory_num + $out_num`
if [ "$result_num" -eq 0 ]
then
echo 0
elif [ "$result_num" -eq 1 ]
then
echo 0
elif [ "$result_num" -eq "$standby_num" ]
then
echo 1
else echo 0
fi
[root@pldb02 data]#
4.2将zabbix加入oracle用户组
gpasswd -a zabbix oinstall
gpasswd -a zabbix dba
gpasswd -a zabbix oracle
4.3在zabbix-server服务器上检查standby成功
在zabbix-server的服务器上,远程调用oracle的standby上的状态监控,看到能获取到实际的值1:
[root@zabbix_serv_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.3.13 -p10050 -k "oracle.standby_status"
1
[root@zabbix_serv_121_12 ~]#
5,在zabbix管理界面添加standby
建立oracle模版22.png:
在standby的主机上添加模版E:\u\azure_cloud\pd\024.png:
Actions里面添加触发条件的模版,这样当standby模版的条件满足后就会触发这个actions事件来发报警短信邮件或者打电话等等,E:\u\windows\pic\21.png:
至此,在zabbix上通过自己写的shell脚本来监控oracle的高可用的standby库复制状态已经完成了。
- zabbix3.0.2 监控oracle高可用dataguard的standby库状态详细过程
- azure云上 在线将oracle单实例扩展成oracle dataguard高可用集群的详细过程
- zabbix3.0.2 通过orabbix来监控oracle11g增强版的详细过程
- zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程
- zabbix3.0.2 使用percona mysql插件来监控mysql5.7的详细实现过程
- zabbix3.0.2 通过orabbix来监控oracle11g增强版的详细过程 zhuan
- DataGuard 之物理STANDBY 的监控与管理
- zabbix3.0.2 实现发送email报警的详细过程
- zabbix3.0 监控mysql服务免用户名密码登录的问题故障处理详细过程
- zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程
- zabbix3.0.2 监控防火墙实现过程
- Oracle DataGuard 物理Standby 搭建
- oracle11g dataguard中standby库文件坏块的修复过程
- Oracle Dataguard之物理standby的基本配置
- Oracle DataGuard学习笔记(2)物理Standby的配置
- Oracle Dataguard Standby Redo Log的两个实验 --博主
- keepalived 高可用,监控web服务器状态
- ORACLE 11G DataGuard Failover后如何修复standby库
- 排序算法之希尔排序
- 作别杨绛的优雅,再打量一下这个粗鄙的世界
- Vysor – 无需 root,用 Chrome 完全控制 Android 设备
- 关于分享
- 码神第一周初体验
- zabbix3.0.2 监控oracle高可用dataguard的standby库状态详细过程
- 【虚拟现实】Unity3D+VR的实现
- Deep Learning Toolkits 的比较(转)
- gradle project refresh failed: protocol family unavailable
- 线性回归总结及python实现
- iOS---MVVM初体验
- XML shema 约束入门 (2 ) 约束文件加入与说明
- 15 个 Android 通用流行框架大全
- 排序算法之直接选择排序