我这里通过ggsci的info all来判断Status状态是否正常,如果状态是STOPPED、ABEND则触发钉钉告警,然后让zabbix自动拉起服务,当然此处可结合自身需求进行设置,例如:不包含RUNNING的状态则触发警告,只需要grep -v "RUNNING"即可。
在配置ogg监控时,请熟悉使用zabbix,熟悉相关工作原理,避免在配置的时候导致报错!
1、在ogg服务器上安装zabbix-agent
安装zabbix-agent建议直接使用官方rpm包方式(或国内镜像的rpm包)
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent
2、修改zabbix-agent配置文件
zabbix-agent默认的配置文件在/etc/zabbix/zabbix_agentd.conf
我这里只修改两处,其他配置结合自身使用情况进行调整,当然你也可以只修改两处,其他配置项不修改。
①添加以下一行内容,表示允许通过zabbix执行远程命令(因为我这里要通过zabbix远程启动ogg服务,所以开启,如你不需要则无需配置)
EnableRemoteCommands=1
②配置zabbix-server地址,其中10.10.10.10表示你当前zabbix-server的地址
Server=10.10.10.10
3、配置zabbix用户权限
visudo
先给zabbix用户设置免密授权,因为我这里ggsci是通过oracle用户来执行的,如果不授权zabbix用户,则无法调用oracle用户来执行ggsci。
zabbix ALL=(ALL) NOPASSWD:ALL
4、自定义zabbix键值
cd /etc/zabbix/zabbix_agentd.d
新建一个自定的键,我这里定义为monitor.ogg,其中monitor.ogg名字可自行更改,后面的语句就是一个shell脚本,表示通过oracle用户来执行ggsci的info all命令,然后通过grep查看是否存在ABEND或STOPPED状态,注意:我这里监控的Group是EXTKF,你的不一定是这个名字,按需进行更改。
vi userparameter_ogg.conf
UserParameter=monitor.ogg,sudo su - oracle -c 'echo "info all" | /u01/ogg/ggsci | grep "EXTKF" | egrep "ABEND|STOPPED" | wc -l'
5、启动zabbix-agent
systemctl enable zabbix-agent
systemctl start zabbix-agent
此时zabbix-agent就配置好了,如果开启了防火墙,请注意放行相关端口
6、配置zabbix-server,创建监控模板
在zabbix-server仪表盘中,创建ogg的监控模板,当然你也可以直接创建监控项而不配置模板
注意:此处键值monitor.ogg与之前在agent中配置的键一定要一致
配置触发器
{monitor.ogg:monitor.ogg.last()}<>0表示,执行sudo su - oracle -c 'echo "info all" | /u01/ogg/ggsci | grep "EXTKF" | egrep "ABEND|STOPPED" | wc -l'结果不等于0,则触发警告
图形配置
至此ogg监控就配置完成了,一旦ogg服务状态是STOPPED或ABEND时,则触发报警。
如果你只需要一个报警监控,那么后面的内容就无需看了,我这里只是以ogg作为例子,提供一个自定义键值的思路,如果你理解其中的原理,那么便可举一反三!!!
钉钉报警设置请参考:https://blog.whsir.com/post-6090.html
7、自动启动ogg服务
在zabbix-server仪表盘中,配置→动作
告警操作
主题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息:在消息首行添加关键词,此关键词和钉钉上的关键词需保持一致,可以使用中文名称
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复操作
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}