全部產品
Search
文件中心

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

更新時間:Jun 30, 2024

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

前提條件

您已完成以下操作:

  • 已建立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

      連接埠範圍

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

      授權對象

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

      說明

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

      描述

      輸入對規則的描述。

    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