將日志采集到日志服務后,您可以通過日志服務告警系統實現基于日志關鍵字的告警。

背景信息

日志記錄了系統的運行過程及異常信息,例如warning日志、error日志、Go語言中的panic錯誤日志、Java語言中的java.lang.StackOverflowError錯誤日志、系統運行狀態(例如支付失?。┤罩?。日志關鍵字的檢索和監控告警是系統運行中比較常見的需求,您可以通過檢索日志中的關鍵字和設置告警,快速感知和定位問題。日志服務提供免運維、高性能、配置靈活的告警方案,幫助您實現基于日志關鍵字的告警。

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

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

  • 查詢語句

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

    ERROR
  • 查詢結果

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

    關鍵字告警
  • 告警監控規則配置
    基于上述查詢結果創建告警監控規則。具體操作,請參見創建日志告警監控規則。重要配置項說明如下:
    • 設置觸發條件有數據,則當日志中出現ERROR關鍵字時,觸發告警。
    • 設置標注中的描述${logging},內容模板SLS內置內容模板,則告警通知中將引用原始日志中logging字段的內容。
    告警監控規則
  • 告警通知

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

    告警通知

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

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

  • 查詢分析語句

    選擇查詢時間范圍為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次,您就可以在釘釘群中收到告警通知。您還可以單擊詳情,查看告警發生時的日志,進行溯源。

    告警通知

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

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

  • 查詢分析語句

    選擇查詢時間范圍為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%,您就可以在釘釘群中收到告警通知。您還可以單擊詳情,查看告警發生時的日志,進行溯源。

    告警通知

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

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

  • 查詢分析語句

    選擇查詢時間范圍為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次,您就可以在釘釘群中收到告警通知。您還可以單擊詳情,查看告警發生時的日志,進行溯源。告警通知