舊版警示設定

更新時間:
Copy as MD

Log Service支援根據儀錶盤中的統計圖表設定警示,實現即時的服務狀態監控。

警示的查詢區間和執行間隔

Log Service根據執行間隔定時執行您所配置的查詢和分析語句,並將查詢和分析結果作為警示條件的參數進行計算。如果計算結果為true,則警示觸發。

請勿將查詢和分析的時間範圍設定成與執行間隔一致的相對時間。原因如下(以執行間隔為1分鐘為例):

  • 資料寫入Log Service到能夠被查詢到,這期間存在延時(一般少於3秒)。即使延時很低,也存在資料漏查的風險。例如警示執行時間為12:03:30,查詢和分析的時間範圍為相對一分鐘,即[12:02:30,12:03:30),對於12:03:29秒寫入的日誌,不能保證在12:03:30肯定能夠查詢到。

    • 如果對警示準確性要求高(不重複警示、不漏報),將查詢和分析時間範圍中的起止時間都往前推移。例如警示執行時間為12:03:30,則查詢和分析的時間範圍為[12:02:20,12:03:20),通過設定10秒的緩衝時間來避免因為索引速度導致的漏查。

    • 如果對警示的即時性要求高(第一時間收到警示,能夠容忍重複警示),查詢和分析時間範圍中的開始時間往前推移。例如警示執行時間為12:03:30,查詢和分析的時間範圍設定為[12:02:20,12:03:30)。

  • 同一分鐘內包含不同時間的日誌時,由於日誌索引的構建,時間較遲的日誌的索引可能落盤到較早的時間點。例如警示執行時間為12:03:30,查詢範圍為相對一分鐘,即[12:02:30,12:03:30)。如果在12:02:50秒寫入日誌,這些日誌時間為12:02:20、12:02:50等,那麼這些日誌的索引可能落盤在12:02:20這個時間點,導致在[12:02:30,12:03:30)期間查詢不到日誌。

    • 如果對警示的準確性要求高(不重複警示,不漏報),查詢和分析的時間範圍使用整點時間,例如整點1分鐘、整點5分鐘、整點1小時等,並且將執行間隔設定為一致的時間,例如1分鐘、5分鐘、1小時等。

    • 如果對警示的即時性要求高(第一時間收到警示,能夠容忍重複警示),查詢和分析的時間範圍至少需要包含前一分鐘。例如警示執行時間為12:03:30,查詢和分析的時間範圍可以設定為相對90秒,那麼實際的查詢和分析的時間範圍為[12:02:00,12:03:30),同時設定執行間隔為1分鐘。

基於查詢結果警示

基於查詢結果設定警示時,只要查詢結果不為空白就認為滿足警示條件,即設定警示觸發條件為判斷任意欄位存在即可。

例如您希望當日誌中包含索引值對client_ip: 192.0.2.1就產生警示,則您可以按照如下配置建立警示。具體操作,請參見設定警示。假設client_ip欄位在每條日誌都存在且不為空白字串,則只要client_ip欄位不為空白就觸發警示。

在警示監控規則配置中,觸發條件設定為 client_ip !="",表示只要該欄位不為空白字串即觸發警示。

基於分析結果警示

基於分析結果設定警示是最常見的情境。例如您希望包含ERROR關鍵字的日誌條數達到閾值即觸發警示,則您可以按照如下配置建立警示。具體操作,請參見設定警示

警示監控規則彈窗中,設定規則名稱網站警示檢查頻率固定間隔 15 分鐘,儀錶盤選擇建立並輸入test圖表名稱test查詢語句ERROR | select count(1) as errorCount查詢區間15分鐘(相對)觸發條件errorCount > 0

關聯多個圖表

當您基於儀錶盤建立警示時,Log Service支援同時對1~3個查詢和分析結果設定警示。

