tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)
服务器环境:centos7.2 64位 tomcat8.5.6
tomcat 监控功能共需要两个脚本,如下:
initMonitor.sh
#!/bin/sh
#初始化监控脚本相关变量
export tomcat_name=apache-tomcat-8.5.6
export tomcat_home=/usr/local/apache-tomcat-8.5.6
#测试接口访问地址
export webUrl=127.0.0.1:8080/yanglao/sysUserController/sysTest
#监控脚本日志路径
export tomcatMonitorLog=/tmp/yanglao/tomcatMonitor.log
export email_address=ruixin_yu@asdc.com.cn
#执行tomcat监控脚本
#获取当前脚本所在目录
baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)
$baseDirForScriptSelf/tomcatMonitor.sh
tomcatMonitor.sh
#!/bin/sh
# 获取tomcat进程ID /usr/local/tomcat_ds_api
TomcatID=$(ps -ef |grep tomcat |grep -w $tomcat_name|grep -v 'grep'|awk '{print $2}')
# tomcat启动程序
StartTomcat=$tomcat_home/bin/startup.sh
# 日志输出
if [ -f $tomcatMonitorLog ]; then
echo "日志文件已创建"
else
echo "日志文件为创建,马上创建!"
touch $tomcatMonitorLog
fi
#tomcatMonitorLog=/tmp/yanglao/tomcatMonitor.log
TryConnection(){
echo $tomcat_name
echo '$tomcat_name'
TryTomcatID=$(ps -ef |grep tomcat |grep -w $tomcat_name|grep -v 'grep'|awk '{print $2}')
echo "[info]开始重新查看tomcat进程:$TryTomcatID...[$(date +'%F %H:%M:%S')]"
if [[ $TryTomcatID ]];then
echo "[info]当前tomcat进程ID为:$TryTomcatID,继续重新检测接口..."
# 检测是否启动成功(成功的话接口会返回状态"200")
TomcatServiceCodeTry=$(curl -s -m 10 --connect-timeout 10 $webUrl -w %{http_code})
if [[ $TomcatServiceCodeTry -eq 200 ]];then
echo "[info]系统接口返回码为$TomcatServiceCodeTry,tomcat重启成功,访问系统接口正常......"
echo "[error]发送告警关闭邮件"
echo "tomcat重启成功,访问系统接口正常 [$(date +'%F %H:%M:%S')]"|mail -s "智能养老项目告警关闭" $email_address
else
sleep 30
TryConnection
fi
else
sleep 30
TryConnection
fi
}
Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [[ $TomcatID ]];then # 这里判断TOMCAT进程是否存在
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测系统接口..."
# 检测是否启动成功(成功的话接口会返回状态"200")
TomcatServiceCode=$(curl -s -m 10 --connect-timeout 10 $webUrl -w %{http_code})
if [[ $TomcatServiceCode -eq 200 ]];then
echo "[info]接口返回码为$TomcatServiceCode,tomcat运行正常,访问系统接口正常......"
else
echo "[error]访问系统接口出错,请注意......状态码为$TomcatServiceCode"
echo "[error]访问系统接口出错,开始重启tomcat"
echo "[error]发送告警开启邮件"
echo "由于访问系统接口出错,tomcat开始自动重启 [$(date +'%F %H:%M:%S')]"|mail -s "智能养老项目告警开启" $email_address
kill -9 $TomcatID # 杀掉原tomcat进程
sleep 3
rm -rf $TomcatCache # 清理tomcat缓存
$StartTomcat
sleep 3m
TryConnection #检查是否启动成功
fi
else
echo "[error]tomcat进程不存在!tomcat开始自动重启..."
echo "[info]$StartTomcat,请稍候......"
echo "[error]发送告警开启邮件"
echo "由于tomcat进程不存在 tomcat开始自动重启 [$(date +'%F %H:%M:%S')]"|mail -s "智能养老项目告警开启" $email_address
rm -rf $TomcatCache
$StartTomcat
sleep 3m
TryConnection #检查是否启动成功
fi
echo "------------------------------"
}
Monitor>>$tomcatMonitorLog
前期准备:
- 安装crontab
- 配置邮件发送环境
脚本介绍:
- initMonitor.sh中可配置脚本中使用的变量,除参数配置外,此脚本中将调用tomcatMonitor.sh,此脚本再次调用的原因是export所设置的变量,仅在该shell以及它的子shell中有效。
- tomcatMonitor.sh为tomcat监控的业务逻辑脚本
使用说明:
1.将initMonitor.sh,tomcatMonitor.sh两个脚本放入服务器同级目录下(如:/usr/bin/yanglao)
2.如需配置脚本对应变量,请编辑initMonitor.sh,不需要更改的可跳过此步
3.使用crontab设置定时执行initMonitor.sh:
1)# crontab -e
2 )插入/5 * * * /usr/bin/yanglao/initMonitor.sh
3)#systemctl reload crond
#systemctl restart crond
经过以上操作,脚本即可运行,开始检测tomcat。
检测范围:tomcat进程关闭 , 系统接口无法访问
告警动作:发送邮件至initMonitor.sh设置的邮件,并重启tomcat。
重启后对tomcat重新进行检测,检测运行正常后,发送告警关闭邮件http://www.itwendao.com/article/detail/153863.html
c:\>curl -sL -w"%{http_code}""www.baidu.com"-o/dev/null200我是状态码,还好不是返回250c:\>curl -sL -w"我是状态码:%{http_code}"www.baidu.com -o/dev/null我是状态码:200##从apache中剔除此节点
sed -i 's/worker.controller.balance_workers=tomcat1,tomcat2,tomcat3/worker.controller.balance_workers=tomcat2,tomcat3/g' /usr/local/apache2/conf/workers.properties
/usr/local/apache2/bin/apachectl graceful
tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)的更多相关文章
- Oracle 11g DATAGUARD 同步延时监控脚本
转自 https://blog.51cto.com/8858975/1401988监控脚本(注:这里没用Sendmail工具发送邮件,如果用的话需要修改)$cat check_oracle_dg_de ...
- 用shell脚本监控进程是否存在 不存在则启动的实例
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...
- 写一个python脚本监控在linux中的进程
在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...
- linux shell脚本监控进程是否存在
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...
- 轻量级监控平台之java进程监控脚本
轻量级监控平台之java进程监控脚本 #!/bin/bash #进程监控脚本 #功能需求: 上报机器Java进程的进程ID,对应的端口号service tcp端口号,tomcat http 端口号,以 ...
- linux shell脚本守护进程监控svn服务
最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...
- web站点监控脚本web_status_code,tomcat 80,oracle1521
1,完整的监控脚本如下 #!/bin/bash #web_status_code=`curl -o /dev/null -s -w "http_code:%{http_code}" ...
- Python 监控脚本(硬盘、cpu、内存、网卡、进程)
#磁盘使用率disk = psutil.disk_partitions()for i in disk: print "磁盘:%s 分区格式:%s"%(i.device,i ...
- Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例
Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep ...
随机推荐
- vue过渡
vue在插入.更新或者移除DOM时,提供了多种不同方式的应用过渡效果,下面主要总结一些常用的过渡. 单元素过渡(vue1.0) 我们常用的动画是css3的动画,在vue中依旧有效. <!DOCT ...
- Rstdio 中print中文乱码
在Consol中输入 Sys.setlocale("LC_ALL","Chinese") 即可
- BOF、EOF 属性
BOF.EOF 属性 BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前. EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后. 返回值 BOF 和 EOF ...
- golang的垃圾回收(GC)机制
golang的垃圾回收采用的是 标记-清理(Mark-and-Sweep) 算法 就是先标记出需要回收的内存对象快,然后在清理掉: 在这里不介绍标记和清理的具体策略(可以参考https://lengz ...
- [UE4]Canvas Panel
一.Canvas Panel:画布.Canvas Panel中内的元素可以任何摆放位置.Canvas Panel是UserWiget默认的根节点容器,可以把跟节点删除替换生成任何的UI元素. 二.选择 ...
- [UE4]移动相机,使用Arrow组件来标记移动位置
一.创建一个Arrow组件来标记要移动的位置(Arrow的用法之一就是用来标注坐标). 二.使用TimeLine时间轴结合插值Lerp来移动相机
- arp协议分析&python编程实现arp欺骗抓图片
arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...
- 在html中用js代替${pagecontext.request.getcontextpath}这样就不用使用jsp了
var pathArray = window.location.pathname.split('/'); var secondLevelLocation = pathArray[1]; var l ...
- MySql 引擎
存储引擎: 存储引擎就是指表的类型以及表在计算机上的存储方式 它处于MySQL体系架构中Server端底层,是底层物理结构的实现,用于将数据以各种不同的技术方式存储到文件或者内存中,不同的存储引擎具备 ...
- 第2章 GNS3和PacketTracer网络模拟器(1)_GNS3概述
1. 安装和配置GNS3 1.1 GNS3概述 (1)GNS3是一款具有图形化界面,可运行在多平台(包括Windows.Linux.Mac OS等)上面的网络虚拟软件. (2)可以在虚拟环境中运行Ci ...