全部產品
Search
文件中心

Simple Log Service:基於日誌關鍵字設定警示

更新時間:Jun 30, 2024

將日誌採集到Log Service後,您可以通過Log Service警示系統實現基於日誌關鍵字的警示。

背景資訊

日誌記錄了系統的運行過程及異常資訊,例如warning日誌、error日誌、Go語言中的panic錯誤記錄檔、Java語言中的java.lang.StackOverflowError錯誤記錄檔、系統運行狀態(例如支付失敗)日誌。日誌關鍵字的檢索和監控警示是系統運行中比較常見的需求,您可以通過檢索日誌中的關鍵字和設定警示,快速感知和定位問題。Log Service提供免營運、高效能、配置靈活的警示方案,協助您實現基於日誌關鍵字的警示。

案例一:出現關鍵字即觸發警示

如果您希望日誌中出現目標關鍵字時,就能觸發警示,則您可以參考本案例設定查詢語句和警示監控規則。

  • 查詢語句

    選取查詢時間範圍為15分鐘(相對),然後執行如下語句,查詢包含ERROR關鍵字的日誌。具體操作,請參見查詢和分析日誌

    ERROR
  • 查詢結果

    根據下述查詢結果可知,當前15分鐘內出現一次ERROR關鍵字。

    關鍵字警示
  • 警示監控規則配置
    基於上述查詢結果建立警示監控規則。具體操作,請參見建立日誌警示監控規則。重要配置項說明如下:
    • 設定觸發條件有資料,則當日誌中出現ERROR關鍵字時,觸發警示。
    • 設定標註中的描述${logging}內容範本SLS內建內容範本,則警示通知中將引用原始日誌中logging欄位的內容。
    警示監控規則
  • 警示通知

    建立上述警示監控規則後,只要日誌中出現ERROR關鍵字,您就可以在DingTalk群中收到警示通知。您還可以單擊詳情,查看警示發生時的日誌,進行溯源。

案例二:根據關鍵字出現的次數設定警示

如果您希望在一定時間範圍內日誌關鍵字出現的次數達到指定次數時,才觸發警示,則您可以參考本案例設定查詢分析語句和警示監控規則。

  • 查詢分析語句

    選取查詢時間範圍為1小時(相對),然後執行如下語句,統計1小時內出現ERROR關鍵字的次數。具體操作,請參見查詢和分析日誌

    ERROR | SELECT count(*) AS cnt
  • 查詢分析結果

    根據下述查詢分析結果可知,當前1小時內出現一次ERROR關鍵字11次。

    查詢結果
  • 警示監控規則配置
    基於上述查詢分析結果建立警示監控規則。具體操作,請參見建立日誌警示監控規則。重要配置項說明如下:
    • 設定觸發條件有資料匹配,cnt > 5,則1小時內日誌中出現ERROR關鍵字大於5次時,觸發警示。
    • 設定標註中的描述1小時內發生${cnt}次ERROR報錯內容範本SLS內建內容範本,則警示通知中將顯示當前1小時內日誌中出現ERROR關鍵字的次數。
    警示規則配置
  • 警示通知

    建立上述警示監控規則後,只要當前1小時內日誌中出現ERROR關鍵字的次數超過5次,您就可以在DingTalk群中收到警示通知。您還可以單擊詳情,查看警示發生時的日誌,進行溯源。

案例三:根據關鍵字出現的次數環比昨日設定警示

