服务器环境: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

前期准备:

  1. 安装crontab
  2. 配置邮件发送环境

脚本介绍:

  1. initMonitor.sh中可配置脚本中使用的变量,除参数配置外,此脚本中将调用tomcatMonitor.sh,此脚本再次调用的原因是export所设置的变量,仅在该shell以及它的子shell中有效。
  2. 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/null
200
 
 
 
我是状态码,还好不是返回250
c:\>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监控脚本(监控进程,测试接口,告警动作为发送邮件)的更多相关文章

  1. Oracle 11g DATAGUARD 同步延时监控脚本

    转自 https://blog.51cto.com/8858975/1401988监控脚本(注:这里没用Sendmail工具发送邮件,如果用的话需要修改)$cat check_oracle_dg_de ...

  2. 用shell脚本监控进程是否存在 不存在则启动的实例

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

  3. 写一个python脚本监控在linux中的进程

    在虚拟机中安装Linux中的CentOS7系统 https://baijiahao.baidu.com/s?id=1597320700700593557&wfr=spider&for= ...

  4. linux shell脚本监控进程是否存在

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:    #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...

  5. 轻量级监控平台之java进程监控脚本

    轻量级监控平台之java进程监控脚本 #!/bin/bash #进程监控脚本 #功能需求: 上报机器Java进程的进程ID,对应的端口号service tcp端口号,tomcat http 端口号,以 ...

  6. linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  7. web站点监控脚本web_status_code,tomcat 80,oracle1521

    1,完整的监控脚本如下 #!/bin/bash #web_status_code=`curl -o /dev/null -s -w "http_code:%{http_code}" ...

  8. Python 监控脚本(硬盘、cpu、内存、网卡、进程)

    #磁盘使用率disk = psutil.disk_partitions()for i in disk:    print "磁盘:%s   分区格式:%s"%(i.device,i ...

  9. Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

    Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep ...

随机推荐

  1. erlang 安装

    [root@Aliyun software]# rpm -Uvh erlang-solutions-1.0.1.noarch.rpm [root@Aliyun software]# yum -y in ...

  2. [UE4]InterpToMovement

    InterpToMovement:可以让Actor在规定时间内,在多个点之间循环移动. Duration:规定时间

  3. [UE4]自定义服务器Service

  4. OpenCV-Python基本功能

    一.图像读取/保存 import cv2 img = cv2.imread("name.png") cv2.imwrite('save.jpg', img) #显示图像 cv2.i ...

  5. 梯度下降(Gradient Descent)相关概念

    梯度,直观理解: 梯度: 运算的对像是纯量,运算出来的结果会是向量在一个标量场中, 梯度的计算结果会是"在每个位置都算出一个向量,而这个向量的方向会是在任何一点上从其周围(极接近的周围,学过 ...

  6. vue写后台管理系统问题概述和解决方案

    一个不错的Demo; http://xmall.exrick.cn/#/home 源码:https://gitee.com/Exrick/xmall-front/blob/master/src/pag ...

  7. Winfrom 设置Panel添加滚动条

    AutoScroll是自动滚动的属性. 把AutoScroll设置为True;

  8. 流(Stream)与文件流(FileStream)

    //通过流的方式添加 StreamWriter writer = new StreamWriter(@"C:\A\ca.txt", true, Encoding.Default); ...

  9. flask session,蓝图,装饰器,路由和对象配置

    1.Flask 中的路由   *endpoint - url_for 反向地址  *endpoint 默认是视图函数名  *methods 指定视图函数的请求方式,默认GET  defaults={& ...

  10. linux下mysql-5.6忘记root密码,重置root密码详细过程

      在linux平台下使用mysql过程中忘记了root密码,对于运维和DBA来讲都是一件头疼的事情,下面来讲解下怎么进行重置mysql数据库root 密码: 1.首先停止mysql服务进程: 1 s ...