• 配置需要监控的服务器
    • 数组定义:host_ports=(host_name=host_port=uri_path)
      host_name为容易识别的服务器名称
      host_port为服务器ip和服务端口
      uri_path为经济的请求路径
    • 为脚本运行的服务器开放防火墙端口,内网ip和外网ip皆可,但要与host_port一致
      -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 121.45.111.17 --dport 8090 -j ACCEPT
  • 监控结果记录日志
    • 先记录日期
      echo `date +'%Y-%m-%d %H:%M:%S'` > $log
    • 选择notify_host,需要提供发送邮件的接口,所以前面定义数组时将有邮件接口的host放在前面,找到第一个运行正常的host即可作为notify_host
          if [ -z $notify_host ]; then
              notify_host=$host_port
          fi
    • 检查完后检查日志文件,大于1行则发邮件通知
      curl http://$notify_host/admin/monitor.html?log=$log > /dev/null 2>&1
  • crontab定时运行监控脚本
    • crontab配置,每20分钟检查一次
      */20 * * * * /soft/monitor.sh >> /soft/logs/monitor-cron.log
    • 运行效果,测试时每两分钟检查一次
    • 邮件通知

脚本内容
log=/soft/logs/monitor.log
echo `date +'%Y-%m-%d %H:%M:%S'`
echo `date +'%Y-%m-%d %H:%M:%S'` > $log
host_ports=(
caifuxiang-slave-test=121.45.111.17:8080=/monitor.html
ghcaiyuan-slave-test=121.45.111.17:8080=/monitor.html
caifuxiang-app=121.45.111.17:8080=/monitor.html
caifuxiang-app2=121.45.111.17:8080=/monitor.html
ghcaiyuan-app=121.45.111.17:8080=/monitor.html
ghcaiyuan-app2=121.45.111.17:8080=/monitor.html
caifuxiang-master-upload=121.45.111.17:8090=/upload/crossdomain.xml
ghcaiyuan-master-upload=121.45.111.17:8090=/upload/crossdomain.xml
)
#echo ${host_ports[*]}
for ((i=0;i<${#host_ports[@]};++i))
do
host_name=`echo ${host_ports[i]}|cut -d "=" -f 1`
host_port=`echo ${host_ports[i]}|cut -d "=" -f 2`
uri_path=`echo ${host_ports[i]}|cut -d "=" -f 3`
#echo $host_port
if curl http://$host_port$uri_path > /dev/null 2>&1
then
        #echo "$host_name is ok"
    if [ -z $notify_host ]; then
        notify_host=$host_port
    fi
else
    echo "$host_name is not ok"
        echo "$host_name is not ok" >> $log
fi
done
log_lines=`cat $log|wc -l`
#echo "$log lines: $log_lines"
if [ $log_lines -gt 1 ]; then
    echo "send notify email using: $notify_host, log: $log"
    #curl http://$notify_host/admin/monitor.html?log=$log > /dev/null 2>&1
    log_content=`cat $log` #post log_content to notify_host, cause it can't get file $log
    curl -d "log=$log_content" http://$notify_host/admin/monitor.html > /dev/null 2>&1
else
    echo "everything is ok"
fi

附件列表

linux服务监控脚本的更多相关文章

  1. linux centos7 定时执行服务监控脚本

    2021-08-25 1. 需求 在服务挂掉之后我们要怎么做才能保证服务在短时间内开启?可以编写脚本监控服务的状态,在服务挂掉后及时将其开启,并定时执行该脚本. 2. 脚本编写 思路:平常我们可以通过 ...

  2. Zabbix Linux http 监控脚本

    说明:自定义监控脚本,监控内存是否启用主进程 创建文件:vim check_http.sh #!/bin/bash result=`ps -ef | grep httpd | grep -v grep ...

  3. linux 服务发布脚本升级,远程发布,指定拉取远程dev,test等分支代码

    1.本地发布脚本 publish.sh #!/bin/sh currentDay=`date +%Y%m%d` currentTime=`date +%Y%m%d%H%M%S` tomcat1=/da ...

  4. Linux 负载监控脚本

    #!/bin/bash Date=`echo $(date +%Y\-%m\-%d\ %H:%M:%S)`HostName=`hostname`IP=`ifconfig eth0 | grep &qu ...

  5. linux服务器监控脚本

    #!/bin/bash #获取cpu使用率 cpuUsage=`top -n 1 | awk -F '[ %]+' 'NR==3 {print $2}'` #获取磁盘使用率 data_name=&qu ...

  6. linux网络监控脚本

    http://www.51testing.com/html/92/77492-828434.html

  7. linux重启服务的脚本命令

    最近做网站测试,每次测试完成都要重启服务,为此写了一个简单的shell脚本 linux服务重启shell脚本示例 2014年12月18日 linux服务重启脚本,如何实现linux服务的定时重启,可以 ...

  8. Linux 服务器系统监控脚本 Shell【转】

    转自: Linux 服务器系统监控脚本 Shell - 今日头条(www.toutiao.com)http://www.toutiao.com/i6373134402163048961/ 本程序在Ce ...

  9. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

随机推荐

  1. Codeforces 712 D. Memory and Scores (DP+滚动数组+前缀和优化)

    题目链接:http://codeforces.com/contest/712/problem/D A初始有一个分数a,B初始有一个分数b,有t轮比赛,每次比赛都可以取[-k, k]之间的数,问你最后A ...

  2. commondline 之二 执行类

    E:\cn\zno\commandline\Test.class package cn.zno.commandline; import java.lang.management.ManagementF ...

  3. OC中控制台日志打印

    OC中Debug版本常用的打印格式化操作   %@ 对象   %d,%i 整型 (%i的老写法)   %hd 短整型   %ld , %lld 长整型   %u 无符整型   %f 浮点型和doubl ...

  4. WCF再学习小结

    http://www.cnblogs.com/jillzhang/archive/2010/04/04/1704388.html http://leelei.blog.51cto.com/856755 ...

  5. HttpContext及HttpContext.current

    慎用System.Web.HttpContext.Current http://www.cnblogs.com/david1989/p/3879201.html 线程编程中用到HttpContext. ...

  6. ngTbale假分页实现排序、搜索、导出CSV等功能

    一. ngTable功能简化 使用ngTable经常有分页,排序,过滤等功能,实现诸多功能较为麻烦.为了方便开发过程,可以抽取一些table共同点写一个公有方法. 注意: 1. 由于很多特别的需求,可 ...

  7. svn 冲突解决

    svn: E155015: Aborting commit: '$path + $file' remains in conflict 解决步骤 1.svn resolved 'file'执行后结果Re ...

  8. 从零开始学android开发-项目打包发布

    右键项目 选择[android tools]-[export signed application package] 点击[next] 如果没有keystore可以选择[create new keys ...

  9. Codeforces Educational Codeforces Round 5 E. Sum of Remainders 数学

    E. Sum of Remainders 题目连接: http://www.codeforces.com/contest/616/problem/E Description The only line ...

  10. C# 程序员最常犯的 10 个错误

    关于C# C#是达成微软公共语言运行库(CLR)的少数语言中的一种.达成CLR的语言可以受益于其带来的特性,如跨语言集成.异常处理.安全性增强.部件组合的简易模型以及调试和分析服务.作为现代的CLR语 ...