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

 更新时间:2022年03月04日 09:43:41   作者:Jiangxl~  
这篇文章主要介绍了shell脚本配合zabbix实现tomcat的故障自愈,服务实现自愈的方式有通过shell脚本+定时任务的方式,蓝鲸Pass故障自愈平台,shell脚本+zabbix触发器动作,本文给大家详细介绍,需要的朋友可以参考下

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" = "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的故障自愈的资料请关注脚本之家其它相关文章!

相关文章

  • 监控php-fpm并自动重启服务的shell脚本

    监控php-fpm并自动重启服务的shell脚本

    这篇文章主要介绍了监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务,需要的朋友可以参考下
    2014-05-05
  • shell 里面的奇葩字符实现

    shell 里面的奇葩字符实现

    这篇文章主要介绍了shell 里面的奇葩字符实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • shell中如何批量注释和取消注释

    shell中如何批量注释和取消注释

    这篇文章主要介绍了shell中如何批量注释和取消注释,帮助大家更好的理解和学习shell脚本,感兴趣的朋友可以了解下
    2020-08-08
  • CPU负载监控脚本代码

    CPU负载监控脚本代码

    CPU负载监控脚本代码,需要的朋友可以参考下
    2013-01-01
  • Linux网络设置详情

    Linux网络设置详情

    这篇文章主要介绍了Linux网络设置,需要的朋友可以参考下面文章内容
    2021-08-08
  • linux下的tar命令详细解释

    linux下的tar命令详细解释

    在Linux中,压缩与解压用得最多的tar.tar命令确实很厉害。下面通过本文给大家分享linux下的tar命令详细解释,感兴趣的朋友一起看看吧
    2017-08-08
  • Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    这篇文章主要介绍了Shell $0, $#, $*, $@, $?, $$和命令行参数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • bash提取字符串${string:position:length}的具体使用

    bash提取字符串${string:position:length}的具体使用

    本文主要介绍了bash提取字符串${string:position:length}的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • jq命令对JSON进行过滤遍历结构转换等操作实例

    jq命令对JSON进行过滤遍历结构转换等操作实例

    这篇文章主要介绍了jq命令对JSON进行过滤遍历结构转换等操作实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 编写shell脚本实现tomcat定时重启的方法

    编写shell脚本实现tomcat定时重启的方法

    这篇文章主要介绍了编写shell脚本实现tomcat定时重启的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论