0x00 概述
F5 BIGIP從應用角度位於網絡結構的關鍵咽喉位置,可獲取所有應用的流量,針對流量執行L7層處理,即便是TLS加密的流量也可以通過F5進行SSL offload。通過F5可以統一獲取所有應用的請求元數據,而不用關心應用是部署在何種系統架構中,這可以大大簡化針對不同應用系統進行應用性能分析、日志采集工作。BIGIP TMOS系統提供了多種方法幫助實現統一信息收集,包括:
- HTTP Request logging profile
- DNS logging profile
- Avr
- iRule HSL
- System logging HSL
支持高速信息輸出而無需過分擔心性能下降。
ELK是一個功能強大的集數據收集、存儲、分析、索引、可視化的開源套件,支持多種數據結構輸入輸出。
本文是系列文章的第一篇,描述如何利用F5 LTM HTTP request logging 功能與ELK進行整合,進行HTTP 應用性能透視與分析。通過數據分析,可以進行諸如:
- HTTP請求類型分布
- URL訪問排名
- 同一資源池中各個服務器的http響應延遲
- 單URL的響應延遲
- 訪問總請求數
- URL或服務器延遲趨勢
- URL或服務器最大最小延遲
- 響應大小分布
- HTTP協議版本分布
- 訪問者地理位置跟蹤
- HTTP 響應代碼分布及趨勢
- HTTP響應錯誤率統計
- L4連接數
- API請求調用延遲
- 重API分布
- API失敗率分析
- 請求線路分布
- 。。。。
通過持續獲取應性能信息數據,建立應用性能基線。當應用流量突增時,可直觀發現突發流量來自於哪里,分布在哪些鏈路,哪些請求屬於熱點請求,應用響應延遲變化,趨勢,URL/API擁堵情況,服務器性能狀態。以及快速增長的URL之間是否存在業務上的前后邏輯,進而可以幫助判別是否為自動化的L7 DDOS等。
0x01 架構原理
F5 LTM通過配置 request logging profile模板輸出HTTP請求與響應有關的數據,數據通過F5的High speed logging(HSL)功能直接輸出到logstash監聽的TCP端口上,Logstash通過使用Grok filter對原始數據進行規則過濾,格式化后的數據輸出到elasticsearch服務器,通過kibana程序進行數據整理、可視化輸出,下圖描述了各功能組件間關系。
0x02 ELK搭建
https://www.myf5.net/post/2489.htm
0x03 LogStash配置文件
https://github.com/myf5/f5-elk-demo/blob/master/loggprofile-logstash-xff_pre-stage.md
0x04 F5側配置
1. 配置一個pool,用於被logging profile調用,該pool的成員是logstash的服務器地址,端口為上述步驟中logstash啟動的端口
2. 配置request logging profile, 只需設置resposne setting部分,request部分不用設定。模板詳細內容請參考 https://github.com/myf5/f5-elk-demo/blob/master/loggprofile-logstash-xff_pre-stage.md
3. 配置vs,並應用上述logging profile
4. 訪問vs業務,此時所有響應消息將被發送至logstash並被輸入到elasticsearch中
0x05 Elastic search集群狀態
所有以f5-request開頭的類型都是相關request請求數據,數據被分為5個shards,並有一個備份。
0x06 Kibana數據分析
創建一個以f5-request-*為索引條件的pattern
選擇正確的搜索時間,可以在discover界面中看到原始數據的輸出:
可視化模塊的定義
最后組裝dashboard進行統一展示:
以上是部分可視化分析樣例,通過對原始數據的充分精細加工,可以找到更貼合實際需求的可視化輸出。下一篇文章將描述如何利用DNS logging profile建立DNS性能數據透視
更詳細信息請訪問https://github.com/myf5/f5-elk-demo/