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



环境说明

前端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

  点击链接下载




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章