配置企業(yè)微信機器人接收X-Pack Watcher報警
通過為阿里云Elasticsearch添加X-Pack Watcher,可以實現(xiàn)當(dāng)滿足某些條件時執(zhí)行某些操作。例如當(dāng)logs索引中出現(xiàn)error日志時,觸發(fā)系統(tǒng)自動發(fā)送報警郵件或機器人消息。本文介紹如何配置企業(yè)微信機器人接收X-Pack Watcher報警。
前提條件
您已完成以下操作:
已創(chuàng)建阿里云Elasticsearch實例。 具體操作,請參見創(chuàng)建阿里云Elasticsearch實例。
說明舊網(wǎng)絡(luò)架構(gòu)下,X-Pack Watcher功能僅支持單可用區(qū)Elasticsearch實例,不支持多可用區(qū)實例。
新網(wǎng)絡(luò)架構(gòu)下,需要配置實例私網(wǎng)連接打通網(wǎng)絡(luò)限制。具體操作,請參見配置實例私網(wǎng)連接。
關(guān)于網(wǎng)絡(luò)架構(gòu),請參見【通知】網(wǎng)絡(luò)架構(gòu)調(diào)整。
已開啟Elasticsearch實例的X-Pack Watcher功能。 具體操作,請參見配置YML參數(shù)。
已在用戶VPC下創(chuàng)建ECS實例。具體操作,請參見自定義購買實例。
說明阿里云Elasticsearch的X-Pack Watcher功能不支持直接與公網(wǎng)通訊,需要基于實例的私網(wǎng)地址(專有網(wǎng)絡(luò)VPC環(huán)境)通訊。因此,用戶VPC下的ECS實例需要持有公網(wǎng)IP或通過配置SNAT實現(xiàn)公網(wǎng)訪問。更多信息,請參見綁定彈性公網(wǎng)IP或配置SNAT。
創(chuàng)建企業(yè)微信機器人,并獲取其Webhook地址。
操作步驟
步驟一:配置Nginx代理和ECS安全組
在ECS上配置Nginx代理。
Nginx代理的作用是轉(zhuǎn)發(fā)報警信息。Elasticsearch的X-Pack Watcher服務(wù)把報警信息發(fā)送到Nginx上,Nginx再把報警信息轉(zhuǎn)發(fā)到釘釘或者企業(yè)微信中。
在ECS上安裝Nginx。
安裝方法,請參見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 <企業(yè)微信機器人Webhook地址>; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
<企業(yè)微信機器人Webhook地址>:請?zhí)鎿Q為接收報警消息的企業(yè)微信機器人的Webhook地址。
加載修改后的配置文件并重啟Nginx。
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新載入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen # 重啟Nginx
配置ECS安全組。
允許ECS上的Nginx代理接收來自Elasticsearch實例的報警信息。
登錄阿里云ECS控制臺。
在左側(cè)導(dǎo)航欄,單擊實例。
在實例頁面,單擊目標(biāo)實例名稱。
單擊安全組頁簽。
在安全組列表頁簽,單擊目標(biāo)安全組名稱。
在入方向頁簽,單擊手動添加。
填寫相關(guān)參數(shù)。
參數(shù)
說明
授權(quán)策略
選擇允許。
優(yōu)先級
保持默認(rèn)。
協(xié)議類型
選擇自定義TCP。
端口范圍
填寫您常用的端口(配置Nginx時需要用到,本文以8080為例)。
授權(quán)對象
添加您購買的阿里云Elasticsearch實例所有節(jié)點的IP地址。
說明參見查看節(jié)點的基本信息,獲取Elasticsearch實例中所有節(jié)點的IP地址。
描述
輸入對規(guī)則的描述。
單擊保存。
步驟二:配置Watcher報警
- 登錄目標(biāo)阿里云Elasticsearch實例的Kibana控制臺,根據(jù)頁面提示進(jìn)入Kibana主頁。登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺。說明 本文以阿里云Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實際界面為準(zhǔn)。
- 在左側(cè)導(dǎo)航欄,單擊Dev Tools。
在Console中,執(zhí)行如下命令創(chuàng)建一個報警文檔。
以創(chuàng)建developer_count_watch文檔為例,每隔10s查詢zl-testgaes索引中的developer字段,如果字段值為Nintendo且出現(xiàn)次數(shù)大于158974則觸發(fā)報警。
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. 關(guān)鍵參數(shù)說明
參數(shù)
網(wǎng)絡(luò)類型
配置說明
url
新網(wǎng)絡(luò)架構(gòu)
配置為終端節(jié)點域名地址,請求通過終端節(jié)點域名進(jìn)行轉(zhuǎn)發(fā)。獲取終端節(jié)點域名,請參見配置阿里云Elasticsearch私網(wǎng)互通。
舊網(wǎng)絡(luò)架構(gòu)
配置為以下任一地址:
Nginx代理IP地址:請求通過同VPC下Nginx代理經(jīng)公網(wǎng)進(jìn)行轉(zhuǎn)發(fā)。
企業(yè)微信機器人的Webhook地址。
說明如果在執(zhí)行以上命令時,出現(xiàn)
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]
異常,表示您購買的阿里云Elasticsearch實例未開啟X-Pack Watcher功能,請開啟后再執(zhí)行以上命令。具體步驟,請參見配置YML參數(shù)。
步驟三:查看報警結(jié)果
正常情況下,當(dāng)集群中的數(shù)據(jù)達(dá)到步驟二:配置Watcher報警中配置的報警條件時,您可以企業(yè)微信中收到如下報警信息。
如果您不再需要執(zhí)行報警任務(wù),可執(zhí)行以下命令刪除該報警任務(wù)。
DELETE _xpack/watcher/watch/developer_count_watch