snmp通过自定义脚本可以扩展snmp监控指标。
脚本可以实现自动判断运行的OGG软件目录,并为每个OGG软件目录下的进程生成获取状态的脚本和对应snmp的oids.
从而可以和支持snmp协议的监控产品进行整合,实现对OGG的监控。
oids目前定义规则从.1.3.6.1.4.1.2021.10开始递增,如果一台机器上有两个OGG软件目录在运行,那么就会对应生成.1.3.6.1.4.1.2021.10和.1.3.6.1.4.1.2021.11两个oid.
#!/bin/bash
###############################################
# Name:generate_snmp_oids_for_ogg.sh
# Author:cdshrewd (cdshrewd#163.com)
# Purpose:Generate snmp oids for ogg to get status info.
# Usage:It should by run by root.No arg is needed.
# We use oids which start from '.1.3.6.1.4.1.2021.10' one by one.
# This script will create shell file in /root and log file in /tmp.
# You should make these directories avaliable.
# You can run this scripts like './generate_snmp_oids_for_ogg.sh
# Modified Date:2017/06/16
###############################################
#!/bin/bash
RUID=`/usr/bin/id|/bin/awk -F\( '{print $1}'|/bin/awk -F= '{print $2}'`
if [ $RUID -ne 0 ];then
echo "This script should be run by root."
else
ps -ef|grep -i "mgr.prm"|grep -v "grep"|awk '{print $10}'|uniq|awk -F 'dirprm' '{print $1}' > ogg_home.txt
cnt=0
for line in `cat ogg_home.txt`
do
SH_FILE_NAME=sh${line//\//_}check.sh
LOG_FILE_NAME=sh${line//\//_}check.log
OID=".1.3.6.1.4.1.2021.1"$cnt
echo "#!/bin/bash" > /root/$SH_FILE_NAME
echo "source ~oracle/.bash_profile" >> /root/$SH_FILE_NAME
echo ${line}"ggsci>/tmp/$LOG_FILE_NAME <<EOF" >> /root/$SH_FILE_NAME
echo "info all" >> /root/$SH_FILE_NAME
echo "exit" >> /root/$SH_FILE_NAME
echo "EOF" >> /root/$SH_FILE_NAME
echo "cat /tmp/$LOG_FILE_NAME|egrep 'MANAGER|REPLICAT|EXTRACT'" >> /root/$SH_FILE_NAME
chmod a+x /root/$SH_FILE_NAME
let cnt+=1
if grep -F $OID /etc/snmp/snmpd.conf|grep "^extend" >/dev/null 2>&1; then
echo "OID exists.It will not change the login configuration file."
else
echo "extend $OID OGG_HOME_${cnt}_check /root/$SH_FILE_NAME oid entry will be added automatically!"
echo "extend $OID OGG_HOME_${cnt}_check /root/$SH_FILE_NAME" >>/etc/snmp/snmpd.conf
echo "#add by cds `date`" >>/etc/snmp/snmpd.conf
service snmpd restart
sleep 1
fi
done
fi
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
syscontact Root < root@localhost> (configure /etc/snmp/snmp.local.conf)