注册
运维写监控达梦主备状态
专栏/培训园地/ 文章详情 /

运维写监控达梦主备状态

ZAh Hsiang 2024/09/27 450 0 0
摘要

监控原理,用监控器获取主库和备库CLSN,还有“OK”关键字的数量,然后批量进行监控,
shell脚本思路:
1、设置配置变量,以空格为分隔符;
peizhi=(KF,开放 ZJ,资金 JY,交易)
for db in ${peizhi[@]};
do
inipath=echo $db|awk -F ',' '{print $1}'
#monitor ini的路径位置
db_name=echo $db|awk -F ',' '{print $2}'
#对应系统输出的中文名
done
2、通过ssh 连接至远程monitor服务器获取信息
LJXX=ssh dmdba@1.1.1.1 "/dm8/bin/dmmonitor path=/data/dmmon/${inipath}/dmmonitor_manual.ini<<EOF exit EOF"
okcount=echo $LJXX | grep -o OK|wc -l
#获取ok数量
a=echo $LJXX |awk -F 'monitor]' '{print $4}'|awk -F "[" '{print $1}' |awk '{print $26}'
#获取a库的CLSN号
b=echo $LJXX |awk -F 'monitor]' '{print $5}'|awk -F "[" '{print $1}' |awk '{print $26}'
#获取b库的CLSN号
3、将获取到的OK值,还有a和b的CLSN号进行相减,判断相差数(此处根据业务场景来判断,示例为相差小于1300个包,OK的数量个数为4)
if [ $a -gt $b ];then
((sn_delay=$a-$b))
else
((sn_delay=$b-$a))
fi
if [ $sn_delay -lt 1300 -a $okcount -eq 4 ];then
echo "状态正常:当前$db_name达梦数据库 CLSN号:$a $b,包延迟数:$sn_delay" >> /dmlog/dm.log

else
echo "状态异常:当前$db_name达梦数据库 CLSN号:$a $b,包延迟数:$sn_delay" >> /dmlog/dm.log
fi
4、完整的脚本为(仅供参考),可以配置定时任务,一分钟一次,结合短信告警:

peizhi=(KF,开放 ZJ,资金 JY,交易)
for db in ${peizhi[@]};
do
inipath=echo $db|awk -F ',' '{print $1}'
#monitor ini的路径位置
db_name=echo $db|awk -F ',' '{print $2}'
#对应系统输出的中文名
LJXX=ssh dmdba@1.1.1.1 "/dm8/bin/dmmonitor path=/data/dmmon/${inipath}/dmmonitor_manual.ini<<EOF exit EOF"
okcount=echo $LJXX | grep -o OK|wc -l
#获取ok数量
a=echo $LJXX |awk -F 'monitor]' '{print $4}'|awk -F "[" '{print $1}' |awk '{print $26}'
#获取a库的CLSN号
b=echo $LJXX |awk -F 'monitor]' '{print $5}'|awk -F "[" '{print $1}' |awk '{print $26}'
#获取b库的CLSN号
if [ $a -gt $b ];then
((sn_delay=$a-$b))
else
((sn_delay=$b-$a))
fi
if [ $sn_delay -lt 1300 -a $okcount -eq 4 ];then
echo "状态正常:当前$db_name达梦数据库 CLSN号:$a $b,包延迟数:$sn_delay" >> /dmlog/dm.log

else
echo "状态异常:当前$db_name达梦数据库 CLSN号:$a $b,包延迟数:$sn_delay" >> /dmlog/dm.log
fi
done

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服