如何透過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

  點擊鏈接下載




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