本文介紹新版內容範本的變數以及引用方式。
引用方式
-
引用變數時,變數名稱必須完全符合。
-
對於不存在的變數或者不合法的引用,系統預設替換為空白字串。
-
如果引用的值為物件類型,則會轉換為JSON字串。
-
-
模板的變數名稱規則:大小寫字母、數字、底線,且不以數字開頭。
-
如果模板變數名稱符合標準規則,則可以通過
{{alert.xxx}}擷取值。 -
如果模板變數名稱不符合標準規則,例如變數名稱為
__tag__:__namespace__,擷取值的方法為{{alert.annotations["__tag__:__namespace__"] }}。
-
配置行動策略時必須選擇內容範本,內容範本定義具體的發送內容和主題。您可以在發送內容和主題/標題中,通過{{ alert.xxx }}方式引用模板變數。Log Service發送警示通知時,會將發送內容和主題/標題中的模板變數替換為真實值,例如{{ alert.project }}替換為警示規則所屬的Project名稱。

除了直接引用變數外,您還可以通過控制流程以及內建函數對變數進行操作和處理。具體的模板文法和內建函數請參見內容範本文法(新版)、內建模板函數。
警示屬性
|
變數 |
說明 |
資料類型 |
取值樣本 |
引用樣本 |
|
aliuid |
Project所屬的阿里雲帳號ID。 |
string |
117918634953**** |
|
|
alert_instance_id |
警示觸發的執行個體的ID。 |
string |
ee16a8f435485f3f-5be6b81edc520-3d6**** |
執行個體ID為 |
|
alert_id |
警示規則ID,Project內唯一。 |
string |
alert-12345 |
警示規則ID是 |
|
alert_name |
警示規則名稱。 |
string |
測試警示規則 |
警示規則 |
|
alert_type |
警示類型。
|
string |
sls_alert |
警示類型是 |
|
region |
地區。 |
string |
cn-hangzhou |
警示觸發的地區為 |
|
project |
警示規則所屬Project。 |
string |
my-project |
|
|
next_eval_interval |
下一次評估間隔,單位為秒。 |
int |
300 |
下一次評估時間為 |
|
alert_time |
本次評估時間。 |
int |
1616744734 |
本次評估警示的時間為 |
|
fire_time |
首次觸發時間。 |
int |
1616059834 |
警示首次觸發時間為 |
|
status |
警示狀態。
|
string |
firing |
警示狀態為 |
|
resolve_time |
警示恢復。
|
int |
0 |
警示恢複的時間為 |
|
severity |
警示嚴重度。
|
int |
10 |
警示嚴重度為 |
|
labels |
標籤列表。 |
map |
{"env":"test"} |
警示標籤為 |
|
annotations |
標註列表。 |
map |
{ "title": "警示標題","desc": "警示描述" } |
警示標註為 |
|
results |
查詢參數和中間結果,數群組類型。變數取值說明,請參見QueryData結構。 |
array |
參見本文末尾附錄。 |
第一個查詢的開始時間為 |
|
fire_results |
觸發警示的資料,即集合操作後的資料,最多100條。 fire_results變數值超過2KB,並且查詢結果欄位內容的長度超過1KB時,超出部分會被截斷。資料被截斷處理方式請參見觸發警示的日誌太多,在警示通知中展示不完全時,如何處理? |
array |
參見本文末尾附錄。 |
警示觸發時產生的資料為 |
|
fire_results_count |
觸發警示的資料的總條數,可能多於100,例如笛卡爾積操作後的總條數。 |
int |
3 |
警示觸發時產生的總資料條數為 |
|
condition |
觸發警示的評估運算式。其中,以觸發警示的值替換您所配置的變數,並使用中括弧([ ])包裹。格式為 |
string |
|
警示評估運算式為 |
|
raw_condition |
原始的評估運算式,即變數未被替換為真實值的原始運算式。格式為 |
string |
|
原始評估運算式為 |
|
policy |
警示策略或者行動策略。變數取值說明,請參見Policy結構。 |
map |
參見本文末尾附錄。 |
警示策略ID為 |
|
dashboard |
警示關聯的儀錶盤名稱。 |
string |
mydashboard |
警示關聯的儀錶盤名稱為 |
|
alert_url |
警示的詳細URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 |
警示URL為 |
|
query_url |
查詢統計中第一個查詢頁面的URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbn****&queryTimeType=99&startTime=1617175089 |
查詢統計中第一個查詢頁面的URL地址為 |
|
alert_history_dashboard_url |
警示歷史統計報表的URL地址。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis |
警示歷史統計報表的URL地址為 |
|
dashboard_url |
警示關聯的儀錶盤地址。 |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
警示關聯的儀錶盤地址為 |
|
fingerprint |
警示指紋。更多資訊,請參見基於警示指紋去重。 |
string |
478325709134bc5c |
警示指紋為 |
|
signin_url |
免登入控制台即可查看警示詳情。更多資訊,請參見免登入查看警示詳情。 |
string |
https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
|
Policy結構
policy變數中可引用的變數說明如下表所示。
|
變數 |
說明 |
資料類型 |
取值樣本 |
|
alert_policy_id |
警示策略ID。 |
string |
sls.test-alert |
|
action_policy_id |
警示監控規則指定的行動策略ID,僅在警示策略使用動態行動策略時有用。 |
string |
sls.test-action |
|
repeat_interval |
重複等待時間,僅在警示策略使用動態行動策略時有用。 |
string |
4h |
QueryData結構
results變數中可引用的變數說明如下表所示。
|
變數 |
說明 |
資料類型 |
取值樣本 |
|
store_type |
儲存類型。
|
string |
log |
|
region |
查詢統計目標庫所在地區。 儲存類型為資源資料時,該變數值為空白。 |
string |
cn-hangzhou |
|
project |
查詢統計目標庫所在Project。 儲存類型為資源資料時,該變數值為空白。 |
string |
sls-test-alert |
|
store |
查詢統計中的目標庫名稱。 |
string |
test-LogStore |
|
query |
查詢分析語句。 |
string |
error | select count(1) as cnt |
|
start_time |
查詢開始時間。 儲存類型為資源資料時,該變數值為空白。 |
int |
1616741485 |
|
end_time |
查詢結束時間。 儲存類型為資源資料時,該變數值為空白。 |
int |
1616745085 |
|
raw_results |
實際查詢內容,數組格式,最多100行。 raw_results變數值超過2KB,並且查詢結果欄位內容的長度超過1KB時,超出部分會被截斷。 |
array |
|
|
raw_results_count |
實際查詢資料的總條數,可能多於100。 |
int |
20 |
|
fire_result |
警示觸發內容中的第一條資料。警示觸發結果集可能包含多條資料,該參數只返回第一條資料。 |
map |
|
|
query_url |
查詢的URL地址。 儲存類型為資源資料時,該變數值為空白。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcy*******&queryTimeType=99&startTime=1617175089 |
|
dashboard_url |
查詢關聯的儀錶盤地址。 |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
|
role_arn |
使用服務角色的ARN。 |
string |
acs:ram::117918634953****:role/aliyunslsalertmonitorrole |
常見問題
附錄
-
results結構[{ "store_type": "log", "region": "cn-hangzhou", "project": "sls-alert-test", "store": "test", "query": "* | select count(1) as cnt", "start_time": 1616741485, "end_time": 1616745085, "dashboard_id": "mydashboard", "raw_results": [{ "cnt": "4" }], "raw_result_count": 1, "fire_result": { "cnt": "4" }, "truncated": false, "role_arn": "" }] -
fire_results結構[{ "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }, { "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }] -
policy結構{ "alert_policy_id": "sls.test-alert", "action_policy_id": "sls.test-action", "repeat_interval": "5m0s" }
樣本
通過新版內容範本定義通知內容的樣本如下:
警示內容
{ "alert_id": "test-alert", "alert_name": "PV/UV Alert", "project": "project-1", "status": "firing", "severity": 6, "labels": { "app": "nginx", "host": "host-1" }, "results": [ { "project": "project-1", "logstore": "logstore-1", "query": "* | select count(*) as pv" }, { "project": "project-2", "logstore": "logstore-2", "query": "* | select count(distinct user_id) as uv" } ] }內容範本配置
- Alert ID: {{ alert.alert_id }} - Alert Name: {{ alert.alert_name }} - Project: {{ alert.project }} - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %} - Labels: {%- for key, val in alert.labels.items() %} - {{ key }}: {{ val }} {%- endfor %} - Query: {{ alert.results[0].query }}輸出結果
- Alert ID: test-alert - Alert Name: PV/UV Alert - Project: project-1 - Status: FIRING - Labels: - app: nginx - host: host-1 - Query: * | select count(*) as pv