zoukankan      html  css  js  c++  java
  • ElasticSearch(ES)预警服务 Watcher安装以及探究

    最近公司需求要搭建一个监控系统,用来监控程序运行状态,请求曲线,错误日志发生次数,等等分析,保障系统稳定性。因此最近研究了基于Lucene 号称企业级搜索服务的ElasticSearch ,用了一段时间发现速度还真快,对百万级甚至千万级的数据检索毫无压力,比之前用的MongoDB速度快了不少。

    ElasticSearch服务安装过程这里就不在说了,有了监控之后应该还需给开发人员发送邮件,告知某项错误已经达到某个阀值,应该关注去分析解决发生错误的原因,进一步发现程序上的bug,然后fix掉,下面隆重介绍下es(这里将ElasticSearch简称为es)的插件,Watcher,功能嘛很显然就是预警服务。

    一、安装

    1.依赖于License 插件,先安装License插件,在ES_HOME目录下面安装License

    bin/plugin install license

    2.安裝watcher插件

    bin/plugin install watcher
    

    注:中间过程询问是否继续时候输入y按回车继续安装

    3.验证是否安装成功

    curl -XGET 'http://localhost:9200/_watcher/stats?pretty'

    返回结果如下则表示安装成功

    {
      "watcher_state": "started",
      "watch_count": 0,
      "execution_thread_pool": {
        "queue_size": 0,
        "max_size": 0
      }
    }

     二、Watcher插件配置(创建预警任务)

    watcher目前是沒有界面配置的,需要通过Resfulapi调用创建、管理、更新预警任务

    创建一个Watcher任务的流程是怎样的?

    我们先来看下创建一个预警demo的api

    curl -XPUT 'http://localhost:9200/_watcher/watch/log_error_watch' -d '
    {
    "trigger": { "schedule": { "interval": "1m" } }, "input": { "search": { "request": { "indices": [ "monitor_ticket_bargainfindermaxrq_201610" ], "body": { "query": { "bool": { "must": [ { "match": { "collectionName": "BargainFinderMaxRQ" } }, { "range": { "createTime": { "gt" : "now-1m" } } } ] } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 20 } } }, "actions": { "send_email": { "email": { "to": "xxxxxx@xxx.com", "subject": "TICKET_BFM 過去一分鐘內錯誤發生次數超過20,請關注", "body": "TICKET_BFM 過去一分鐘內錯誤發生次數超過20,請關注" } } } }'

    当然actions里面还支持模板,比如

    "actions": {
            "send_email": {
                "email": {
                    "to": "xxx@xxx.com",
                    "subject": "TICKET_BFM 過去一分鐘內錯誤發生{{ctx.payload.hits.total}}次數超過20,請關注",
                    "body": "TICKET_BFM:{{ctx.watch_id}}  過去一分鐘內錯誤發生{{ctx.payload.hits.total}}次數超過20,請關注 Happened at {{ctx.execution_time}}"
                }
            }
        }

    从api的content我們可以看出,內容主要主体分成trigger(触发设置),input(来源设置),condition(条件),actions(触发动作设置)

    这里我们设置触发间隔时间为1m,来源是monitor_ticket_bargainfindermaxrq_201610索引块,查询条件是collectionName字段值是BargainFinderMaxRQ,以及时间范围是过去1分钟到现在,然后触发条件是当数量大于20,动作设置的是发邮件

    Action类型其实有4种,EMail(邮件),Webhook(第三方对接),Index(索引),Logging(日志记录),相关配置可以参考下官方文档

    如果配置了发送邮件,那么需要在es的yml文件配置下邮件发送服务器

    我这里设置的是公司的服务器

    watcher.actions.email.service.account:
      work:
        profile: standard
        email_defaults:
          from: '<yourname>@xx.com'
        smtp:
          auth: true
          starttls.enable: true
          host: smtp.xx.com
          port: 25
          user: yourname@xx.com
          password: password

    注:设置之后重启下es服务器

    三、删除预警任务

    有时候我们不在使用某项预警服务的时候,我们可以删除他

    curl -XDELETE 'http://localhost:9200/_watcher/watch/log_error_watch'
  • 相关阅读:
    boost::asio在VS2008下的编译错误
    Java集合框架——接口
    ACM POJ 3981 字符串替换(简单题)
    ACM HDU 1042 N!(高精度计算阶乘)
    OneTwoThree (Uva)
    ACM POJ 3979 分数加减法(水题)
    ACM HDU 4004 The Frog's Games(2011ACM大连赛区第四题)
    Hexadecimal View (2011ACM亚洲大连赛区现场赛D题)
    ACM HDU 4002 Find the maximum(2011年大连赛区网络赛第二题)
    ACM HDU 4001 To Miss Our Children Time (2011ACM大连赛区网络赛)
  • 原文地址:https://www.cnblogs.com/dafanshu/p/5980553.html
Copyright © 2011-2022 走看看