服務穩定性及應用防護方案

服務穩定性及應用防護方案

一、 服務穩定性

1. 基本監控

基本監控推薦使用Zabbix,開源分佈式企業級監控系統,能滿足目前我們監控的需求

a.  系統監控,包括CPU、內存、磁盤、網絡等,能夠對系統級別的風險進行報警,目前已經實現併線上運行
b.  服務進程及端口監控,能夠監控服務異常退出,目前已經實現併線上運行
c.  自定義腳本程序模擬接口登陸訪問結合Zabbix監控日誌文件功能,能夠對自定義的錯誤進行報警,目前已經實現併線上運行
d.  以上默認系統監控會自動添加,服務進程端口及自定義監控有需要時添加

2. 日誌收集

日誌收集推薦使用Elastic Stack協議棧,可以滿足收集海量日誌需求,而且便於後續分析、報表、報警操作

a.  日誌包括服務正常訪問日誌及錯誤日誌
b.  訪問日誌可以收集客戶端IP、響應時間、HTTP狀態碼、發送字節、Referer、Agent等,也可以自定義字段
c.  錯誤日誌可以收集自定義字段錯誤字段,例如登陸失敗、連接超時、後端無響應等
d.  以上需要提前準備好日誌及定義好日誌字段

3. 指標分析

a.  訪問日誌指標,例如HTTP狀態碼統計、響應時間分佈、其他字段統計
b.  錯誤日誌指標,例如一段時間內某某錯誤出現的次數、一段時間內各項錯誤比例分佈、錯誤出現趨勢、錯誤出現時間、錯誤出現區域等
c.  以上都可以通過Elasticsearch支持的Lucene語言或者Kibana Dev Tools編輯DSL語言進行精確或模糊匹配來分析

4. 報表製作

a.  Kibana通過visualize及dashboard來實現餅圖、趨勢圖、表格、直方圖、地圖、Metric、熱力圖、Markdown等形式的報表
b.  Grafana結合Data Sources及Plugins來實現餅圖、趨勢圖、直方圖、Html等形式的報表

5. 異常報警

a.  Elastalert通過Elasticsearch Python API編輯報警策略實現報警,例如一段時間內匹配某項DSL語法結果出現的次數大於或小於某值報警、兩段對比時間段內匹配結果的值對比後大於或者小於某一基數、一段時間內匹配的值進行聚合運算後大於或小於某值報警、其他自定義語法獲得結果異常報警
b.  Grafana可以對趨勢設置Alert閾值並通過郵件報警
c.  以上工程量都比較大而且難度係數也不小但都能實現

二、應用防***

1.主要是基於Nginx與Iptables實現(目前CLB不支持這些配置)

a.  限速
利用ngx_http_limit_conn_module及ngx_http_limit_req_module模塊,首先在http區域裏定義好限速限制連接數策略,再在具體的域名上使用,具體限速及限制連接數需要根據實際情況評估,超過的連接會默認直接返回503不轉發到袁徵
b.  屏蔽IP
方法一使用ngx_http_access_module模塊allow、deny控制,缺點是通過remote_addr來屏蔽IP的,支持CIDR等格式地址
方法二使用自定義客戶端IP變量$clientRealIp來屏蔽,IP需要寫成正則形式的,支持IP穿透,所以通過CDN的域名這種方法也能生效
方法三自定義屏蔽IP,結合Elasticsearch查詢異常IP可自動化屏蔽IP,前兩種方法易於實現但是隻能手動屏蔽
c.  屏蔽reffer
例如屏蔽某些流氓網站友情鏈接
d.  屏蔽agent
例如屏蔽爬蟲agent
e.  屏蔽url
例如屏蔽有漏洞url禁止外部訪問
f.  其他自定義
設置故障域,怎樣都防不住可以通過error_page功能,轉發流量到備用源站

2.第三方騰訊雲產品通過網站管家WAF與大禹BGP高防包實現

a.  網站管家WAF高級版放在CLB前面
b.  大禹BGP高防放在WAF前面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章