您的位置:首页 > 大数据 > 人工智能

如何透过F5探测后端应用健康状态?

2016-08-23 17:23 393 查看
环境说明
前端F5基于cookie插入的会话保持,后端有50台应用服务器。

起 因
一朋友运维的系统在生产环境中遇到了一些异常,为了排查故障,准备从最前端(互联网)检测F5后端的50台应用是否正常。
(为什么没在内网检测?一开始我也想问,内网检控是有的,但由于环境比较复杂,没有那种从客户端一直到服务器的状态监测,不知道哪段出了问题。好吧,反正就让我做个从互联网端发起的探测。)

脚本分析与设计
这种探测本身是很简单的,一个wget或者curl命令即可搞定,但是难点是F5后端的应用是随机分发的,如何对50台应用全部轮询一遍?
问题总是要解决的,我在以前的文章中讲到F5 cookie与后端IP地址的关系,如详细了解请看我的博文:F5 cookie值与IP地址(二)F5 cookie值与IP地址(一)
通过这种固定的对应关系,就可以用firefox的Web Developer插件来修改F5插入的cookie值来控制F5要分发的后端IP。
有了以上的原理,控制F5分发已不是难事,自动化脚本又要如何实现呢?
下面,出场的是wget!没错,就是这个简单的工具。没用过?自行百度吧。着重关注下--save-cookies和--load-cookies这两个参数。
下面是大致的步骤:
1.准备需要加载的cookie文件
这个cookie文件有wget自己的格式,需要通过wget生成。
wget --save-cookies=cookies_file --keep-session-cookies http://yourweb.com/index.html 这样会得到一个cookies_file的文件。类似于:
# HTTP cookie file.# Generated by Wget on 2016-08-16 12:07:48.# Edit at your own risk.
yourweb.comFALSE/FALSE0BIGipServerElearning_tcp80_ap_pool19148992.10531.0000
得到cookie文件后,批量修改里面的cookie值(19148992部分),修改为你已经通过IP转换过来的值.

2.加载cookie文件的方法
wget -Sq --load-cookies=cookie_file --spider --timeout=10 --tries=3 http://yourweb.com/ -o wget_status
--load-cookies:需要加载的cookie文件
-o:结果输出文件

3.判断规则
通过wget加载cookie文件时,会有两种结果:
加载成功:F5会分发到cookie中所指定的机器。wget的结果中不在含有F5 cookie值。
加载不成功:F5会漂到另一台机器(重新分发)。wget的结果中会含有F5 cookie值(不同于加载的值)。
可通过wget结果中是否含有F5 cookie值来判断你本次的wget是否成功。

4.报警规则
wget结果文件中含有新的F5 cookie值发出报警(此时wget的状态码可能是200或其他值。)
wget状态码非200时发出报警。

5.报警方法
当触发到报警规则时,会通过邮件的方式进行报警,本文推荐:mailx。如何配置mailx?参见博文

脚本实现
有了以上的报警规则和报警方法后,就可以发挥你的聪明才智编写脚本了。
本人也编了一套,请参考。

需要首先做如下操作:
准备目录:/usr/share/wget/wget_app
准备文件:ap_cookies,放至/usr/share/wget/wget_app
点击链接下载

下载脚本文件:wget_shell.sh
点击链接下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  f5 wget mailx