概述
在之前的告警政策和行動政策相關的文章中,我們可以看到,為了配置各種政策邏輯,使用的都是類似的互動方式,即基于可視化圖的表單。本文主要來介紹一下政策圖相關的互動和配置。
編排架構基本介紹
一個典型的政策圖結構如下:

可以看到,通常來說,有以下幾種節點:
- 開始:表示該政策的開始
- 結束(最下面):表示政策的結束
- 結束(右側):表示政策的中斷
- 條件節點
- 業務節點:例如上圖中的行動組配置
結束(中斷)與繼續
跟在條件邏輯右側的結束節點,表示的是政策的中斷執行。除了結束之外,有些政策還可以添加繼續連結,表示繼續向下執行。
例如上圖的結束節點,邏輯類似于如下的腳本:
其中條件邏輯後面的結束,相當于是函數的 return 語句,是以不會繼續向下執行。
如果是繼續連結的話,如下圖所示:
則相當于如下的腳本:
是以即使滿足了if語句,依然會繼續向下執行。
政策繼承
告警政策繼承
目前隻有告警政策(包含路由合并、抑制和靜默)可以繼承。政策繼承相當于兩個政策的政策圖拼接起來。例如父政策如下:
子政策如下:
則最終子政策的效果相當于:
是以可以看到,政策圖最下面的結束節點,隻是表示目前政策邏輯上的結束,假如目前政策有子政策的話,有可能會繼續執行子政策的。但是條件節點右側的結束,表示的是整個執行的中斷,是以如果比對了條件,就不會再繼續向西執行。
通過繼承實作全局靜默
政策繼承的一個非常便捷的用途就是用來實作全局靜默。例如有一個父政策
sls.root
,它有若幹個子政策例如
alert-policy-1
、
alert-policy-2
等等。假如某一天希望靜默掉所有
labels.env = test
即測試環境的告警的時候,就可以配置
sls.root
的靜默政策,進而對所有子政策都生效,而無需對每個子政策單獨配置。
循環繼承
另一個問題就是循環繼承。假如 A 繼承 B,B 又繼承了 A,就會導緻繼承鍊上出現環。此時會從目前政策沿着繼承鍊向上,直到到達循環點。例如:
- 使用的是政策 A,則最終效果是 B + A,因為 A 繼承自 B
- 使用的是政策 B,則最終效果是 A + B,因為 B 繼承自 A
進一步參考
了解更多的資訊,可以參考 SLS 的官方文檔:
對我們工作感興趣的,可以通過如下方式了解更多,謝謝關注!
- SLS首頁: https://www.aliyun.com/product/sls
- 知乎: https://zhuanlan.zhihu.com/aliyunlog
- 微信公衆号:日志服務 or LogAnalytics
- 哔哩哔哩: https://space.bilibili.com/630680534