通過為阿里云Elasticsearch添加X-Pack Watcher,可以實現當滿足某些條件時執行某些操作。例如,當logs索引中出現error日志時,觸發系統自動發送釘釘消息。本文介紹如何配置釘釘機器人接收X-Pack Watcher報警。
前提條件
已創建阿里云Elasticsearch實例。 具體操作,請參見創建阿里云Elasticsearch實例。
說明舊網絡架構下,X-Pack Watcher功能僅支持單可用區Elasticsearch實例,不支持多可用區實例。
新網絡架構下,需要配置實例私網連接打通網絡限制。具體操作,請參見配置實例私網連接。
關于網絡架構,請參見【通知】網絡架構調整。
已開啟Elasticsearch實例的X-Pack Watcher功能。 具體操作,請參見配置YML參數。
已在用戶VPC下創建ECS實例。具體操作,請參見自定義購買實例。
操作步驟
步驟一:創建并配置釘釘機器人
創建一個釘釘報警接收群。具體操作,請參見釘釘入門教程。
在群的右上角單擊圖標,在群設置面板中,單擊機器人。
單擊添加機器人。
在機器人對話框中,單擊添加機器人。
單擊自定義機器人,單擊添加。
選中自定義關鍵詞,并輸入關鍵詞。
重要關鍵詞必須包含在您設置的報警信息中。
選中免責條款后,單擊完成。
單擊Webhook后的復制,復制機器人的Webhook地址。
請保管好Webhook地址,以備后用。同時不要將其公布在外部網站上,泄露Webhook地址有安全風險。
更多信息,請參見獲取自定義機器人Webhook和安全設置。
步驟二:配置Nginx代理和ECS安全組
在ECS上配置Nginx代理。
Nginx代理的作用是轉發報警信息。Elasticsearch的X-Pack Watcher服務把報警信息發送到Nginx上,Nginx再把報警信息轉發到釘釘或者企業微信中。
在ECS上安裝Nginx。
安裝方法,請參見Nginx安裝配置。
配置nginx.conf文件。
使用以下配置替換nginx.conf文件中
server
部分的配置。server { listen 8080;#監聽端口 server_name localhost;#域名 index index.html index.htm index.php; root /usr/local/webserver/nginx/html;#站點目錄 location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; # access_log off; } location / { proxy_pass <Webhook地址>; } location ~ .*\.(js|css)?$ { expires 15d; # access_log off; } access_log off; }
<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中,執行如下命令創建一個報警文檔。
以下示例以創建log_error_watch文檔為例,每隔10s查詢logs索引中是否出現error日志,如果出現0次以上則觸發報警。
PUT _xpack/watcher/watch/log_error_watch { "trigger": { "schedule": { "interval": "10s" } }, "input": { "search": { "request": { "indices": ["logs"], "body": { "query": { "match": { "message": "error" } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } }, "actions" : { "test_issue" : { "webhook" : { "method" : "POST", "url" : "http://<yourAddress>:8080", "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"error 日志出現了,請盡快處理\"}}" } } } }
表 1. 關鍵參數說明 參數
網絡類型
配置說明
url
新網絡架構
配置為終端節點域名地址,請求通過終端節點域名進行轉發。獲取終端節點域名,請參見配置阿里云Elasticsearch私網互通。
舊網絡架構
配置為以下任一地址:
Nginx代理IP地址:請求通過同VPC下Nginx代理經公網進行轉發。
釘釘機器人的Webhook地址。
body
新網絡架構
舊網絡架構
根據釘釘機器人的安全設置配置。
例如,步驟一:創建并配置釘釘機器人中選擇安全設置方式為自定義關鍵詞,且添加了一個自定義關鍵詞:error,那么body中的content字段必須包含error,釘釘機器人才會推送報警信息。
說明如果在執行以上命令時,出現
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]
異常,表示您購買的阿里云Elasticsearch實例未開啟X-Pack Watcher功能,請開啟后再執行以上命令。具體步驟,請參見配置YML參數。
步驟四:查看報警結果
正常情況下,當集群中的數據達到步驟三:配置Watcher報警中配置的報警條件時,您可以在釘釘群中收到類似error 日志出現了,請盡快處理
的報警信息。
如果您不再需要執行報警任務,可執行以下命令刪除該報警任務。
DELETE _xpack/watcher/watch/log_error_watch