ES监视器Watcher详解

简介: ES监视器Watcher详解

前言


本文主要给大家介绍ES中的高级特性监视器Watcher的使用。

需要注意的是,ES免费版本中暂不支持该特性。


一、什么是监视器?


通过使用 Watcher 监视数据中的更改或异常,并执行必要的响应操作。


官方文档:Watcher


典型使用场景:


监控社交媒体,作为检测面向用户的自动化系统(如 ATM 或票务系统)故障的另一种方式。 当某个区域的推文和帖子数量超过重要阈值时,通知服务技术人员。

监控您的基础设施,随着时间的推移跟踪磁盘使用情况。 当任何服务器在接下来的几天内可能用完可用空间时,请打开服务台票证。

跟踪网络活动以检测恶意活动,并主动更改防火墙配置以拒绝恶意用户。

监控 Elasticsearch,如果节点离开集群或查询吞吐量超出预期范围,立即通知系统管理员。

跟踪应用程序响应时间,如果页面加载时间超过 SLA 超过 5 分钟,请打开服务台票证。 如果超过 SLA 一个小时,请呼叫值班管理员。

总结:

采用监视器Watcher,你可以监控索引中的数据指标,集群服务器的磁盘使用情况,网络活动情况,ES集群的状态,程序的相应时间等属性,并根据监控到的情况做出相应的动作。


这些场景的特点是,相关数据或数据变化可以通过定期的 Elasticsearch 查询来识别,并可以根据条件检查查询结果。

如果条件为真 — 发送电子邮件、通知第三方系统或存储查询结果,则执行一个或多个操作。


二、监视器是如何工作的?


15.png


1、Schedule 调度计划

用于运行查询和检查条件的调度。


2、Query 查询

作为条件的输入运行的查询。监视器支持完整的 Elasticsearch 查询语言,包括聚合。


3、Condition 条件

决定是否执行动作的条件。 您可以使用简单的条件(始终为真),或者将脚本用于更复杂的场景。


4、Actions 行动

一项或多项操作,例如发送电子邮件、通过 Webhook 将数据推送到 3rd 方系统或索引查询结果。


Watcher执行过程说明:


在监视器Watcher执行上下文中将输入数据作为有效负载加载。这使得数据可用于执行过程中的所有后续步骤。这个步骤由Watcher的输入控制。

计算监视器Watcher条件Condition,以确定是否继续处理Watcher。如果满足条件(计算结果为 true) ,则处理进入下一步。如果不满足(计算结果为 false) ,则停止执行Watcher。

将转换应用于监视有效负载(如果需要)。

当添加满足且Watcher不被限制,则执行Watcher动作。


三、如何创建一个监视器Watcher


1、Trigger

确定何时检查Watcher。 Watcher中必须有触发器。


2、Input

将数据加载到Watcher负载中。 如果未指定输入,则加载空负载。


3、Condition

控制是否执行监视操作Actions。 如果未指定条件,则条件默认为始终。


4、Transform

处理监视负载数据使其为监视操作Actions做好准备。

可以在监视级别定义转换或定义特定于操作的转换。 数字转换是可选配置。


5、Actions

指定满足监视条件时发生的情况。


示例:

说明:创建监听器log_errors,监控索引log-events中出现状态为error的记录数超过5个,则触发Actions操作。

PUT _watcher/watch/log_errors
{
  "metadata" : { 
    "color" : "red"
  },
  "trigger" : { 
    "schedule" : {
      "interval" : "5m"
    }
  },
  "input" : { 
    "search" : {
      "request" : {
        "indices" : "log-events",
        "body" : {
          "size" : 0,
          "query" : { "match" : { "status" : "error" } }
        }
      }
    }
  },
  "condition" : { 
    "compare" : { "ctx.payload.hits.total" : { "gt" : 5 }}
  },
  "transform" : { 
    "search" : {
        "request" : {
          "indices" : "log-events",
          "body" : {
            "query" : { "match" : { "status" : "error" } }
          }
        }
    }
  },
  "actions" : { 
    "my_webhook" : {
      "webhook" : {
        "method" : "POST",
        "host" : "mylisteninghost",
        "port" : 9200,
        "path" : "/{{watch_id}}",
        "body" : "Encountered {{ctx.payload.hits.total}} errors"
      }
    },
    "email_administrator" : {
      "email" : {
        "to" : "sys.admino@host.domain",
        "subject" : "Encountered {{ctx.payload.hits.total}} errors",
        "body" : "Too many error in the system, see attached data",
        "attachments" : {
          "attached_data" : {
            "data" : {
              "format" : "json"
            }
          }
        },
        "priority" : "high"
      }
    }
  }
}


参数说明:

1、Metadata - 可以将可选的静态元数据附加到Watcher。

2、Trigger - 监视器每5分钟触发一次检测。

3、Input - 查询索引log-events中的异常记录,并将查询响应结果加载到watch的负载中。

4、condition-此条件检查是否有超过5个错误事件(在搜索响应中命中)。如果有,则继续执行所有操作。

