通过为阿里云Elasticsearch添加X-Pack Watcher,可以实现当满足某些条件时执行某些操作。例如当logs索引中出现error日志时,触发系统自动发送报警邮件或钉钉消息。可以简单地理解为X-Pack Watcher是一个基于Elasticsearch实现的监控报警服务。本文介绍如何配置钉钉机器人接收X-Pack Watcher报警。
背景信息
X-Pack Watcher功能主要由Trigger、Input、Condition和Actions组成:
- Trigger
Watcher定时触发器,即多久触发一次Watcher,相当于多久执行一次input。支持多种调度触发器,详细信息请参见Schedule Trigger。
- Input
Input将数据加载到执行上下文,用于后续的Watcher执行阶段,如果input没有指定,将会加载一个空上下文,详细信息请参见Inputs。Watcher支持以下input类型:
- simple:将输入静态数据加载到执行上下文。例如手动输入一段简单的数据进行报警。
- search:将搜索结果加载到执行上下文。例如全文搜索关键词,对搜索结果进行统计实现报警。
- http:将HTTP请求结果加载到执行上下文。例如通过Elasticsearch请求接口获取集群健康状态、节点状态等实现报警。
- chain:将一系列的输入数据加载到执行上下文,这些数据一般是来自多个源。
- Condition
执行Actions的条件。即满足条件将会触发下一步操作,如果不指定条件,默认为always,详细信息请参见Conditions。Watcher支持以下condition类型:
- always:条件总为true,始终执行Watcher Actions。
- nerver:条件总为false,从不执行Watcher Actions。
- compare:对Watcher有效负载中的值进行简单比较,以确定是否执行Watcher Actions。
- array_compare:将Watcher有效负载中的值数组与给定值进行比较,以确定是否执行Watcher Actions。
- script:使用脚本确定是否执行Watcher Actions。
- Actions
报警接收对象,常见的报警接收对象包括邮件、Webhook 、index和logging等,详细信息请参见Actions。说明 通过邮件接收报警存在端口限制,阿里云Elasticsearch不支持,建议通过Webhook进行邮件转发。
前提条件
您已完成以下操作:
- 创建单可用区的阿里云Elasticsearch实例。
具体操作,请参见创建阿里云Elasticsearch实例。说明 旧网络架构下X-Pack Watcher功能仅支持单可用区Elasticsearch实例,不支持多可用区实例,新网络架构下没有限制。
- 开启Elasticsearch实例的X-Pack Watcher功能(默认关闭)。
具体操作,请参见配置YML参数。
- 在用户VPC下创建ECS服务,并部署相关应用。
具体操作,请参见使用向导创建实例。
说明- 使用PrivateLink打通网络时,ECS服务器会作为后端服务器,主要接收通过负载均衡实例所转发的请求,没有可用区的限制,但是在创建时需要与负载均衡实例部署在同一地域且同一VPC下。
- 阿里云Elasticsearch的X-Pack Watcher功能不支持直接与公网通讯,需要基于实例的内网地址通讯(专有网络VPC环境),因此您需要对VPC网络下的ECS配置SNAT或弹性公网IP,作为代理去转发请求。
注意事项
自2020年10月起,阿里云Elasticsearch对不同地域进行了网络架构的调整,对创建的实例有以下影响:
- 2020年10月之前创建的实例均在旧网络架构下,即Elasticsearch实例处于用户VPC下,如果需要访问公网,可以直接使用SNAT功能或自建Nginx代理。
- 2020年10月及之后创建的实例均在新网络架构下,即Elasticsearch实例处于Elasticsearch服务VPC下,X-Pack Watcher功能受到网络限制,为解决此问题,阿里云Elasticsearch提供了实例私网连接方案,详细信息请参见配置实例私网连接。如果您还需要将报警信息推送至公网环境,在通过实例私网连接打通Elasticsearch服务VPC和用户VPC的基础上,还需对负载均衡后端服务配置Nginx代理或开启SNAT功能实现公网信息推送。
注意 实例私网连接方案是新网络架构下X-Pack Watcher、reindex、LDAP和AD(Active Directory)身份认证等功能受限的唯一解决方案,为保证功能使用不受影响,请严格按照文档配置。
操作流程
步骤一:创建并配置钉钉机器人
(可选)步骤二:配置Elasticsearch实例私网连接
旧网络架构下创建的实例,无需配置私网连接;新网络架构下创建的实例,需要配置私网连接。
步骤三:配置ECS安全组和Nginx代理
- 配置ECS安全组。
- 配置Nginx代理。
步骤四:配置Watcher报警
步骤五:查看报警结果
正常情况下,当集群中的数据达到步骤四:配置Watcher报警中配置的报警条件时,您可以在钉钉群中收到类似
error 日志出现了,请尽快处理
的报警信息。
说明 如果您不再需要执行报警任务,可执行以下命令删除该报警任务。
DELETE _xpack/watcher/watch/log_error_watch