全部產品
Search
文件中心

Elasticsearch:配置企業微信機器人接收X-Pack Watcher警示

更新時間:Jun 10, 2026

通過為Elasticsearch添加X-Pack Watcher,可以實現當滿足某些條件時執行某些操作。例如當logs索引中出現error日誌時,觸發系統自動發送警示郵件或機器人訊息。本文介紹如何配置企業微信機器人接收X-Pack Watcher警示。

功能介紹

X-Pack Watcher主要由以下四個組件組成:Trigger(定時觸發器,定義監控檢測的執行頻率)、Input(資料輸入,從叢集擷取監控資料)、Condition(觸發條件,判斷是否滿足警示閾值)和Actions(警示動作,定義滿足條件後的通知方式,例如Webhook)。

前提條件

您已完成以下操作:

  • 已建立Elasticsearch執行個體。 具體操作,請參見建立Elasticsearch執行個體

    說明
    • 舊網路架構下,X-Pack Watcher功能僅支援單可用性區域Elasticsearch執行個體,不支援多可用性區域執行個體。

    • 新網路架構下,需要配置執行個體私網串連打通網路限制。具體操作,請參見配置執行個體私網串連

    關於網路架構,請參見【通知】網路架構調整

  • 已開啟Elasticsearch執行個體的X-Pack Watcher功能。 具體操作,請參見配置YML參數

  • 已在使用者VPC下建立ECS執行個體。具體操作,請參見自訂購買執行個體

    說明

    Elasticsearch的X-Pack Watcher功能不支援直接與公網通訊,需要基於執行個體的私網地址(Virtual Private Cloud環境)通訊。因此,使用者VPC下的ECS執行個體需要持有公網IP或通過配置SNAT實現公網訪問。更多資訊,請參見綁定Elastic IP Address配置SNAT

  • 建立企業微信機器人,並擷取其Webhook地址。

操作步驟

步驟一:配置Nginx代理和ECS安全性群組

  1. 在ECS上配置Nginx代理。

    Nginx代理的作用是轉寄警示資訊。Elasticsearch的X-Pack Watcher服務把警示資訊發送到Nginx上,Nginx再把警示資訊轉寄到DingTalk或者企業微信中。

    1. 在ECS上安裝Nginx。

    2. 配置nginx.conf檔案。

      使用以下配置替換nginx.conf檔案中server部分的配置。

      server {
              listen 8080;
              server_name _;
              root /usr/share/nginx/html;
              # Load configuration files for the default server block.
              include /etc/nginx/default.d/*.conf;
      
                location / {
                  proxy_pass <企業微信機器人Webhook地址>;
                }
              error_page 404 /404.html;
                  location = /40x.html {
              }
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
              }
          }

      <企業微信機器人Webhook地址>:請替換為接收警示訊息的企業微信機器人的Webhook地址。

    3. 載入修改後的設定檔並重啟Nginx。

      /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新載入設定檔
      /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啟Nginx
  2. 配置ECS安全性群組。

    允許ECS上的Nginx代理接收來自Elasticsearch執行個體的警示資訊。

    1. 登入阿里雲ECS控制台

    2. 在左側導覽列,單擊執行個體與鏡像 > 執行個體

    3. 執行個體頁面,單擊目標執行個體名稱。

    4. 單擊安全性群組頁簽。

    5. 安全性群組列表頁簽,單擊目標安全性群組名稱。

    6. 入方向頁簽,單擊增加規則

    7. 填寫相關參數。

      參數

      說明

      授權策略

      選擇允许

      優先順序

      保持預設。

      協議

      選擇自訂TCP

      訪問來源

      添加您購買的Elasticsearch執行個體所有節點的IP地址。

      說明

      參見查看節點的基本資料,擷取Elasticsearch執行個體中所有節點的IP地址。

      訪問目的

      填寫您常用的連接埠(配置Nginx時需要用到,本文以8080為例)。

      描述

      輸入對規則的描述。

    8. 單擊確定

步驟二:配置Watcher警示

  1. 登入目標Elasticsearch執行個體的Kibana控制台,根據頁面提示進入Kibana首頁。

    登入Kibana控制台的具體操作,請參見登入Kibana控制台

    說明

    本文以Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際介面為準。

  2. 在左側導覽列,單擊Dev Tools

  3. Console中,執行如下命令建立一個警示文檔。

    以建立developer_count_watch文檔為例,每隔10s查詢zl-testgaes索引中的developer欄位,如果欄位值為Nintendo且出現次數大於158974則觸發警示。

    PUT _xpack/watcher/watch/developer_count_watch
    {
      "trigger": {
        "schedule": {
          "interval": "10s"
        }
      },
      "input": {
        "search": {
          "request": {
            "indices": ["zl-testgaes"],
            "body": {
              "query": {
        "bool": {
          "must": [
            {"match": 
             {
               "developer" : "Nintendo"    
            }
            },
            {
            "range": {
              "year_of_release": {
                "gte": "2011-09-20T16:00:00.000Z",
                "lte": "2011-12-31T16:00:00.000Z"
                      }
                  }
            }
          ]
        } 
      }
            }
          }
        }
      },
      "condition": {
        "compare": {
          "ctx.payload.hits.total": {
            "gt": 158974
          }
        }
      },
      "actions" : {
      "test_issue" : {
        "webhook" : {
          "method" : "POST",
          "url" : "http://<yourAddress>:8080",
          "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"developer is Nintendo,More than 158974\"}}"
        }
      }
    }
    }

    表 1. 關鍵參數說明

    參數

    網路類型

    配置說明

    url

    新網路架構

    配置為終端節點網域名稱地址,請求通過終端節點網域名稱進行轉寄。擷取終端節點網域名稱,請參見配置Elasticsearch私網互連

    舊網路架構

    配置為以下任一地址:

    • Nginx代理IP地址:請求通過同VPC下Nginx代理經公網進行轉寄。

    • 企業微信機器人的Webhook地址。

    說明

    如果在執行以上命令時,出現No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]異常,表示您購買的Elasticsearch執行個體未開啟X-Pack Watcher功能,請開啟後再執行以上命令。具體步驟,請參見配置YML參數

步驟三:查看警示結果

正常情況下,當叢集中的資料達到步驟二:配置Watcher警示中配置的警示條件時,您可以企業微信中收到如下警示資訊。企業微信機器人警示配置

說明

如果您不再需要執行警示任務,可執行以下命令刪除該警示任務。

DELETE _xpack/watcher/watch/developer_count_watch