使用nrpe監控Goldengate程式指令碼

urgel_babay發表於2016-05-11
使用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]= 這個地方把名字改一下,重新重啟程式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30936525/viewspace-2097982/,如需轉載,請註明出處,否則將追究法律責任。

相關文章