當日誌關鍵字的出現存在一定周期(例如以天為周期)時,白天出現的機率高,晚上出現的機率低,則此時不適合使用關鍵字次數這個絕對值來判斷系統是否異常。您可以使用同比和環比Function Compute不同日期的同一時間段內關鍵字出現次數的比值,並設定警示。

  • 查詢分析語句

    選取查詢時間範圍為1小時(相對),然後執行如下語句,統計當前1小時與昨天同時段日誌中出現ERROR關鍵字的次數的比值。具體操作,請參見查詢和分析日誌。其中關於compare函數的更多資訊,請參見同比和環比函數

    ERROR |
    SELECT
      diff [1] AS today,
      diff [2] AS yesterday,
      round((diff [3]-1) * 100, 2) AS ratio
    FROM  (
        SELECT
          compare(cnt, 86400) AS diff
        FROM      (
            SELECT
              COUNT(*) AS cnt
            FROM          log
          )
      )
  • 查詢分析結果

    根據下述查詢分析結果可知,當前1小時出現ERROR關鍵字11次、昨天同時段出現ERROR關鍵字6次、增長率為83.33。

    查詢分析結果
  • 警示監控規則配置
    基於上述查詢分析結果建立警示監控規則。具體操作,請參見建立日誌警示監控規則。重要配置項說明如下:
    • 設定觸發條件有資料匹配,ratio > 10,則當前1小時與昨天同時段出現ERROR關鍵字的次數比值大於10%時,觸發警示。
    • 設定標註中的描述1小時內錯誤數為${today},昨日同期為${yesterday},環比增長${ratio}%內容範本SLS內建內容範本,則警示通知中將顯示當前1小時內出現ERROR關鍵字的次數、昨天同時段出現ERROR關鍵字的次數以及變動率。
    警示監控規則
  • 警示通知

    建立上述警示監控規則後,只要當前1小時與昨天同時段的日誌中出現ERROR關鍵字的次數比值大於10%,您就可以在DingTalk群中收到警示通知。您還可以單擊詳情,查看警示發生時的日誌,進行溯源。

案例四:使用機器學習演算法進行異常點檢測警示

上述案例已覆蓋關鍵字警示的基本情境,但在某些特殊情境下,還需藉助Log Service機器學習演算法。例如目標關鍵字的出現頻率在全天都比較平穩,但可能在某個時刻突然出現陡增或陡降的情況,並且您希望及時感知到該變化。針對該情境,您可以通過Log Service機器學習演算法,進行時序預測和異常點檢測。關於機器學習演算法的更多資訊,請參見機器學習函數

  • 查詢分析語句

    選取查詢時間範圍為4小時(相對),然後執行如下語句,統計當前4小時內ERROR錯誤數出現異常的次數。具體操作,請參見查詢和分析日誌。其中關於ts_predicate_simple函數的更多資訊,請參見ts_predicate_simple

    ERROR |
    SELECT
      ts_predicate_simple(stamp, value, 6)
    FROM  (
        select
          __time__-__time__ % 30 AS stamp,
          count(1) AS value
        FROM      log
        GROUP BY
          stamp
        ORDER BY
          stamp
      )
  • 查詢分析結果
    根據下述查詢分析結果可知,返回列包括src、predict、upper、lower、anomaly_prob等,其中anomaly_prob大於0表示有異常。返回結果中anomaly_prob大於0的資料條數表示異常點個數,因此您可以基於anomaly_prob大於0的資料條數設定警示。查詢分析結果

    您還可以選擇時序圖展示查詢分析結果,時序圖將更直觀地展示陡降的資料。時序圖中的紅色小圓圈表示異常點,從圖中可知,目前時間段內出現了15個異常點。

    查詢分析結果
  • 警示監控規則配置
    基於上述查詢分析結果建立警示監控規則。具體操作,請參見建立日誌警示監控規則。重要配置項說明如下:
    • 設定觸發條件有特定條資料匹配,>,5,anomaly_prob > 0,則當前4小時內出現異常的次數超過5,觸發警示。
    • 設定標註中的描述過去4小時內ERROR錯誤數異常次數超過5次內容範本SLS內建內容範本,則警示通知中將顯示當前4小時內出現異常點的次數。
    警示監控規則
  • 警示通知
    建立上述警示監控規則後,只要當前4小時內出現異常的次數超過5次,您就可以在DingTalk群中收到警示通知。您還可以單擊詳情,查看警示發生時的日誌,進行溯源。