5、Transform - 如果满足监视条件,则此转换通过使用默认搜索类型 query_then_fetch 搜索错误将所有错误加载到监视负载中。 所有监视操作都可以访问此有效负载。

6、Actions - 这款手表有两个动作。 my_webhook 操作将问题通知第 3 方系统。 email_administrator 操作向系统管理员发送高优先级电子邮件。 包含错误的监视负载附加到电子邮件中。


四、删除监视器


DELETE _watcher/watch/log_error_watch


五、查看监视器执行历史


查看监视器执行历史记录,根据执行时间倒序排序:

GET .watcher-history*/_search
{
  "sort" : [
    { "result.execution_time" : "desc" }
  ]
}


查看监视器执行历史记录,匹配出满足监视器condition条件的记录:


GET .watcher-history*/_search?pretty
{
  "query" : {
    "match" : { "result.condition.met" : true }
  }
}


六、监视器使用限制


为了使用ES中监视器Watcher的特性,必须获取一个包含该特性的证书。


ES各版本特性说明:https://www.elastic.co/subscriptions

ES证书管理:License management


免费开源的版本中是不包含Watcher功能的。

14.png


总结


本文主要对ES监视器Watcher的使用进行了详细介绍。

通过采用监视器Watcher,我们可以监控索引中的数据指标,集群服务器的磁盘使用情况,网络活动情况,ES集群的状态,程序的相应时间等属性,并根据监控到的情况做出相应的动作。

目录
相关文章
|
SQL 存储 监控
深入可观测底层:OpenTelemetry 链路传递核心原理
本文会系统讲解链路传递一些基本概念,同时结合案例讲解链路传递的过程。
3834 1
深入可观测底层:OpenTelemetry 链路传递核心原理
|
6月前
|
JSON Java 应用服务中间件
ELK Stack(ES+Logstash+Kibana)全链路通关指南
ELK Stack(Elasticsearch、Logstash、Kibana)作为开源领域最成熟的日志与数据分析解决方案,凭借其高可扩展性、实时性和易用性,被阿里、腾讯、字节跳动等大厂广泛应用于日志收集、业务检索、运维监控等场景。
902 3
|
9月前
|
机器学习/深度学习 数据采集 编解码
Stable Video Diffusion:将潜在视频扩散模型扩展到大规模数据集——论文阅读
Stable Video Diffusion(SVD)是Stability AI提出的高分辨率视频生成模型,基于潜在扩散框架,通过三阶段训练与严格数据筛选,在文本到视频和图像到视频任务中实现高质量生成。论文系统研究了数据质量对模型性能的影响,提出级联切分检测、运动评分过滤、合成字幕优化等策略,并引入线性递增引导等创新技术,显著提升生成稳定性与视觉保真度。
1721 4
|
云安全 弹性计算 安全
阿里云服务器安全攻略参考:基础防护与云安全产品简介
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题,阿里云服务器除了提供基础的防护之外,我们也可以选择其他的云安全类产品来确保我们云服务器的安全。本文为您介绍阿里云服务器的基础安全防护机制,以及阿里云提供的各类云安全产品,帮助用户全面了解并选择合适的防护手段,为云上业务保驾护航。
1628 11
|
存储 弹性计算 数据管理
阿里云ECS云服务器数据盘分区及挂载到指定目录
阿里云服务器的硬盘一般为两块,一个系统盘,一个数据盘,默认数据盘没有被挂载,所以除了系统和环境软件会安装在系统盘里,网站数据等也在系统盘里,数据盘却空置,没法利用其空间与区分系统和数据管理的好处。这里做下说明,如何让网站数据存储在数据盘?有两个方法1 .
17978 3
Watcher机制(一)
Watcher机制(一)
190 0
Watcher机制(一)
|
监控 数据处理 调度
使用Apache Airflow进行工作流编排:技术详解与实践
【6月更文挑战第5天】Apache Airflow是开源的工作流编排平台,用Python定义复杂数据处理管道,提供直观DAGs、强大调度、丰富插件、易扩展性和实时监控。本文深入介绍Airflow基本概念、特性,阐述安装配置、工作流定义、调度监控的步骤,并通过实践案例展示如何构建数据获取、处理到存储的工作流。Airflow简化了复杂数据任务管理,适应不断发展的数据技术需求。
2988 3
|
搜索推荐 关系型数据库 MySQL
MySQL 模糊查询新纪元:超越 LIKE+% 的高效探索
在数据库的日常操作中,模糊查询是一项不可或缺的功能,它允许我们根据不完全匹配的关键字来检索数据。传统上,MySQL 使用 LIKE 关键字配合 % 通配符来实现这一功能,虽然灵活但性能上往往不尽如人意,尤其是在处理大型数据集时。今天,我们将一起探索几种超越 LIKE+% 的模糊查询技术,以提升查询效率与用户体验。
931 2
|
存储 缓存 自然语言处理
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南
ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南

热门文章

最新文章