全部產品
Search
文件中心

Simple Log Service:設定查詢統計語句

更新時間:Jul 19, 2024

Log Service支援聯合監控與無資料警示,本文將指導如何配置。

監控時效性說明

  1. 警示監控原理:基於警示的查詢時間範圍,根據檢查頻率定時執行配置的查詢語句,並將查詢結果作為警示條件的參數進行計算,如果計算結果為true,則觸發警示。

  2. 監控時效性問題分析

    1. 資料索引延遲:資料從寫入Log Service到被查詢之間存在延時,即便延時很低,也存在資料漏查的風險。

      例如:警示執行時間為12:03:30,查詢範圍為相對一分鐘時,檢查頻率為固定間隔1分鐘。則查詢時間範圍為[12:02:30,12:03:30),對於12:03:29秒寫入的日誌,無法保證在12:03:30這次時間點查詢到。

    2. 查詢準確性:寫入包含同一分鐘不同時間的日誌時,由於Log Service的索引構建方式,可能會存在較晚的日誌的索引寫入較早的日誌時間點。

      例如:警示執行時間為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)查詢不到日誌。

  3. 時效性最佳化建議:

    • 追求準確性:如果您對警示的準確性要求高(不重複警示,不漏報)。

      • 資料索引延遲問題:建議在查詢統計時,查詢區間的相對起始時間和相對結束時間設定早一點,如70秒前~10s前(相對),通過設定10秒的緩衝時間來避免因為索引速度過低導致漏查。

      • 查詢不準確的問題:建議在查詢統計時,查詢區間選擇整點時間,如整點1分鐘、整點5分鐘和整點1小時等,並且將檢查頻率設定成一樣的時間,如1分鐘、5分鐘和1小時等。

    • 追求即時性:如果對警示的即時性要求高(第一時間收到警示,能夠容忍重複警示)。

      • 資料索引延遲問題:建議在查詢統計時,查詢區間的相對起始時間往前推移,如70秒(相對)。

      • 查詢不準確的問題:建議在查詢統計時,查詢區間至少需要包含前一分鐘,如90秒(相對),同時設定檢查頻率為1分鐘。

關聯多個查詢分析結果

集合概念

Log Service警示監控系統將一個查詢和分析結果當做一個集合,並支援多個集合關聯監控,如下圖配置。

多集合操作

重要
  • Log Service最多支援3個集合關聯監控。

  • 預設只選取查詢和統計結果中的前1000條資料用於集合操作。當存在三個查詢和分析操作且集合操作不存在不合并選項時,只選取查詢和統計結果中的前100條資料。

  • 當存在三個集合時,先對前兩個集合進行操作,該操作結果再與第三個集合進行集合操作。例如:

    • 集合A左聯集合B左聯集合C:集合A和集合B先完成左聯操作,該結果再左聯集合C。

    • 集合A拼接集合B內聯集合C:集合A和集合B完成拼接操作,該結果再內聯集合C。

    • 集合A左斥集合B不合并集合C:集合A和集合B完成左斥操作,忽略集合C。

集合操作支援9種類型配置,具體說明如下。

集合操作

圖示

說明

不合并

不合并

兩個集合之間無關聯。

集合A為查詢和分析結果,集合B僅在警示資訊中作為內容範本的變數被引用。

笛卡爾積

集合A與集合B任意資料互相交叉組合,一般用於過濾評估。

拼接

拼接

集合B中的資料添加到集合A中,根據欄位對齊。

內聯

內聯

集合A中僅保留在集合B中存在的資料,即集合B是集合A的白名單。

左聯

左聯

在集合A中補充部分來自集合B的資訊,即集合B是A的維表。

右聯

右聯

在集合B中補充部分來自集合A的資訊,即集合A是集合B的維表。

全聯

全聯

集合A和集合B互相補充資訊。

左斥

左斥

在集合A中刪除集合B中存在的資料,即集合B是集合A的黑名單。

右斥

