前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控

脚本实现web的健康检查

1、编写脚本

[root@lb01 ~]# vim /script/nginx_check.sh

#!/bin/bash
#定义需要监控的节点
rs_arr=(
172.25.254.134
172.25.254.135
)
file_location=/usr/local/nginx/html/test.html
#定义函数web_result用于检测RS节点的web服务状态
function web_result {
rs=`curl -I -s $/index.html|awk 'NR==1{print $2}'`
return $rs
}
#定义函数new_row用于根据固定样式产生html表格框架
function new_row {
cat >> $file_location <<eof
<tr>
<td bgcolor="$4">$</td>
<td bgcolor="$4">$</td>
<td bgcolor="$4">$</td>
</tr>
eof
}
#定义函数auto_html通过并调用new_row冰箱其传递参数填充表格内容
function auto_html {
web_result $
rs=$?
if [ $rs -eq ]
then
new_row $ $ up green
else
new_row $ $ down red
fi
} while true
do
#产生头部部分
cat >> $file_location <<eof
<h4>The Status Of RS :</h4>
<table border="">
<tr>
<th>NO:</th>
<th>IP:</th>
<th>Status:</th>
</tr>
eof #循环产生每个节点的表格信息
for ((i=;i<${#rs_arr[*]};i++));do
auto_html $i ${rs_arr[$i]}
done #产生表格结尾部分
cat >> $file_location <<eof
</table>
eof sleep
>$file_location #每一次循环晴空一次html文件
done

2、修改配置文件

[root@lb01 ~]# vim /usr/local/nginx/conf/nginx.conf

worker_processes  ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
upstream web_pools {
server 172.25.254.134: weight=;
server 172.25.254.135: weight=;
}
server {
listen ;
server_name www.lbtest.com;
location / {
root html;
index test.html index.htm;
# proxy_set_header Host $host;
# proxy_pass http://web_pools;
}
}
}

3、执行脚本

[root@lb01 ~]# sh /script/nginx_check.sh

4、 浏览器访问看结果

看test.html

[root@lb01 ~]# watch -n  "cat /usr/local/nginx/html/test.html"
<h4>The Status Of RS :</h4>
<table border="">
<tr>
<th>NO:</th>
<th>IP:</th>
<th>Status:</th>
</tr>
<tr>
<td bgcolor="green"></td>
<td bgcolor="green">172.25.254.134</td>
<td bgcolor="green">up</td>
</tr>
<tr>
<td bgcolor="green"></td>
<td bgcolor="green">172.25.254.135</td>
<td bgcolor="green">up</td>
</tr>
</table>

5、关闭172.25.254.134的httpd

[root@web1 image]# systemctl stop httpd

查看test.html

[root@lb01 ~]# watch -n  "cat /usr/local/nginx/html/test.html"
<h4>The Status Of RS :</h4>
<table border="">
<tr>
<th>NO:</th>
<th>IP:</th>
<th>Status:</th>
</tr>
<tr>
<td bgcolor="red"></td>
<td bgcolor="red">172.25.254.134</td>
<td bgcolor="red">down</td>
</tr>
<tr>
<td bgcolor="green"></td>
<td bgcolor="green">172.25.254.135</td>
<td bgcolor="green">up</td>
</tr>
</table>

6、 恢复

[root@web1 image]# systemctl start httpd

查看test.html

[root@lb01 ~]# watch -n 1 "cat /usr/local/nginx/html/test.html"
<h4>The Status Of RS :</h4>
<table border="">
<tr>
<th>NO:</th>
<th>Status:</th>
</tr>
<tr>
<td bgcolor="green"></td>
<td bgcolor="green">172.25.254.134</td>
<td bgcolor="green">up</td>
</tr>
<tr>
<td bgcolor="green"></td>
<td bgcolor="green">172.25.254.135</td>
<td bgcolor="green">up</td>
</tr>
</table

已经实现了对web端的监控

7、添加监控节点

当需要添加节点时。只要在脚本的 rs_arr定义新的IP节点就可以了

rs_arr=(
172.25.254.134
172.25.254.135
NEW_IP
)

同时,在我们启动了脚本之后,监控到web端有变化,这时html已经发生变化,但是浏览器仍然停留在上一个页面,需要刷新才能跟新页面,这里用的是Google浏览器,有同一个自动刷新插件,设置1秒刷新一次,就保证了html的实时性!


参考:老男孩教育视频公开课https://www.bilibili.com/video/av25869969/?p=33

通过脚本实现对web的健康检查的更多相关文章

  1. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  2. c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制

    using mshtml;using System;using System.Collections.Generic;using System.Linq;using System.Security.P ...

  3. 利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理

    在我们开发Web API应用的时候,我们可以借鉴ABP框架的过滤器Filter和特性Attribute的应用,实现对Web API返回结果的封装和统一异常处理,本篇随笔介绍利用AuthorizeAtt ...

  4. 用 Python 脚本实现对 Linux 服务器的网卡流量监控

    *这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...

  5. 用PowerShell脚本实现对SharePoint页面Title的修改

    存在这样一种情况,对应的page已经部署到product的SharePoint环境中,那么在部署下一个版本的时候就不允许把已经创建好的page删除再创建,因此page中修改过的属性就不能再次部署到Sh ...

  6. 利用Python实现对Web服务器的目录探测

    今天是一篇提升技能的干货分享,操作性较强,适用于中级水平的小伙伴,文章阅读用时约3分钟. PART 1/Python Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python ...

  7. 利用 python 实现对web服务器的目录探测

    一.pythonPython是一种解释型.面向对象.动态数据类型的高级程序设计语言.python 是一门简单易学的语言,并且功能强大也很灵活,在渗透测试中的应用广泛,让我们一起打造属于自己的渗透测试工 ...

  8. Python 脚本实现对 Linux 服务器的监控

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...

  9. 利用shell脚本实现对mysql数据库的备份

    #!/bin/bash #保存备份个数 number=3 #备份保存路径 backup_dir=/root/mysqlbackup #日期 dd=`date +%Y%m%d` #备份工具 tool=m ...

随机推荐

  1. ansible基础☞第一条命令

    我的两个测试机: 系统: ubuntu 16.04.2 ansible-master: 192.168.0.107 ansible-slave: 192.168.0.108 ansible版本: ro ...

  2. Git 进阶:10大技巧让你迅速提升

    1.Git自动补全 假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情. 命令: cd ~ curl https://raw.github.com/git/git/ma ...

  3. 2018-3-22-win10-uwp-设置-HttpClient-浏览器标识

    title author date CreateTime categories win10 uwp 设置 HttpClient 浏览器标识 lindexi 2018-3-22 9:1:55 +0800 ...

  4. Hbase API: 读Bigtable

  5. oracle函数 LENGTH(c1)

    [功能]返回字符串的长度; [说明]多字节符(汉字.全角符等),按1个字符计算 [参数]C1 字符串 [返回]数值型 [示例] SQL> select length('高乾竞'),length( ...

  6. SDUT-3332&3333_数据结构实验之栈与队列五:下一较大值

    数据结构实验之栈与队列六:下一较大值 Time Limit: 150 ms Memory Limit: 8000 KiB Problem Description 对于包含n(1<=n<=1 ...

  7. chrome谷歌浏览器怎么清除指定网站cookie

    https://jingyan.baidu.com/article/fa4125aced30cc28ac709230.html 在使用电脑的情况下,由于到部分网站的cookie的问题导致的部分功能失效 ...

  8. APICloud ajax请求api数据问题

    云编译开启全局加密的情况下,请务必使用api.ajax,避免使用JQ等框架的ajax,否则将引起请求失败.官网API说明链接 还要就是要注意用$.ajax请求数据时会出现的同源策略问题.

  9. 杭电多校第二场1012 L - Longest Subarray ce 线段树

    这题是真的秀...我服了...线段树用好了,感觉什么都可以写... 题目大意:给你一个串,问满足以下条件的子串中最长的是多长:对于每个数字,要么在这个子串没出现过,要么出现次数超过k次. 我们对于每一 ...

  10. Window setTimeout() 方法

    定义和用法 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 注意:如果你只想重复执行可以使用 setInterval() 方法. 可以使用clearTimeout()方法来阻 ...