說明
  • 多個圖表之間的查詢區間相互獨立。

  • 關聯多個圖表時,觸發條件中需要使用${編號}.{欄位}方式引用查詢和分析結果中的欄位。例如$0.pv > 100000 && $1.uv < 1000,其中$0表示編號為0的圖表,$1表示編號為1的圖表。更多資訊,請參見如何查看圖表編號

  • 多個觸發條件之間使用2and符號(&&)串連,例如pv%100 > 0 && uv > 0

  • 對不同時間範圍的查詢和分析結果進行組合警示。

    例如您希望15分鐘內的PV大於100000,一小時內的UV小於1000時觸發警示,則您可以按照如下配置建立警示。具體操作,請參見設定警示。例如,在關聯圖表中添加兩個圖表:編號0的圖表名稱為PV,查詢語句為* | select count(*) as pv,查詢區間為15分鐘(相對);編號1的圖表名稱為UV,查詢語句為* | select count(distinct client_ip) as uv,查詢區間為1小時(相對)。設定頻率為固定間隔15分鐘,設定觸發條件$0.pv>100000&&$1.uv<1000,即當PV超過100000UV低於1000時觸發警示。觸發條件支援加減乘除模數運算子及大於、大於等於、小於、小於等於、等於、不等於比較子。

  • 基於部分圖表警示,其他圖表的查詢結果作為輔助資訊。

    例如,您希望基於記錄層級為ERROR的日誌條數觸發警示,與此同時,希望能夠在警示通知中看到實際的記錄層級為ERROR的日誌,則您可以按照如下配置建立警示。具體操作,請參見設定警示

    警示配置樣本:在關聯圖表中添加兩個圖表,編號0圖表名稱為UV,查詢語句為level: ERROR | select count(1) as errorCount,查詢區間為1小時(相對);編號1圖表名稱為PV,查詢語句為level: ERROR,查詢區間為1小時(相對)頻率選擇固定間隔,設定為15分鐘觸發條件設定為errorCount > 10

    在警示通知中只需要設定如下內容,即可看到實際記錄層級為ERROR的日誌。

    ${results[1].RawResultsAsKv}

警示抑制

當警示觸發時,可能會在一段時間內多次收到通知。為了防止因為資料抖動導致的誤判和重複警示,可以通過設定連續通知門檻或通知間隔來對警示進行抑制。 具體操作,請參見設定警示

  • 設定連續通知門檻。

    只有在連續多次檢查中都滿足警示條件才會觸發警示。

    例如警示執行間隔為1分鐘,觸發閾值為5,則表示在連續5次即5分鐘內每次警示檢查結果都滿足警示條件才會發送通知。只要有一次沒有滿足觸發條件,計數將重設。

  • 設定通知間隔。

    當警示設定的執行間隔較小時,為了防止頻繁收到通知,您可以設定兩次通知之間的最小間隔。例如警示執行間隔為1分鐘,通知間隔為30分鐘,即使30分鐘內有警示觸發,也不會收到任何通知。

使用模板變數豐富通知內容

您在配置通知方式時,可在發送內容主題中,通過${fieldName}方式引用模板變數。Log Service發送警示通知時,會將發送內容主題中的模板變數替換為真實值。例如${Project}替換為警示規則所屬的Project名稱。更多資訊,請參見舊版警示的模板變數

  • 對於頂層的變數如Project、AlertName、Dashboard,可以直接使用${fieldName}方式引用,不區分大小寫。

  • 每次產生警示時,系統自動產生警示上下文資訊,儲存於Results欄位(數群組類型)中。數組中的每個元素對應警示關聯的一個圖表(對於大多數情境,可能只有一個元素)。更多資訊,請參見警示日誌欄位。Results中的欄位可以通過如下方式引用:

    • 數群組類型的欄位通過${fieldName[{index}]}方式引用,其中{index}表示數組下標,從0開始。例如${results[0]}表示引用Results數組中的第1個元素。

    • 物件類型的欄位通過${object.key}引用。例如${results[0].StartTimeTs}的結果為1542453580。

    說明

    RawResultsFireResult內的欄位為查詢結果,區分大小寫,其他欄位均不區分大小寫。

    {
      "EndTime": "2006-01-02 15:04:05",
      "EndTimeTs": 1542507580,
      "FireResult": {
        "__time__": "1542453580",
        "field": "value1",
        "count": "100"
      },
      "FireResultAsKv": "[field:value1,count:100]",
      "Truncated": false,
      "LogStore": "test-logstore",
      "Query": "* | SELECT field, count(1) group by field",
      "QueryUrl": "http://xxxx",
      "RawResultCount": 2,
      "RawResults": [
        {
          "__time__": "1542453580",
          "field": "value1",
          "count": "100"
        },
        {
          "__time__": "1542453580",
          "field": "value2",
          "count": "20"
        }
      ],
      "RawResultsAsKv": "[field:value1,count:100],[field:value2,count:20]",
      "StartTime": "2006-01-02 15:04:05",
      "StartTimeTs": 1542453580
    }

排查警示未觸發原因

配置警示之後,您可以通過警示日誌排查警示未觸發的原因。具體操作,請參見查看警示記錄。日誌欄位說明,請參見警示日誌欄位