前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云Elasticsearch Watcher 功能之 Webhook实践

腾讯云Elasticsearch Watcher 功能之 Webhook实践

原创
作者头像
南非骆驼说大数据
修改2020-12-04 13:14:55
2.9K0
修改2020-12-04 13:14:55
举报

引言 __

Elasticsearch 的商业包 x-pack 给我们提供了很多高阶功能,其中有一个非常重要的用来检测日志是否异常并及时发送警报信息的功能,我们称这个功能为Watcher for alert.

由于该功能不免费使用,用户需要将您的ES集群升级或购买到白金版ES才能正常使用。腾讯云ES用户从2020年5月20号起购买的白金版ES集群支持通过Webhook的方式实现告警; 由于网络安全原因,云上集群暂不支持通过配置Outlook 邮件服务器的方式实现邮件告警。

一、背景信息之 Watcher

一个Watcher 由 5 部分组成,具体如下:

  • Trigger -- 多久被触发一次 (如5分钟触发一次)
  • Input -- 查询条件 (在所有日志索引中查看”error“ 相关)
  • Condition -- 查询是否满足条件 (列如:大于1000条 返回)
  • Actions -- 当条件发生时,执行的具体操作(列如:发送邮件、Webhook告警) Action类型有四种:EMail(邮件),Webhook(第三方对接),Index(索引),Logging(日志记录)。本文以配置Webhook Action为例。

二、背景信息之Webhook

webhook是一种web回调或者http的push API,是向APP或者其他应用提供实时信息的一种方式。Webhook在数据产生时立即发送数据,也就是你能实时收到数据。你可以把它想象成一个第三方接口,它能将收到的信息实时转发到你提前定制好的APP或者平台上。其工作流程大致如下:

WebHook工作流程
WebHook工作流程

注意: Webhook本身并不能自己独立使用,需要一个载体,同时使用一个webhook需要为webhook准备一个URL,用于webhook 发送请求。这些通常由后台页面和或者API完成。

三、WebHook 配置企业微信机器人接收X-Pack Watcher报警实践

前置条件

1, 需要 ES 7.5.1 白金版 <注意: 创建时间必须在2020年5月20日以后>

2, 需要准备一台与该ES集群同网段的可以连接外网的CVM;

3, 下载并配置Nginx,步骤如下:

  • 在已准备的CVM上安装Nginx。具体安装方法请参见Nginx安装配置;
  • 配置nginx.conf文件。使用以下配置替换nginx.conf文件中 Server 部分的配置;
Nginx配置
Nginx配置
代码语言:javascript
复制
server {
        listen       8099;
        server_name  localhost;
        index index.html index.htm index.php;
        root /usr/local/nginx/html;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
       location ~ .*\.(php|php5)?$
        {
          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 //企业微信机器人的wehbook地址,外网地址;
        }
       location ~ .*\.(js|css)?$
       {
      expires 15d;
      # access_log off;
       }
      access_log off;


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
  • Nginx服务的默认端口是80,如您需要更改其端口,则需要去腾讯云控制台,安全组,放行此端口;
  • 加载修改后的配置文件并重启Nginx。参考如下:
代码语言:javascript
复制
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启Nginx
  • Nginx正常启动后,展示界面如下:
Nginx服务启动界面
Nginx服务启动界面

注意:怎么样获取一个企业微信机器人Webhook地址? 首先,您需要创建一个企业微信群; 其次,选中该群,点击鼠标右键,选择添加群机器人

添加群机器人
添加群机器人

随后,选择”新创建一个机器人“,这样您就获得了一个可以外网访问得Webhook机器人地址,如下:

新建一个机器人
新建一个机器人

4,设置告警

  • 登录对应腾讯云Elasticsearch实例的Kibana控制台。
  • 在左侧菜单栏,单击Dev Tools(开发工具)以下示例以创建为例,每隔10s查询"logs"索引中是否出现"error"日志,如果出现0次以上则触发报警。如下:
代码语言:javascript
复制
PUT _xpack/watcher/watch/log_error_watch1
{
  "trigger": {
    "schedule": {
      "interval": "10s"
    }
  },
  "input": {
    "search": {
      "request": {
        "indices": ["logs"],
        "body": {
          "query": {
            "match": {
              "message": "error"    
//添加了一个自定义关键词:error,那么body中的message字段必须包含error,企业微信机器人才会推送报警信息。
            }
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },
  "actions" : {
  "test_issue" : {
    "webhook" : {
      "method" : "POST",
      "url" : "http://《您的CVM内网IP》:8099",
      "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"error 日志出现了,请尽快处理\"}}"
    }
  }
}
}

5,创建成功后,我们可以加入一些测试语句,如下:

代码语言:javascript
复制
 PUT logs/_doc/1
  {
    "message":"The email error,check the email sever pls."
  }
  
  PUT logs/_doc/2
  {
    "message":"The output error,check the email sever pls ASAP."
  }
  

最后,我们可以在自己创建的企业微信群里接收到机器人发来的告警信息了,如下:

告警接收成功提示。
告警接收成功提示。

当然,上面的操作是API操作,我们也可以在Kibana - Management - Watcher 选项,进行图形化操作:

Kibana Watcher 设置
Kibana Watcher 设置

点击,右上角的“Create”,有两个选项,“Create threshold alert” 和 "Create advanced watch";

  • Create threshold alert”,是阈值告警设置。可以针对某索引的特定条件进行监控告警,比如:CPU使用率、文档个数等,可以在下面的Condition 选项作更细节的设置,参考如下:
阈值告警设置
阈值告警设置

随后,点击右下角的"Add action", 选择 “Wehhook”, 相关设置如下:

Webhook设置
Webhook设置

随后点击"Send request",并“点击创建alert即可。

  • "Create advanced watch" 是高阶的API设置,大概如下图所示:
"Create advanced watch”测试
"Create advanced watch”测试

后续步骤

如果不再需要执行报警任务,请使用以下命令删除该报警任务。

代码语言:javascript
复制
DELETE _xpack/watcher/watch/log_error_watch1

四、 写在最后

Watcher中的Action指配置指定的预警动作,在满足触发条件且不节流的情况下执行。每个Action动作执行一次,Action之间相互独立。执行过程中,发生任何错误都会记录结果,可以在历史记录中查看。

本次我们以企业微信机器人webhook为场景,配置告警并接收成功,希望以此为介入点,提升用户在watcher这块的使用认知,其它Webhook机器人的配置均可以参照上面的思维进行调试配置,以满足企业实际的需求。更多信息,请参考 ES 官方链接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言 __
  • 一、背景信息之 Watcher
  • 二、背景信息之Webhook
  • 三、WebHook 配置企业微信机器人接收X-Pack Watcher报警实践
    • 后续步骤
    • 四、 写在最后
    相关产品与服务
    Elasticsearch Service
    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档