配置企业微信机器人接收X-Pack Watcher报警

通过为阿里云Elasticsearch添加X-Pack Watcher,可以实现当满足某些条件时执行某些操作。例如当logs索引中出现error日志时,触发系统自动发送报警邮件或机器人消息。本文介绍如何配置企业微信机器人接收X-Pack Watcher报警。

前提条件

您已完成以下操作:

  • 已创建阿里云Elasticsearch实例。 具体操作,请参见创建阿里云Elasticsearch实例

    说明
    • 旧网络架构下,X-Pack Watcher功能仅支持单可用区Elasticsearch实例,不支持多可用区实例。

    • 新网络架构下,需要配置实例私网连接打通网络限制。具体操作,请参见配置实例私网连接

    关于网络架构,请参见【通知】网络架构调整

  • 已开启Elasticsearch实例的X-Pack Watcher功能。 具体操作,请参见配置YML参数

  • 已在用户VPC下创建ECS实例。具体操作,请参见自定义购买实例

    说明

    阿里云Elasticsearch的X-Pack Watcher功能不支持直接与公网通讯,需要基于实例的私网地址(专有网络VPC环境)通讯。因此,用户VPC下的ECS实例需要持有公网IP或通过配置SNAT实现公网访问。更多信息,请参见绑定弹性公网IP配置SNAT

  • 创建企业微信机器人,并获取其Webhook地址。

操作步骤

步骤一:配置Nginx代理和ECS安全组

  1. 在ECS上配置Nginx代理。

    Nginx代理的作用是转发报警信息。Elasticsearch的X-Pack Watcher服务把报警信息发送到Nginx上,Nginx再把报警信息转发到钉钉或者企业微信中。

    1. 在ECS上安装Nginx。

      安装方法,请参见Nginx安装配置

    2. 配置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地址。

    3. 加载修改后的配置文件并重启Nginx。

      /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
      /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启Nginx
  2. 配置ECS安全组。

    允许ECS上的Nginx代理接收来自Elasticsearch实例的报警信息。

    1. 登录阿里云ECS控制台

    2. 在左侧导航栏,单击实例

    3. 实例页面,单击目标实例名称。

    4. 单击安全组页签。

    5. 安全组列表页签,单击目标安全组名称。

    6. 入方向页签,单击手动添加

    7. 填写相关参数。

      参数

      说明

      授权策略

      选择允许

      优先级

      保持默认。

      协议类型

      选择自定义TCP

      端口范围

      填写您常用的端口(配置Nginx时需要用到,本文以8080为例)。

      授权对象

      添加您购买的阿里云Elasticsearch实例所有节点的IP地址。

      说明

      参见查看节点的基本信息,获取Elasticsearch实例中所有节点的IP地址。

      描述

      输入对规则的描述。

    8. 单击保存

步骤二:配置Watcher报警

  1. 登录目标阿里云Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。
    登录Kibana控制台的具体操作,请参见登录Kibana控制台
    说明 本文以阿里云Elasticsearch 6.7.0版本为例,其他版本操作可能略有差别,请以实际界面为准。
  2. 在左侧导航栏,单击Dev Tools
  3. 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