shell脚本配合zabbix实现tomcat的故障自愈功能
目录
1.背景及实现方式方法2.编写故障自愈脚本3.配置zabbix动作机制实现Tomcat故障自愈3.1.创建动作3.2.配置故障自愈消息内容以及执行自愈脚本3.3.动作创建完成4.观察故障自愈shell脚本配合zabbix实现tomcat的故障自愈
1.背景及实现方式方法
Tomcat运行JAVA类的程序代码经常会导致内存溢出,往往都是收到告警后再去处理,收到报警再处理就会拖延故障解决的时间,因此就需要靠故障自愈的机制来解决人为干预的成本。
服务实现自愈的方式有很多种:
通过shell脚本+定时任务的方式通过shell脚本检测应用程序的状态,状态为1表示异常为0表示正常,当检测到状态为1时就触发自愈脚本,完成程序的故障自愈。通过脚本来检测需要配合定时任务来实现,存在一定的弊端,可能需要每隔5分钟就要检测一次,多多少少会影响服务器性能。蓝鲸Pass故障自愈平台蓝鲸自动化运维平台有故障自愈模块,可以轻松获取zabbix告警信息然后实现故障自愈。如果只是为了实现自愈而使用蓝鲸平台,就有点小材大用了,蓝鲸平台搭建非常复杂,并且需要的服务器数量也居多,不建议使用此种方式。蓝鲸实现JAVA程序故障自愈的文章:https://jiangxl.blog.csdn.net/article/details/118731222shell脚本+zabbix触发器动作最为推荐的一种故障自愈方式。在zabbix中添加服务状态的监控项,并配置触发器,然后通过配置zabbix的动作功能,当收到服务状态异常的触发器告警时,再远程服务器中执行自愈脚本,实现程序的故障自愈。此方式也并不是十全十美,例如一个服务器上有10个tomcat,端口都不相同,无法通过zabbix触发器告警获取故障服务的端口号,因此一个tomcat就需要配置一个zabbix动作。shell+zabbix实现故障自愈大致实现步骤:
1、在zabbix中添加服务的状态监控以及触发器。
2、编写故障自愈恢复脚本,不同端口的服务都需要编写单独的脚本。
3、配置zabbix动作功能,为每一个需要故障自愈的tomcat镜像配置。
2.编写故障自愈脚本
#!/bin/bash java_node=java-7180 java_dir=/data/tomcat/${java_node} java_port=`grep "protocol="HTTP/1.1"" ${java_dir}/conf/server.xml |awk -F""" "{if(NR==1){print $2}}"` host_ip=192.168.10.100 dtime=`date +%F" "%H:%M:%S` day=`date +%F` selflheal_logdir=/var/log/java_selflheal echo "${dtime} ${java_node} 开始自愈..." >>${selflheal_logdir}/selflheal-${day}.log #关闭tomcat ps aux | grep $java_dir | grep -v grep | awk "{print $2}" |xargs kill -9 #启动服务 su - www -c "${java_dir}/bin/startup.sh" if [ $? -eq 0 ];then sleep 10s for i in {1..20} do sleep 3s echo "第$i次尝试" ava=`curl -s http://${host_ip}:${java_port}/check` if [[ "$ava" = "true" ]];then echo "${dtime} ${java_node} 自愈成功!!!" >>${selflheal_logdir}/selflheal-${day}.log echo "=====================================================" >>${selflheal_logdir}/selflheal-${day}.log break fi if [ $i -ge 20 ];then echo "${dtime} ${java_node} 自愈不成功!!!" >>${selflheal_logdir}/selflheal-${day}.log echo "=====================================================" >>${selflheal_logdir}/selflheal-${day}.log exit 1 fi done fi
3.配置zabbix动作机制实现Tomcat故障自愈
实现目标:实现故障自愈的同时还要发送消息提醒。
3.1.创建动作
填写动作的名称,并关联服务状态异常的触发器。
3.2.配置故障自愈消息内容以及执行自愈脚本
1)故障自愈告警信息如下
-----------故障自愈事件触发-------
故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}
故障_触发器名称: {EVENT.NAME}
IP地址:{HOST.CONN}
故障 时间: {EVENT.DATE} {EVENT.TIME}
故障 事件: {ITEM.NAME}:{ITEM.VALUE}
2)添加执行远程命令的动作
zabbix实现自愈就是通过在远程主机上执行命令进行自愈的。
操作类型选择远程命令—>在目标列表中填写tomcat所在的服务器—填写执行故障自愈脚本的命令。
3.3.动作创建完成
4.观察故障自愈
以上就是shell脚本配合zabbix实现tomcat的故障自愈的详细内容,更多关于shell zabbix实现tomcat的故障自愈的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?