我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell脚本配合zabbix实现tomcat的故障自愈功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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/118731222
    • shell脚本+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" = "trPcydKYYeRuue" ]];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的故障自愈的资料请关注我们其它相关文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    shell脚本配合zabbix实现tomcat的故障自愈功能

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    shell脚本配合zabbix实现tomcat的故障自愈功能

    目录1.背景及实现方式方法2.编写故障自愈脚本3.配置zabbix动作机制实现Tomcat故障自愈3.1.创建动作3.2.配置故障自愈消息内容以及执行自愈脚本3.3.动作创建完成4.观察故障自愈shell脚本配合zabbix实现tomcat
    2022-06-04

    如何实现Shell脚本配合iptables屏蔽来自某个国家的IP访问

    这篇文章主要介绍“如何实现Shell脚本配合iptables屏蔽来自某个国家的IP访问”,在日常操作中,相信很多人在如何实现Shell脚本配合iptables屏蔽来自某个国家的IP访问问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
    2023-06-09

    编程热搜

    目录