配置釘釘機(jī)器人接收X-Pack Watcher報警
通過為阿里云Elasticsearch添加X-Pack Watcher,可以實現(xiàn)當(dāng)滿足某些條件時執(zhí)行某些操作。例如,當(dāng)logs索引中出現(xiàn)error日志時,觸發(fā)系統(tǒng)自動發(fā)送釘釘消息。本文介紹如何配置釘釘機(jī)器人接收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)建并配置釘釘機(jī)器人
創(chuàng)建一個釘釘報警接收群。具體操作,請參見釘釘入門教程。
在群的右上角單擊圖標(biāo),在群設(shè)置面板中,單擊機(jī)器人。
單擊添加機(jī)器人。
在機(jī)器人對話框中,單擊添加機(jī)器人。
單擊自定義機(jī)器人,單擊添加。
選中自定義關(guān)鍵詞,并輸入關(guān)鍵詞。
重要關(guān)鍵詞必須包含在您設(shè)置的報警信息中。
選中免責(zé)條款后,單擊完成。
單擊Webhook后的復(fù)制,復(fù)制機(jī)器人的Webhook地址。
請保管好Webhook地址,以備后用。同時不要將其公布在外部網(wǎng)站上,泄露Webhook地址有安全風(fēng)險。
更多信息,請參見獲取自定義機(jī)器人Webhook和安全設(shè)置。
步驟二:配置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;#監(jiān)聽端口 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地址>替換為接收報警消息的釘釘機(jī)器人的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)建log_error_watch文檔為例,每隔10s查詢logs索引中是否出現(xiàn)error日志,如果出現(xiàn)0次以上則觸發(fā)報警。
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 日志出現(xiàn)了,請盡快處理\"}}" } } } }
表 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ā)。
釘釘機(jī)器人的Webhook地址。
body
新網(wǎng)絡(luò)架構(gòu)
舊網(wǎng)絡(luò)架構(gòu)
根據(jù)釘釘機(jī)器人的安全設(shè)置配置。
例如,步驟一:創(chuàng)建并配置釘釘機(jī)器人中選擇安全設(shè)置方式為自定義關(guān)鍵詞,且添加了一個自定義關(guān)鍵詞:error,那么body中的content字段必須包含error,釘釘機(jī)器人才會推送報警信息。
說明如果在執(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報警中配置的報警條件時,您可以在釘釘群中收到類似error 日志出現(xiàn)了,請盡快處理
的報警信息。
如果您不再需要執(zhí)行報警任務(wù),可執(zhí)行以下命令刪除該報警任務(wù)。
DELETE _xpack/watcher/watch/log_error_watch