1、模版获取
https://github.com/qkfm-97/nifi-example/blob/main/ops/check_warn_reboot.xml
2、任务说明
使用NiFi监控程序的可用性,每10分钟检测一次。如果检测到一次问题,会发送预警通知。如果连续两次检测到问题,系统将自动重启程序。
3、流程截图
4、重点说明
1、设置两个变量reboot_lasttime和warn_time放入本地系统的缓存,每次成功都设置两个值为1,如果出现告警或者重启就把时间设置为重启和告警的时间,用于判断每次要重启时是否已经告警。
2、通过ExecuteStreamCommand执行remote.sh来执行远程服务器的重启命令restart.sh
remote.sh时放在nifi服务器的/opt下
#!/bin/bash
# 远程主机信息
REMOTE_HOST="192.168.60.122"
REMOTE_USER="root" # 替换为你的远程主机用户名
REMOTE_SCRIPT_PATH="/opt/restart.sh"
# 使用SSH执行远程脚本
ssh ${REMOTE_USER}@${REMOTE_HOST} "sh ${REMOTE_SCRIPT_PATH}"
# 检查SSH命令的执行状态
if [ $? -eq 0 ]; then
echo "远程脚本执行成功"
else
echo "远程脚本执行失败"
fi
restart.sh在需要重启服务的服务器192.168.60.122上
#!/bin/bash
# Tomcat的安装路径
TOMCAT_HOME="/path/to/tomcat"
# 获取Tomcat进程的PID
PID=$(ps aux | grep '[t]omcat' | awk '{print $2}')
if [ -z "$PID" ]; then
echo "Tomcat is not running."
else
# 强制停止Tomcat
echo "Stopping Tomcat with PID $PID..."
kill -9 $PID
echo "Tomcat has been stopped."
fi
# 等待5秒钟
sleep 5
# 启动Tomcat
echo "Starting Tomcat..."
$TOMCAT_HOME/bin/startup.sh
echo "Tomcat has been restarted successfully."