shell腳本配合zabbix實現tomcat的故障自愈功能

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的故障自愈的資料請關註WalkonNet其它相關文章!

推薦閱讀: