Linux环境自动生成OGG监控脚本和snmp oids

来源:互联网 发布:seo教程视频 编辑:程序博客网 时间:2024/05/21 19:01

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

这里有个前提,就是snmp应该已经配置好,下面给出一个示例的snmpd.conf:
com2sec notConfigUser  default       sentry
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
view    systemview    included   .1
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access  notConfigGroup ""      any       noauth    exact  all none none
view all    included  .1                               80
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes
proc mountd
proc ntalkd 4
proc sendmail 10 1
exec echotest /bin/echo hello world
disk / 10000
load 12 14 14



原创粉丝点击