分类: 开源技术
使用nrpe监控Goldengate进程脚本
1. nrpe监控脚本的一般准则,大概可以看一下其他例子,照着写就行了
2.脚本如下
[root@sz libexec]# cat /usr/local/nagios/libexec/check_gghealth
#!/bin/bash
# Nagios return codes
#定义 nagios返回的状态变量
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
# 插件描述信息
PROGNAME="check_gghealth"
RELEASE="Revision 1.0.0"
AUTHOR="(c) 2015 dudong"
# Functions plugin usage
# 插件的使用方法函数
print_release() {
echo "$RELEASE $AUTHOR"
}
print_usage() {
echo ""
echo "$PROGNAME $RELEASE - Goldengate health check script for Nagios"
echo ""
echo "Usage: check_gghealth"
echo ""
echo " -v check the version"
echo " -h Show this page"
echo ""
echo "Usage: $PROGNAME"
echo "Usage: $PROGNAME --help"
echo ""
exit 0
}
print_help() {
print_usage
echo ""
echo "This plugin will check gg health "
echo ""
exit 0
}
# 传递参数
while [ $# -gt 0 ]; do
case "$1" in
-h | --help)
print_help
exit $STATE_OK
;;
-v | --version)
print_release
exit $STATE_OK
;;
*) echo "Unknown argument: $1"
print_usage
exit $STATE_UNKNOWN
;;
esac
shift
done
# 生效变量文件
SIDNAME=ebpdb
cd /home/oracle
. ./prof_$SIDNAME
mkdir -p /tmp/ggcheck/
cd $OGG_HOME
echo "info all" | ./ggsci |grep -E "MANAGER|EXTRACT|REPLICAT" > /tmp/ggcheck/gginfo.tmp
chmod 776 /tmp/ggcheck/gginfo.tmp
cd /tmp
filename=/tmp/ggcheck/gginfo.tmp
NUM1=$(cat $filename | grep "ABENDED" | wc -l)
NUM2=$(cat $filename | grep "STOPPED" | wc -l)
MESSAGE1=$(find $filename |xargs grep -ri "ABENDED")
MESSAGE2=$(find $filename |xargs grep -ri "STOPPED")
MESSAGE3=$(find $filename |xargs grep -ri "RUNNING")
if [ "$NUM1" = "0" -a "$NUM2" = "0" ]; then
echo "OK - Goldengate status is ok "
# echo "$MESSAGE3"
exit $STATE_OK
else
echo "CRITICAL - Goldengate status is critical; $MESSAGE1; $MESSAGES"
exit $STATE_CRITICAL
fi
[root@sz libexec]#
3. 这个脚本需要root权限运行,所以需要修改/etc/sudoers
注释掉:
#Defaults requiretty // 注释掉一下行,表示不需要控制终端
增加:
nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_gghealth
//运行脚本权限为了安全起见,添加只允许运行的监控脚本即可,并且设置脚本不可写状态。
4. 修改nrpe文件,并重启进程
command[check_goldengate]=/usr/bin/sudo /usr/local/nagios/libexec/check_gghealth
5.验证!!
客户端:必须nagios用户执行无报错
[nagios@sz ~]$ /usr/bin/sudo /usr/local/nagios/libexec/check_gghealth
OK - Goldengate status is ok
[nagios@sz ~]$
服务器端:
[root@sznagiosapp3 libexec]# ./check_nrpe -H 172.28.33.11 -c check_goldengate
OK - Goldengate status is ok
[root@sznagiosapp3 libexec]#
6. 出现的蛋疼问题 nrpe: unable to read output
出现的问题可能有很多种,根据问题查找得出一些分析的注意地方:
1、检查客户端nrpe的权限是否可读,可被nagios执行,如果nagios权限不够,需要提权。
2、检查nrpe.cfg里面commands命令路径是否正确。
3、在配置完nrpe.cfg,没有杀nrpe进程。
第一:确保在本地使用nagios用户执行命令,无各类权限问题报错
第二:chown -R nagios:nagios /usr/local/nagios
第三:注释掉:#Defaults requiretty //
第四:command[check_goldengate]= 这个地方把名字改一下,重新重启进程。
1. nrpe监控脚本的一般准则,大概可以看一下其他例子,照着写就行了
2.脚本如下
[root@sz libexec]# cat /usr/local/nagios/libexec/check_gghealth
#!/bin/bash
# Nagios return codes
#定义 nagios返回的状态变量
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
# 插件描述信息
PROGNAME="check_gghealth"
RELEASE="Revision 1.0.0"
AUTHOR="(c) 2015 dudong"
# Functions plugin usage
# 插件的使用方法函数
print_release() {
echo "$RELEASE $AUTHOR"
}
print_usage() {
echo ""
echo "$PROGNAME $RELEASE - Goldengate health check script for Nagios"
echo ""
echo "Usage: check_gghealth"
echo ""
echo " -v check the version"
echo " -h Show this page"
echo ""
echo "Usage: $PROGNAME"
echo "Usage: $PROGNAME --help"
echo ""
exit 0
}
print_help() {
print_usage
echo ""
echo "This plugin will check gg health "
echo ""
exit 0
}
# 传递参数
while [ $# -gt 0 ]; do
case "$1" in
-h | --help)
print_help
exit $STATE_OK
;;
-v | --version)
print_release
exit $STATE_OK
;;
*) echo "Unknown argument: $1"
print_usage
exit $STATE_UNKNOWN
;;
esac
shift
done
# 生效变量文件
SIDNAME=ebpdb
cd /home/oracle
. ./prof_$SIDNAME
mkdir -p /tmp/ggcheck/
cd $OGG_HOME
echo "info all" | ./ggsci |grep -E "MANAGER|EXTRACT|REPLICAT" > /tmp/ggcheck/gginfo.tmp
chmod 776 /tmp/ggcheck/gginfo.tmp
cd /tmp
filename=/tmp/ggcheck/gginfo.tmp
NUM1=$(cat $filename | grep "ABENDED" | wc -l)
NUM2=$(cat $filename | grep "STOPPED" | wc -l)
MESSAGE1=$(find $filename |xargs grep -ri "ABENDED")
MESSAGE2=$(find $filename |xargs grep -ri "STOPPED")
MESSAGE3=$(find $filename |xargs grep -ri "RUNNING")
if [ "$NUM1" = "0" -a "$NUM2" = "0" ]; then
echo "OK - Goldengate status is ok "
# echo "$MESSAGE3"
exit $STATE_OK
else
echo "CRITICAL - Goldengate status is critical; $MESSAGE1; $MESSAGES"
exit $STATE_CRITICAL
fi
[root@sz libexec]#
3. 这个脚本需要root权限运行,所以需要修改/etc/sudoers
注释掉:
#Defaults requiretty // 注释掉一下行,表示不需要控制终端
增加:
nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_gghealth
//运行脚本权限为了安全起见,添加只允许运行的监控脚本即可,并且设置脚本不可写状态。
4. 修改nrpe文件,并重启进程
command[check_goldengate]=/usr/bin/sudo /usr/local/nagios/libexec/check_gghealth
5.验证!!
客户端:必须nagios用户执行无报错
[nagios@sz ~]$ /usr/bin/sudo /usr/local/nagios/libexec/check_gghealth
OK - Goldengate status is ok
[nagios@sz ~]$
服务器端:
[root@sznagiosapp3 libexec]# ./check_nrpe -H 172.28.33.11 -c check_goldengate
OK - Goldengate status is ok
[root@sznagiosapp3 libexec]#
6. 出现的蛋疼问题 nrpe: unable to read output
出现的问题可能有很多种,根据问题查找得出一些分析的注意地方:
1、检查客户端nrpe的权限是否可读,可被nagios执行,如果nagios权限不够,需要提权。
2、检查nrpe.cfg里面commands命令路径是否正确。
3、在配置完nrpe.cfg,没有杀nrpe进程。
第一:确保在本地使用nagios用户执行命令,无各类权限问题报错
第二:chown -R nagios:nagios /usr/local/nagios
第三:注释掉:#Defaults requiretty //
第四:command[check_goldengate]= 这个地方把名字改一下,重新重启进程。