MSE流量防護功能能夠檢測到異常流量或攻擊行為,並將這些事件上報至Simple Log Service (SLS)。SLS是一個集日誌收集、儲存、分析於一體的服務,能夠即時地對大量資料進行索引和查詢。通過將流量防護事件上報至SLS,您可以方便地監控和分析這些事件,為您的網路安全提供及時的響應和保護。本文介紹如何將MSE微服務治理流量防護的觸發事件上報至SLS,其中流量防護觸發事件由sentinel-block.log採集。
前提條件
-
使用MSE微服務治理流量防護功能,且配置了流量防護規則。具體操作,請參見流量防護。
開啟日誌採集組件
如果在建立ACK叢集時已經開啟了Log Service,可以跳過該步驟,否則可以按照以下步驟開啟日誌採集組件。具體操作,請參見建立叢集時安裝Logtail。
此操作僅適用於專有版Kubernetes和託管版Kubernetes。
-
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
-
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
-
在日誌與監控頁簽,找到logtail-ds,然後單擊安装。
接入資料
設定SLS接入的資料來源。採集Sentinel日誌記錄並按解析格式上報至SLS。採集檔案格式,請參見資料來源與解析格式。
-
在控制台頁面單擊快速接入數據,在彈窗接入數據地區的搜尋方塊中輸入Kubernetes,然後單擊Kubernetes-檔案。
-
在選擇日誌空間步驟,選擇項目 Project和日誌庫Logstore,然後單擊下一步。
其中Project選擇建立的名為k8s-log-{your_k8s_cluster_id}的Project,也可以選擇其他Project。日誌庫Logstore可以選擇已有的或者建立,具體操作,請參見建立基礎LogStore。
-
在機器組配置步驟,選中目標機器組(k8s-group-${your_k8s_cluster_id}),將該機器組從源機器組移動到應用機器組,單擊下一步。
如果選擇了其他Project,可以按照頁面提示建立機器組。
-
在Logtail配置步驟,設定資料來源與解析格式。配置完成後,單擊下一步。
配置項
說明
配置名称
輸入配置名稱。
檔案路徑
-
以
/${user_home}/logs/csp/sentinel-block.log為固定路徑進行採集,其中${user_home}替換為系統的主目錄,通常為root。 -
具體路徑,請參見重要日誌。
日誌範例
輸入如下內容進行設定。
2024-08-28 06:53:14|1|/flow,FlowException,default,,32808,1724827994000|37,0,0處理模式
處理外掛程式組合(添加正則解析外掛程式,關鍵配置參考樣本,其他按需配置或保持預設)。
正则表达式
(\d+-\d+-\d+\s\d+:\d+:\d+)\|1\|([\s\S]*),([a-zA-Z]+),([a-zA-Z]+),([\s\S]*),(\d+),(\d+)\|(\d+),0,(\d+)
將原始欄位設為
content,單擊驗證後可提取出 9 個欄位:time、resource、expType、limitApp、origin、ruleId、timestamp、blockNum、n。勾選解析失敗時保留原始欄位。 -
-
在查詢分析配置步驟,等待預覽數據右側的自動刷新完成。添加並修改部分索引欄位,然後單擊下一步。
欄位名稱
類型
別名
__tag__:_namespace_
text
namespace
__tag__:container_name_
text
appName
ruleId
long
無需填寫
resource
text
time
text
expType
text
blockNum
double
-
單擊查詢日誌返回Project。
監控上報驗證
-
在對應Project可以看到監控指標已經上報至SLS建立的Logstore中。
__tag__:__user_defined_id__: k8s-group-c7ebc423cebdd43c494daf02xxx __tag__:_cluster_id_: c7ebc423cebdd43c494daf02 __tag__:_container_ip_: 10.7.xxx __tag__:_container_name_: spring-cloud-b __tag__:_image_name_: registry.cn-hangzhou.aliyuncs.com/mse-demo-hz/spring-cloud-b:3.0.1-fallback-test __tag__:_namespace_: mse-demo __tag__:_node_ip_: 10.7xxx __tag__:_node_name_: cn-hangzhou.10.7.xxx __tag__:_pod_name_: spring-cloud-b-54b48d6f6c-xxx __tag__:_pod_uid_: bcd0f5bd-3b4c-48d7-99c7-aefxxx blockNum: 71 expType: FlowException limitApp: default n: 0 origin: dubbo-provider-A resource: com.alibabacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String) ruleId: 855 time: 2023-09-15 03:46:22 timestamp: 1694749582000
常見問題
SLS控制台未顯示相關日誌
您可以登入Container Service管理主控台,單擊對應的叢集。在集群信息頁面,單擊通過CloudShell管理叢集。輸入如下命令進行驗證。
cd ~/logs/csp/ # 替換為對應的日誌路徑
tail -n 10 sentinel-block.log
預期結果如下,表明已產生限流日誌。如果沒有產生對應日誌,請檢查前提條件是否配置正確,重點關注MSE控制台中流量防護規則配置是否正確以及是否發生限流。
2023-09-14 08:51:04|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681464000|63,0
2023-09-14 08:51:05|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681465000|78,0
2023-09-14 08:51:06|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681466000|75,0
2023-09-14 08:51:07|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681467000|64,0
2023-09-14 08:51:08|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681468000|84,0
2023-09-14 08:51:09|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681469000|75,0
2023-09-14 08:51:10|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681470000|76,0
2023-09-14 08:51:11|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681471000|71,0
2023-09-14 08:51:12|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681472000|61,0
2023-09-14 08:51:13|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681473000|64,0
2023-09-14 08:51:14|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681474000|64,0
2023-09-14 08:51:15|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681475000|76,0
2023-09-14 08:51:16|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681476000|79,0
2023-09-14 08:51:17|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681477000|66,0
2023-09-14 08:51:18|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681478000|80,0
2023-09-14 08:51:19|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681479000|65,0
2023-09-14 08:51:20|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681480000|79,0
2023-09-14 08:51:21|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681481000|75,0
2023-09-14 08:51:22|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681482000|70,0
2023-09-14 08:51:23|1|com.alibacloud.mse.demo.b.service.HelloServiceB:hello(java.lang.String),FlowException,default,dubbo-provider-A,855,1694681483000|77,0