全部產品
Search
文件中心

Simple Log Service:在警示通知中引用日誌內容

更新時間:Jul 26, 2024

您可以在內容範本中選擇合適的變數(labels、annotations、fire_results或results),用於在警示通知中引用日誌內容。

Log Service支援在警示通知中展示觸發警示的詳細資料,協助您在接收到警示通知後,瞭解警示詳情。針對該功能,需要您在建立警示監控規則時,配置合理的參數,並在內容範本中添加labels、annotations、fire_results或results等變數。更多資訊,請參見內容範本變數說明(新版)

  • labels:警示標籤。

  • annotations:警示標註。

  • fire_results:觸發警示的資料。

  • results:查詢參數和中間結果。

例如在監控Nginx訪問時,您可以使用如下查詢和分析語句擷取狀態代碼、報錯機器的IP地址、錯誤次數等資訊,然後針對該結果建立警示監控規則,並在內容範本中引用該結果。當訪問出錯(status >=400)時,Log Service會給您發送警示通知,並在警示通知中展示狀態代碼、報錯機器的IP地址、錯誤次數等資訊。

  • 查詢和分析語句

    status >=400 | SELECT status, __source__ AS ip, count(*) AS cnt GROUP BY status,ip
  • 查詢和分析結果查詢和分析結果

使用labels變數

您可以在內容範本中使用labels變數,用於在警示通知中引用日誌內容。

  • 警示監控規則

    您可以在配置警示規則時添加標籤或者設定分組評估。觸發警示後,警示訊息中將產生labels資訊。

    • 分組評估:設定分組評估後,分組評估的欄位會自動添加到labels資訊中。更多資訊,請參見設定分組評估

      重要

      選擇分組評估欄位時,請選擇具備標識監控實體特徵的欄位,欄位的值可枚舉。例如設定分組評估欄位為status,則出現錯誤記錄檔時,不同的狀態代碼會觸發不同的警示。請勿選擇不具備區分監控實體特徵的欄位。使用這些欄位會產生很多分組,每個分組對應一個警示,造成警示風暴,導致錯過重要的警示資訊。

    • 添加標籤:標籤是標識性屬性。更多資訊,請參見標籤

    例如您要在警示訊息中添加日誌來源、所屬環境、狀態代碼等資訊,則您可以添加標籤app:nginxenv:prod以及設定分組評估欄位為status

    image

  • 警示訊息

    觸發警示後,將產生如下警示訊息。

    {
        "labels": {
            "app": "nginx",
            "env": "prod",
            "status": "404"
        }
    }
  • 內容範本

    您可以在內容範本中添加labels變數,則警示通知中將引用您所設定的日誌內容。如何設定內容範本,請參見建立內容範本

    內容範本

使用annotations變數

您可以在內容範本中使用annotations變數,用於在警示通知中引用日誌內容。

  • 警示監控規則

    您可以在配置警示規則時手動添加標註資訊或使用自動添加標註功能。觸發警示後,警示訊息中將產生annotations資訊。更多資訊,請參見標註

    說明

    Log Service預設提供兩個標註。

    例如您要在警示訊息中添加狀態代碼、機器IP地址、錯誤次數等資訊,則您可以添加status:${status}ip:${ip}cnt:${cnt}等標註資訊。

    • 手動添加標註

      image

    • 使用自動添加標註功能

      image

  • 警示訊息

    觸發警示後,將產生如下警示訊息。

    {
        "annotations": {
            "title": "Nginx訪問錯誤警示觸發",
            "desc": "狀態代碼400錯誤發生了15次"
            "status": "400"
            "ip": "127.0.0.1"
            "cnt": "15"
            "__count__": "1"
        }
    }
  • 內容範本

    您可以在內容範本中添加annotations變數,則警示通知中將引用您所設定的日誌內容。如何設定內容範本,請參見建立內容範本

    內容範本

使用fire_results變數

您可以在內容範本中使用fire_results變數,用於在警示通知中引用日誌內容。

  • 警示監控規則

    Log Service會根據您設定的監控規則,產生警示訊息。

    image

  • 警示訊息

    觸發警示後,將產生如下警示訊息。包括狀態代碼、機器IP地址,發生的錯誤數。

    {
        "fire_results": [
            { "status": "401", "ip": "127.0.0.1", "cnt": "3" },
            { "status": "400", "ip": "127.0.0.1", "cnt": "7" },
            { "status": "501", "ip": "127.0.0.1", "cnt": "4" },
            { "status": "404", "ip": "127.0.0.1", "cnt": "4" },
            { "status": "402", "ip": "127.0.0.1", "cnt": "6" },
            { "status": "403", "ip": "127.0.0.1", "cnt": "8" }
        ]
    }
  • 內容範本

    您可以在內容範本中添加fire_results變數,則警示通知中將引用您所設定的日誌內容。如何設定內容範本,請參見建立內容範本

    內容範本

使用results變數

您可以在內容範本中使用results變數,用於在警示通知中引用日誌內容。

  • 警示監控規則

    Log Service會根據您設定的監控規則,產生警示訊息。

    image

  • 警示訊息

    觸發警示後,將產生如下警示訊息。包括狀態代碼、機器IP地址,發生的錯誤數。

    說明

    如果一個警示監控規則中有多個查詢統計,那麼results數組將包含多項,每項對應一個查詢統計。

    {
        "results": [{
            "store_type": "log",
            "region": "cn-hangzhou",
            "project": "test-alert",
            "store": "nginx-access-log",
            "query": "status >= 400 | select status, __source__ as ip, count(*) as cnt group by status, ip",
            "start_time": 1640006894,
            "end_time": 1640007014,
            "dashboard_id": "",
            "raw_results": [
                { "status": "401", "ip": "127.0.0.1", "cnt": "3" },
                { "status": "400", "ip": "127.0.0.1", "cnt": "7" },
                { "status": "501", "ip": "127.0.0.1", "cnt": "4" },
                { "status": "404", "ip": "127.0.0.1", "cnt": "4" },
                { "status": "402", "ip": "127.0.0.1", "cnt": "6" },
                { "status": "403", "ip": "127.0.0.1", "cnt": "8" }
            ],
            "raw_result_count": 6,
            "fire_result": {
                "status": "401",
                "ip": "127.0.0.1",
                "cnt": "3"
            },
            "has_sql": true,
            "truncated": false,
            "role_arn": ""
        }]
    }
  • 內容範本

    您可以在內容範本中添加results變數,則警示通知中將引用您所設定的日誌內容。如何設定內容範本,請參見建立內容範本

    內容範本

模板變數說明

當您引用的變數內容為JSON格式(例如{{ alert.results[0].raw_results | to_json }})時,警示通知中的內容將以JSON字串形式展示。為了展示效果更友好,您可以在內容範本中使用迴圈方式,即一行行展示通知內容。更多資訊,請參見內容範本文法(新版)。樣本如下:

{%- for result in alert.fire_results %}
- status: {{ result.status }}, count: {{ result.cnt }}
{%- endfor %}

Log Service還支援通過內建函數格式化通知內容。更多資訊,請參見內容範本文法(新版)內建模板函數