全部產品
Search
文件中心

Simple Log Service:使用自訂Webhook的常見問題

更新時間:Jun 30, 2024

本文介紹使用自訂Webhook的常見問題。

如何設定內容範本

當通過自訂Webhook進行警示通知時,建議設定通知內容為JSON格式,即最終渲染的內容需為合法的JSON格式。

例如為如下的警示訊息配置內容範本,由於alert.annotations.message欄位值中包含雙引號(""),因此您在內容範本中直接使用{{ alert.annotations.message }},會導致渲染結果不是合法的JSON,從而導致發送警示通知失敗。

您需要使用內建模板函數quote(value)對資料進行引用,避免因為特殊字元導致JSON格式異常。

  • 警示訊息樣本

    {
        "project": "test-alert",
        "region": "cn-hangzhou",
        "labels": {
            "service": "signin",
            "env": "prod"
        },
        "annotations": {
            "message": "user \"xxx\" signin failed, error is: userNotFound"
        }
    }
  • 內容範本樣本

    {
        "project": "{{ alert.project }}",
        "service": "{{ alert.labels.service }}",
        "message": {{ alert.annotations.message | quote }}
    }
  • 渲染結果樣本

    {
        "project": "test-alert",
        "service": "signin",
        "message": "user \"xxx\" signin failed, error is: userNotFound"
    }

如何選擇網路

Log Service警示中的Webhook通知僅支援公網訪問。如果是內部系統,且不希望對外開啟訪問功能時,可以通過公網代理方式解決。參考架構如下圖所示。

如何設定存取權限校正

您可以通過設定IP白名單或設定HTTPHeader的方式來進行許可權校正。

  • 為您的Webhook服務設定訪問IP白名單。IP地址為120.76.47.88、119.23.150.175。

  • 通過設定HTTPHeader的方式來進行許可權校正。

    • 使用自訂Token:在Header中添加Authorization: Bearer token,其中token需替換為您自訂的Token。

    • 使用Basic Auth:在Header中添加Authorization: Basic $(base64_encode(username:password)),其中usernamepassword需替換為實際的使用者名稱和密碼。

例如您的Webhook服務使用了Nginx反向 Proxy,則您可以在Nginx中設定Basic Auth,從而實現存取權限校正。

  1. 在Nginx中設定Basic Auth。

    1. 在密碼檔案中添加使用者。

      重要

      如果不存在conf/passwd檔案,需先手動建立。

      例如使用者名稱為admin,密碼為foobar。

      htpasswd -b conf/passwd admin foobar
    2. 在Nginx中添加auth_basic和auth_basic_user_file配置,開啟Basic Auth。

      location / {
          auth_basic  on;
          auth_basic_user_file  conf/passwd;
          root   html;
          index  index.html index.htm;
      }
    3. 重啟Nginx。

  2. 在行動策略中設定自訂Webhook。

    echo -n admin:foobar | base64的結果為YWRtaW46Zm9vYmFy,因此在設定自訂Webhook時,您可以直接使用Authorization: Basic YWRtaW46Zm9vYmFy Header。具體操作,請參見Webhook-自訂