右斥

在集合B中刪除集合A中存在的資料,即集合A是集合B的黑名單。

操作樣本

  • 不合并

    • 需求

      監控Nginx訪問日誌,每15分鐘的5xx錯誤超過500次則觸發警示,並且在警示內容中列出具體的出錯的主機資訊。

    • 配置不拼接

    • 結果

      • 查詢統計0的結果

        統計15分鐘內發生5xx錯誤的次數。

        cnt

        1234

      • 查詢統計1的結果

        統計15分鐘內發生5xx錯誤最多的Top5主機及對應的錯誤次數。

        host

        pv

        host1

        60

        host2

        55

        host3

        47

        host4

        45

        host5

        30

      • 集合操作結果

        當選擇集合操作不合并時,集合操作結果為查詢統計0的結果。

  • 拼接

    • 樣本1

      • 需求

        北京和上海地區分別有2個用於儲存Nginx訪問日誌的Logstore,每15分鐘統計一次5xx錯誤超過30次的主機數,兩個Logstore中合格主機數超過10個時,觸發警示。

      • 配置拼接

      • 結果

        • 查詢統計0的結果

          統計15分鐘內發生5xx錯誤超過30次的主機及對應的錯誤次數。

          host

          pv

          host1

          60

          host2

          55

          host3

          47

          host4

          45

          host5

          31

        • 查詢統計1的結果

          統計15分鐘內發生5xx錯誤超過30次的主機及對應的錯誤次數。

          host

          pv

          hosta

          70

          hostb

          45

          hostc

          44

          hostd

          42

        • 集合操作結果

          當選擇集合操作拼接時,集合操作結果如下:

          host

          pv

          host1

          60

          host2

          55

          host3

          47

          host4

          45

          hosg5

          31

          hosta

          70

          hostb

          45

          hostc

          44

          hostd

          42

    • 其他樣本

      • 當2個查詢統計結果中的欄位不完全一致時,進行拼接後,無匹配的欄位留空。

        • 查詢統計0結果

          a

          b

          a1

          b1

          a2

          b2

        • 查詢統計1結果

          b

          c

          b1

          c1

          b2

          c2

        • 集合操作結果

          a

          b

          c

          a1

          b1

          a2

          b2

          b1

          c1

          b2

          c2

      • 當存在3個查詢統計時,查詢統計0和查詢統計1的結果先完成集合操作,再與查詢統計2結果拼接。

        • 查詢統計0結果

          a

          b

          a1

          b1

          a2

          b2

        • 查詢統計1結果

          a

          b

          a1

          b11

          a2

          b22

          a3

          b33

        • 查詢統計0結果與查詢統計1結果的拼接結果

          當選擇集合操作內聯$0.a == $1.a時,集合操作結果如下:

          a

          $0.b

          $1.b

          a1

          b1

          b11

          a2

          b2

          b22

        • 查詢統計2結果

          a

          b

          a3

          b333

          a4

          b444

        • 集合操作結果

          當選擇集合操作拼接時,集合操作結果如下:

          說明

          查詢統計2結果中欄位b與欄位$0.b對齊。

          a

          $0.b

          $1.b

          a1

          b1

          b11

          a2

          b2

          b22

          a3

          b333

          a4

          b444

  • 內聯

    • 樣本1

      • 需求

        監控指定Bucket中發生5xx錯誤的次數,當每15分鐘內出現1000次5xx錯誤時觸發警示。此需求中,需添加資源資料,用於維護Bucket白名單。

      • 配置內聯

      • 結果

        • 查詢統計0的結果

          統計15分鐘內發生5xx錯誤次數超過1000次的Bucket。

          bucket

          pv

          bucket_01

          1600

          bucket_02

          1550

          bucket_03

          1470

          bucket_04

          1450

        • 查詢統計1的結果

          Bucket的資源資料。

          bucket

          desc

          bucket_03

          for dev team

          bucket_04

          for test team

          bucket_05

          for service team

          bucket_06

          for support team

        • 集合操作結果

          當選擇集合操作內聯$0.bucket == $1.bucket時,集合操作結果如下:

          bucket

          pv

          desc

          bucket_03

          1470

          for dev team

          bucket_04

          1450

          for test team

    • 樣本2

      • 需求

        北京和上海地區分別有2個用於儲存Nginx訪問日誌的Logstore,每15分鐘統計一次發生5xx錯誤超過30次的用戶端。北京和上海同時發生5xx錯誤,且北京的錯誤次數大於上海時觸發警示。

      • 配置內聯

      • 結果

        • 查詢統計0結果

          統計15分鐘內北京地區發生5xx錯誤超過30次的用戶端及對應的錯誤數。

          client_ip

          pv

          192.0.2.4

          60

          192.0.2.5

          55

          192.0.2.6

          47

          192.0.2.7

          45

          192.0.2.8

          31

        • 查詢統計1結果

          統計15分鐘內上海地區發生5xx錯誤超過30次的用戶端及對應的錯誤數。

          client_ip

          pv

          192.0.2.5

          70

          192.0.2.6

          45

          192.0.2.7

          44

          192.0.2.8

          42

          192.0.2.9

          42

        • 集合操作結果

          當選擇集合操作內聯$0.client_ip == $1.client_ip$0.pv > $1.pv時,集合操作結果如下:

          client_ip

          pv

          192.0.2.6

          47

          192.0.2.7

          45

    • 其他樣本

      當2個查詢統計結果中的非關聯欄位存在同名時,集合操作的結果集合自動為欄位添加$0、$1首碼。

      • 查詢統計0結果

        a

        b

        c

        d

        a1

        b1

        c1

        d1

        a2

        b2

        c2

        d2

        a3

        b3

        c3

        d3

      • 查詢統計1結果

        a

        b

        c

        a1

        b11

        c11

        a2

        b22

        c22

      • 集合操作結果

        當選擇集合操作內聯$0.a == $1.a時,集合操作結果如下:

        a

        $0.b

        $0.c

        d

        $1.b

        $1.c

        a1

        b1

        c1

        d1

        b11

        c11

        a2

        b2

        c2

        d2

        b22

        c22

  • 左斥

    • 需求

      監控除指定Bucket外的其他Bucket發生5xx錯誤的次數,當每15分鐘內出現1000次5xx錯誤時觸發警示。此需求中,需添加資源資料,用於維護Bucket黑名單。

    • 配置左斥

    • 結果

      • 查詢統計0的結果

        統計15分鐘內出現5xx錯誤超過1000次的Bucket。

        bucket

        pv

        bucket_01

        60

        bucket_02

        55

        bucket_03

        47

        bucket_04

        45

      • 查詢統計1的結果

        Bucket的資源資料。

        bucket

        desc

        bucket_03

        for dev team

        bucket_04

        for test team

      • 集合操作結果

        當選擇集合操作左斥$0.bucket == $1.bucket時,集合操作結果如下:

        bucket

        pv

        bucket_01

        60

        bucket_02

        55

  • 右斥

    • 需求

      監控除指定Bucket外的其他Bucket發生5xx錯誤的次數,當每15分鐘內出現1000次5xx錯誤時觸發就警示。此需求中,需添加資源資料,用於維護Bucket黑名單。

    • 配置右斥

    • 結果

      • 查詢統計0的結果

        Bucket的資源資料。

        bucket

        desc

        bucket_03

        for dev team

        bucket_04

        for test team

      • 查詢統計1的結果

        統計15分鐘內出現5xx錯誤超過1000次的Bucket。

        bucket

        pv

        bucket_01

        60

        bucket_02

        55

        bucket_03

        47

        bucket_04

        45

      • 集合操作結果

        當選擇集合操作右斥$0.bucket == $1.bucket時,集合操作結果如下:

        bucket

        pv

        bucket_01

        60

        bucket_02

        55

  • 笛卡爾積

    • 樣本1

      • 需求:

        同時監控OSS訪問日誌和SLB訪問日誌,每15分鐘統計一次OSS的4xx錯誤和SLB的5xx錯誤,當總次數達到1000次時觸發警示。

      • 配置:笛卡爾積

      • 結果:

        • 查詢統計0的結果

          統計15分鐘內出現OSS 4xx錯誤的次數。

          pv

          890

        • 查詢統計1的結果

          統計15分鐘內出現SLB 5xx錯誤的次數。

          pv

          567

        • 集合操作結果

          當選擇集合操作笛卡爾積時,集合操作結果如下:

          $0.pv

          $1.pv

          890

          567

    • 其他樣本

      • 查詢統計0結果

        a

        b

        a1

        b1

        a2

        b2

        a5

        b5

      • 查詢統計1結果

        a

        c

        a1

        c1

        a3

        c3

      • 集合操作結果

        當選擇集合操作笛卡爾積時,集合操作結果如下:

        $0.a

        b

        $1.a

        c

        a1

        b1

        a1

        c1

        a1

        b1

        a3

        c3

        a2

        b2

        a1

        c1

        a2

        b2

        a3

        c3

        a5

        b5

        a1

        c1

        a5

        b5

        a3

        c3

  • 左聯

    • 查詢統計0結果

      a

      b

      a1

      b1

      a2

      b2

      a3

      b3

    • 查詢統計1結果

      a

      b

      c

      a1

      b11

      c1

      a2

      b22

      c2

    • 集合操作結果

      當選擇集合操作左聯$0.a == $1.a時,集合操作結果如下:

      a

      $0.b

      $1.b

      c

      a1

      b1

      b11

      c1

      a2

      b2

      b22

      c2

      a3

      b3

  • 右聯

    • 查詢統計0結果

      a

      b

      c

      a1

      b11

      c1

      a2

      b22

      c2

    • 查詢統計1結果

      a

      b

      a1

      b1

      a2

      b2

      a3

      b3

    • 集合操作結果

      當選擇集合操作右聯$0.a == $1.a時,集合操作結果如下:

      a

      $0.b

      c

      $1.b

      a1

      b11

      c1

      b1

      a2

      b22

      c2

      b2

      a3

      b3

  • 全聯

    • 查詢統計0

      a

      b

      c

      a1

      b1

      c1

      a2

      b2

      c2

      a5

      b5

      c3

    • 查詢統計1結果

      a

      b

      d

      a1

      b11

      d1

      a2

      b22

      d2

      a3

      b33

      d3

    • 集合操作結果

      當選擇集合操作全聯$0.a == $1.a時,集合操作結果如下:

      a

      $0.b

      c

      $1.b

      d

      a1

      b1

      c1

      b11

      d1

      a2

      b2

      c2

      b22

      d2

      a5

      b5

      c3

      a3

      b33

      d3

無資料警示

您可以使用無資料警示功能,避免採集過程中資料丟失無感知問題。例如您建立了一個警示監控規則用於監控各個主機的CPU指標,並希望發生如下情況時,收到警示通知。

  • CPU使用率超過95%。

  • 查詢和分析結果中無資料。

具體配置如下所示:

  • 查詢統計* | select promql_query_range('cpu_util') from metrics limit 1000

    該查詢和分析語句用於統計CPU的使用率。

  • 觸發條件有資料匹配value>95嚴重度:中

    當查詢和分析結果中存在value的值大於95時,觸發中層級的警示。

  • 連續觸發閾值:當累計觸發的警示次數達到該值時,產生一條警示。

  • 無資料警示:開啟無資料警示開關,並設定嚴重度和標註資訊。

    開啟無資料警示功能後,如果查詢和分析結果中無資料的次數超過連續觸發閾值,將觸發警示。

    無資料警示具備獨立的警示嚴重度和標註資訊。

頁面配置展示如下圖:

無資料警示