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 protected]
#执行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

时间: 2024-12-20 01:46:48

tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)的相关文章

自定义监控脚本--监控端口

#!/bin/bash port_array=(`netstat -ntpl|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`) length=${#port_array[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0; i<$length; i+

Linux下shell脚本监控Tomcat的状态并实现自动启动

最近公司需要在Linux下监控tomcat的服务,一旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运行,由于Linux下有Shell脚本可以实现此效果,下面是Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤. 1.编写Shell脚本monitor.sh #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作# author:EagleHao# date:2018-04-08# DEFINE # 获取tomcat进程ID(其中[grep

【转载】用shell脚本监控进程是否存在 不存在则启动的实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 ---------

用shell脚本监控进程是否存在 不存在则启动的实例附带if判断详细条件

#!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 --------------------------------------------

19.12添加自定义监控项目19.13-14配置邮件告警19.15测试告警19.16不发邮件问题处理

19.12添加自定义监控项目客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf//增加UnsafeUserParameters=1 //表示使用自定义脚本UserParameter=my.estab.count[],/usr/local/sbin/estab.sh//自定义监控项的key为my.estab.count,后面的[]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh搜索 /UnsafeUserPar

使用shell脚本监控少量服务器并发送微信告警信息

01. 概括 1.0 脚本更新地址Git更新地址:shell_monitor_script.sh文章原文地址:使用shell脚本监控少量服务器并发送微信告警信息 1.1 前提:平台系统:linux系统下接收信息:微信企业号 1.2 脚本说明需要修改微信接口脚本对应参数的修改:包括IP,告警阈值等 1.3 脚本使用该脚本监控包括Disk.CPU.MEM.LOAD等主机资源,以及docker服务和docker容器.将该脚本附件假定放于:/home/mai/.check_host.sh.那么在定时任务

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

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:    #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi #####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 定时执行:

shell脚本监控进程是否存在,不存在则启动实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存在 定时执行

AIX进程监控脚本分享一例

分享一个AIX进程监控脚本: 当MWM进程数大于2时,调用sendmail发送邮件通知用户,脚本如下 #!/usr/bin/ksh #---------------------------------------------------------------# # Script Name : MWM Check Shell # Created by  : Xin23 #         on  : 2015.02.04 #------------------------------------