ssh检查多台服务器http服务
指尖二进制 • 1 年前 • 1363 次点击 • BASH
#!/bin/bash
# 日志路径
M=/pitrix/log/http_process_check.log
# apache2服务的名称
HTTPD_SERVICE="httpd"
# 重启时间,24小时制
RESTART_TIME="11:26"
R1=`date -d "$RESTART_TIME" +%s`
# 当前时间
# CURRENT_TIME=`date +%H:%M`
# CURRENT_TIME=`date +%H:%M`
CURRENT_TIME="11:26"
C1=`date -d "$CURRENT_TIME" +%s`
# 日志 yyds
log_format(){
local log_level=$1
local message=$2
local timestap=$(date +"%Y-%m-%d %H:%M:%S:%N")
echo "${timestap} [${log_level}] ${message}" >> ${M}
if [[ $(cat $M | wc -l) -gt 100000 ]];then
sed -i '1,30000d' $M
fi
}
# 定义需要检查的机器列表
machines=("ecadevbj1a-webservice0" "ecadevbj1a-webservice1" )
# 检查并重启http服务的函数
check_and_restart_httpd() {
machine=$1
if ! ssh "$machine" systemctl is-active httpd > /dev/null 2>&1; then
log_format "$machines httpd not running, restart service"
if ssh "$machine" systemctl restart httpd; then
log_format "OK" "$machine httpd restart success"
else
log_format "ERROR" "$machine httpd restart failed"
fi
else
log_format "INFO" "$machine httpd service on is running"
fi
}
# 对列表中的每台机器执行检查和重启操作
for machine in "${machines[@]}"; do
check_and_restart_httpd "$machine"
done
# 检查http进程超过5并在固定时间重启http
check_and_http_process_restart_service() {
machine=$1
process_count=$(ssh $machine "ps aux | grep $HTTPD_SERVICE | grep -v grep | wc -l")
if [[ $process_count -ge 5 ]] && [[ "$R1" -eq "$C1" ]]; then
log_format "OK" "$machine process >= 5, restart httpd success"
ssh $machine "sudo /bin/bash -c 'systemctl restart httpd'"
else
log_format "INFO" "$machine process < 5 is not in the restart time, no need to restart httpd"
fi
}
# 对列表中的每台机器执行检查和重启操作
for machine in "${machines[@]}"; do
check_and_http_process_restart_service "$machine"
done