我们在线上跑的服务,不知道为什么最近有几回运行的进程莫名其妙的就没有了,就特意写了这个监控脚本,让其自动扫描服务,把访问不正常的服务,自动启动或重启服务,并且导出当时的线程使用情况,方便定位问题。
步骤:
1.修改web服务名称和端口
monitorTcp.sh
2.修改扫描时间
monitorServer.sh
3.启动守候进程
/usr/bin/nohup /bin/sh /home/Gzh/shell/monitorServer.sh 2>&1 > /dev/null &
monitorServer.sh
#!/bin/sh
###########################################################
#desc:后台守候检查服务是否正常
#author:gaozhonghui
#mail:toptreegzh@163.com
#date:20121210
###########################################################
while true
do
/bin/sh /home/Gzh/shell/monitorTcp.sh > /dev/null 2>&1
sleep 10
done
monitorTcp.sh
#!/bin/sh
#####################################################
#desc:扫描后台服务器的应用服务器,若不能正常访问则重启
#author:gaozhonghui
#mail:toptreegzh@163.com
#date:20121127
#######################################################
year=`date -d "today" +"%Y"`
monthday=`date -d "today" +"%m"`
date=$(date -d "today" +"%Y%m%d")
#被监控服务器、端口列表
#str = web服务文件夹:端口号
server_all_list=(
'www.test2.com:9090'
'www.test.com:8090'
)
#应用服务器基路径
serverBasePath="/web/webserver/jboss/"
#日志路径
logBasePath="/web/webserver/logs/$year/$monthday/"
#获得监控服务PID
function_getPID(){
local PID=`ps -ef|grep $1|grep java |awk '{print $2}'`
echo $PID
}
#dump 线程详细信息方便定位问题
function_jstackinfo(){
PID=`function_getPID $1`
if [ x$PID != x"" ] ;then
if [ ! -d ${logBasePath} ];then
mkdir -p ${logBasePath}
fi
jstack -l ${PID} >> ${logBasePath}"jstack_$1_${date}.log"
fi
}
#关闭应用服务
function_shutdown(){
local shutdownSh=${serverBasePath}$1"/bin/shutdown.sh"
if [ -f $shutdownSh ];then
local PID=`function_getPID $1`
if [ x$PID != x"" ] ;then
sh $shutdownSh > /dev/null 2>&1
sleep 2
fi
local PID2=`function_getPID $1`
if [ x$PID2 != x"" ];then
kill -9 $PID2
fi
fi
}
#启动应用服务
function_startup(){
local startupSh=${serverBasePath}$1"/bin/startup.sh"
if [ -f $shutdownSh ];then
sh $startupSh > /dev/null 2>&1
fi
}
#重启应用服务
function_restart(){
function_shutdown $1
sleep 5
function_startup $1
}
#扫描监控服务
for server in ${server_all_list[@]}; do
server_ip=127.0.0.1
server_name=$( echo ${server} | awk -F ':' '{print $1}')
server_port=$( echo ${server} | awk -F ':' '{print $2}')
#status: 0,http down 1,http ok 2,http down but ping ok
if nc -vv -z -w 2 $server_ip $server_port > /dev/null 2>&1;then
status=1
else
if nc -vv -z -w 3 $server_ip $server_port > /dev/null 2>&1;then
status=1
else
if ping -c 1 $server_ip > /dev/null 2>&1;then
status=2
else
status=0
fi
fi
fi
if [ x$status != x"1" ];then
PID=`function_getPID ${server_name}`
if [ x$PID != x ];then
function_jstackinfo ${server_name}
function_restart ${server_name}
else
function_startup ${server_name}
fi
fi
done
分享到:
相关推荐
通过Web应用启动和管理这些服务,可以实现自动化运维,提高效率,但也需注意避免因误操作导致的服务中断。 7. **日志监控与审计**:所有通过Web应用执行的Shell操作都应记录在日志中,便于后期审查和审计。日志分析...
自动监控Web服务进程的shell脚本。我们在线上跑的服务,不知道为什么最近有几回运行的进程莫名其妙的就没有了,就特意写了这个监控脚本,让其自动扫描服务,把访问不正常的服务,自动启动或重启服务,并且导出当时的...
Python是一种强大的编程语言,因其简洁易读的语法和丰富的库支持,常被用于开发各种自动化工具和后台服务。Flask则是一个轻量级的Web服务器和应用程序框架,它允许开发者快速构建RESTful API和Web应用,非常适合实现...
总结,"linux-一些常用的shell脚本用于webserver的服务安装线上代码发布推送等"提供了宝贵的资源,不仅能够帮助我们自动化日常运维任务,提高工作效率,还能作为学习和提升Linux技能的有效途径。通过深入理解和应用...
### 监控php-fpm并自动重启服务的Shell脚本详解 #### 背景介绍 在Web开发中,PHP是常用的服务器端脚本语言之一,而`php-fpm`(FastCGI Process Manager)是一种PHP FastCGI的实现,能够提供更好的性能表现和资源...
标题“监控内部web系统http响应状态异常时自动重启”指的是一个自动化监控解决方案,它能够检测内部web系统的HTTP响应状态,并在发现异常时自动重启服务,确保系统的稳定运行。这一技术通常应用于大型分布式系统或者...
### Shell脚本实现本地文件与服务器文件同步 #### 背景与意义 在软件开发过程中,经常需要将本地开发环境中的文件同步到服务器上进行部署或测试。手动上传不仅耗时而且容易出错,因此编写一个自动化脚本来实现文件...
本书《shell脚本编程100例》为读者提供了100个实战性的shell脚本编程实例,涵盖了检测网段主机状态、猜数字游戏、打印乘法口诀、使用rsync备份数据、切割Nginx日志、监控服务端口、使用mtime删除历史文件或日志文件...
在Java应用部署中,shell脚本通常用于启动、停止、监控服务等操作。 - `tomcat.sh`可能是一个用于管理Tomcat服务器的脚本,如启动、停止、重启Tomcat实例,或者配置环境变量。 2. **Java Archive (JAR) 文件**: ...
【Shell手册】则涉及到Shell脚本编程,它是Linux或Unix系统中用于编写自动化任务的命令解释器。通过Shell脚本,运维人员可以编写一系列命令,实现批量处理任务,例如文件管理、数据处理、系统维护等。Shell脚本的...
在Linux环境中,Web服务器如Apache或Nginx每天都会生成大量的访问日志,这些日志对于监控服务器状态、分析用户行为、排查问题等都至关重要。为了有效地管理和利用这些日志,我们可以编写一个shell脚本来自动化地处理...
15、Shell批量监控服务发送邮件报警.mp4 14、Linux下自动化运维企业案例.mp4 13、Linux系统增量备份脚本.mp4 12、Shell编程四剑客及案例详解.mp4 11、Shell编程之SED及GREP综合讲解.mp4 10、Linux下深入编程之函数及...
目录网盘文件永久链接 1.Linux下Shell编程基础入门.mp4 2.Shell编程之变量及LAMP导航菜单...17.Shell批量监控服务发送邮件报警.mp4 18.Shell编程之实战WEB界面展示一.mp4 19.Shell编程之实战WEB界面展示二.mp4 .....
3. **服务器管理**:这部分内容涵盖如何维护和优化Linux服务器,包括服务配置(如Apache、Nginx web服务器,MySQL数据库等)、性能监控、安全策略(如防火墙规则、权限控制、SSH安全设置)以及故障排查。通过学习,...
通过学习Bash或其他Shell语言,可以编写自动化任务,如文件备份、系统监控等。 3. **Zabbix**:Zabbix是一款开源的企业级监控解决方案,用于监控网络服务、硬件状态和应用程序性能。理解Zabbix的配置、安装、数据...
它能监控系统服务状态,并在主服务器失效时自动将流量切换到备用服务器。在自动化部署中,配置keeplived可以确保Nginx或Tomcat服务的持续可用性,减少服务中断带来的影响。 `NFS`(Network File System)是用于在...
电力自动化监控系统中的WEB服务允许远程维护和浏览,这就需要Linux系统提供强大的防火墙和安全策略,防止未授权的访问。 在电力监控系统中,事件报警功能能实时监测异常情况,重要报警信息会立即通知操作人员,同时...
4. **启动和管理服务**:用户可以启动、停止或重启web服务器及相关服务,确保应用正常运行。 5. **日志查看**:通过SSH客户端,用户可以实时查看服务器的日志文件,帮助诊断和解决问题。 6. **安全更新和维护**:...
Linux 系统 Tomcat 重启脚本判断日志超过一定大小自动重启,是指在 Linux 操作系统中使用 shell 脚本来监控 Tomcat 服务器的日志文件大小,当日志文件超过一定大小时,自动重启 Tomcat 服务器,以确保服务的稳定运行...