通過為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安全性群組
在ECS上配置Nginx代理。
Nginx代理的作用是轉寄警示資訊。Elasticsearch的X-Pack Watcher服務把警示資訊發送到Nginx上,Nginx再把警示資訊轉寄到DingTalk或者企業微信中。
在ECS上安裝Nginx。
配置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地址。
載入修改後的設定檔並重啟Nginx。
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新載入設定檔 /usr/local/webserver/nginx/sbin/nginx -s reopen # 重啟Nginx
配置ECS安全性群組。
允許ECS上的Nginx代理接收來自Elasticsearch執行個體的警示資訊。
步驟二:配置Watcher警示
- 登入目標Elasticsearch執行個體的Kibana控制台,根據頁面提示進入Kibana首頁。登入Kibana控制台的具體操作,請參見登入Kibana控制台。說明 本文以Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際介面為準。
- 在左側導覽列,單擊Dev Tools。
在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