通过为阿里云Elasticsearch添加X-Pack Watcher,可以实现当满足某些条件时执行某些操作。例如当logs索引中出现error日志时,触发系统自动发送报警邮件或机器人消息。本文介绍如何配置企业微信机器人接收X-Pack Watcher报警。
前提条件
您已完成以下操作:
已创建阿里云Elasticsearch实例。 具体操作,请参见创建阿里云Elasticsearch实例。
说明旧网络架构下,X-Pack Watcher功能仅支持单可用区Elasticsearch实例,不支持多可用区实例。
新网络架构下,需要配置实例私网连接打通网络限制。具体操作,请参见配置实例私网连接。
关于网络架构,请参见【通知】网络架构调整。
已开启Elasticsearch实例的X-Pack Watcher功能。 具体操作,请参见配置YML参数。
已在用户VPC下创建ECS实例。具体操作,请参见自定义购买实例。
创建企业微信机器人,并获取其Webhook地址。
操作步骤
步骤一:配置Nginx代理和ECS安全组
在ECS上配置Nginx代理。
Nginx代理的作用是转发报警信息。Elasticsearch的X-Pack Watcher服务把报警信息发送到Nginx上,Nginx再把报警信息转发到钉钉或者企业微信中。
在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