shell监控脚本-监控web server

简介:

shell监控脚本-监控web server 

注意:请先参考 shell监控脚本-准备工作,监控脚本在 rhel5 下测试正常,其它版本的linux 系统请自行测试
#监控web server

 
  1. cat chk_web.sh

  2. #!/bin/bash

  3. #

  4. #script_name:chk_web.sh

  5. #check web server 80 port

  6. #

  7. #last update 20130320 by dongnan

  8. #bbs# http://bbs.ywwd.net/

  9. #blog# http://dngood.blog.51cto.com

  10. #

  11. #curl -IL http://10.0.100.75/check.html 2>&1 | grep '200'

  12. #HTTP/1.1 200 OK

  13. #别忘了在你的web服务器创建一个check.html

  14. #variables

  15. curl=/usr/bin/curl

  16. usleep=/bin/usleep

  17. echo=/bin/echo

  18. sh_dir=/root/sh/

  19. crondir=${sh_dir}crontab

  20. check_count=5        #故障后检查次数

  21. fault_count=4        #故障次数大于(等于),则认为不可用

  22. options='--connect-timeout 1 -IL -A "check_www"'

  23. source ${sh_dir}CONFIG

  24. hosts="$LINUX_WEB_HOSTS"

  25. #main

  26. test -e "${crondir}/log" || mkdir -p "${crondir}/log"

  27. #主循环遍历机器

  28. for HOST in $hosts ;do

  29. flag_file=$crondir/log/"$HOST".web

  30. log=$crondir/log/web_error.log

  31. #curl真

  32. if $curl $options http://"$HOST"/check.html 2>&1 | grep '200' > /dev/null;then

  33.    #flag真,解除报警

  34.    if [ -f $flag_file ];then

  35.        #sms

  36.        #for mobile in $MOBILES; do

  37.            #$echo "cdn_www ok" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode

  38.            #$echo "cdn_www_index.html ok"

  39.        #done

  40.        #email

  41.        for mail in $MAILS;do

  42.            echo "$HOST 80 port ok" | mail -s "$HOST 80 port ok" $mail

  43.        done

  44.        #delete flag

  45.        test -e "$flag_file" && rm -f "$flag_file"

  46.    fi

  47. #curl假

  48. else

  49.    #flag真,跳出循环(已报警)

  50.    test -e $flag_file && continue

  51. check_failed=0

  52.    #

  53.    for((i=1;i<="$check_count";i++));do

  54. check_date=$(date '+ %F %T')

  55.        #curl 值取反

  56.        if ! $curl $options http://"$HOST"/check.html 2>&1 | grep '200' > /dev/null;then

  57.            #变量加1

  58.            ((check_failed++))

  59.            #error.log

  60.            $echo "$(/bin/date +'%F %T') $HOST $check_failed fault" >> "$log"

  61.            #使用微妙或者秒

  62.            $usleep 300000 || sleep 1

  63.        fi

  64.    done

  65.    #大(等)于fault_count发送报警

  66.    if [ "$check_failed" -ge "$fault_count" ];then

  67.         #sms

  68.         #for mobile in $MOBILES;do

  69.             #$echo "www_cdn_index.html error" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode

  70.             #/bin/date +'%F %T' && $echo "www_cdn_index.html error"

  71.         #done

  72.         #mail

  73.         for mail in $MAILS;do

  74.             echo "$HOST 80 port error" | mail -s "$HOST 80 port error" $mail

  75.         done

  76.         #log

  77.         echo "$check_date $HOST web error" >> $log    

  78.         #flag

  79.         $echo "cdn_www_index.html error" > "$flag_file"

  80.    fi

  81. #主if结束

  82. fi

  83. #主循环结束

  84. done


结束
更多请:  
linux 系统运维  37275208  
vmware 虚拟化  166682360


本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/1163562


相关文章
|
6月前
|
监控 Linux 调度
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
145 1
Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来
|
监控 前端开发 JavaScript
ARMS的Web应用监控
【8月更文挑战第23天】
205 8
|
存储 数据库 开发者
Ruby的魔法之旅:如何从命令行脚本演变为Web应用
【8月更文挑战第31天】在编程领域,Ruby凭借其灵活优雅的语法深受开发者喜爱。从命令行脚本到Web应用,Ruby均能游刃有余。它可以帮助我们简化日常任务,如批量重命名文件或自动备份数据。随着技能提升,Ruby还能用于开发复杂的数据抓取工具,并通过Sinatra框架快速搭建Web接口,实现功能共享。其强大的社区支持和简洁的代码风格,使Ruby成为探索编程世界的理想选择,无论处理文本还是构建应用,Ruby都能带来高效与便捷。
145 0
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
189 2
【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext' is not recognized as the name
【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext' is not recognized as the name
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
595 0
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
1066 0
|
2月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
385 9
|
2月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
253 2