写点什么

在 Open Distro for Elasticsearch 中设置警报

  • 2019-10-04
  • 本文字数:2605 字

    阅读完需:约 9 分钟

在 Open Distro for Elasticsearch 中设置警报

Elasticsearch 的主要用例之一是日志分析:您从基础设施收集日志,将每个日志行转换为 JSON 文档,并将这些文档发送到 Elasticsearch 的 _bulk API。转换后的日志行包含许多字段,每个字段都包含多个值。例如,Apache Web 日志行具有一个源 IP 地址字段、一个请求 URL 字段和一个状态代码字段(还有其他各种字段)。当您使用 Elasticsearch 执行日志分析时,可以使用 Kibana 的可视化功能来将这些字段中的值绘制成图形,或直接查询它们。一种常见用例是构建仪表板来监视您的基础设施。例如,您可以将 HTTP 5xx 状态代码的计数绘制成图形,观察图形并对其中的变化做出反应。如果您看到 5xx 代码数量出现突增,则可能是您的某个服务器出现了问题。


当然,直接监视 Kibana 属于手动流程。Open Distro for Elasticsearch 的警报插件允许您自动监视 Elasticsearch 索引中的数据。您可以使用带有由您设置的触发器(即触发条件,用于指明监视器应在何时发送警报)的监视器(即事先安排的作业)。警报是指在满足触发条件时发出的通知。触发器触发时,监视器将执行特定操作(向目标发送消息)。


本文使用模拟的物联网 Device Farm 生成数据并将数据发送到 Open Distro for Elasticsearch。设备上配有传感器,可以模拟不同的浮点值模式。我们将使用 MonotonicSensor,它的值会不断增加,以强行突破我将设置的警报阈值。如果您有意一边阅读一边操作,可以在 GitHub 上下载模拟器(恳请您为此项目献言献策! 我很高兴制作出这个基本的代码库,让大家以此为起点去取得进展)。

模拟器概览

传感器

模拟器的核心类是 Sensor 类。Sensor 类具有 report 方法。调用此方法时,它会更新并返回传感器的对应值。Sensor 有多个子类:


  • SineSensor:根据当前时间戳生成正弦波。

  • ConstSensor:生成常量值。该类包括一个随机的“模糊”因子,可以在特定值附近偏移。

  • DriftingSensor:允许在起始值的基础上连续、随机地偏移

  • MonotonicSensor:通过随机模糊以恒定增量增加其值。

  • 所有传感器都有一个值名称、一个值和一个 UUID。report 函数包括时间戳、值名称、传感器的 UUID 和传感器的值。

设备

在本文中,我将创建一组设备,用以模拟现场的 IoT 设备,测量温度和湿度,并发送设备的 CPU。设备是一组传感器的集合。它们具有一个 report 方法,可递归调用所有传感器的 report 方法,并返回传感器报告的集合。


我将某个设备的 CPU 传感器设置为不断向上偏移,来模拟设备中的问题。您可以在以下折线图中看到预期的“不良行为”:



在接下来的部分中,我们将设置在 CPU 利用率达到 90% 时触发警报。

设置目标

在 Open Distro for Elasticsearch 中创建警报时,可以创建一个或多个监视器以及一个或多个目标。您可以使用 Slack 频道或 Amazon Chime 作为目标。也可以设置一个自定义 webhook (URL) 来接收消息。如果您选择自定义 webhook,那么需要设置好标题和消息正文,该插件会通过 POST 操作将消息发送到目标 URL。


我使用 Slack 从我的 Open Distro for Elasticsearch 集群接收警报(如果您更喜欢 Chime,还可以参阅 Chime 文档,以查看有关如何创建聊天室并获取其 webhook URL 的说明)。


注意:您应该在创建监视器之前设置目标。


本文假设您已部署 Open Distro for Elasticsearch,其中的数据构成了监视器和警报的基础。(若尚未部署,请参阅 Get Up and Running with Open Distro for Elasticsearch。) 在浏览器中打开 Kibana,然后单击 Alerting 选项卡。在窗口顶部,单击 Destinations,然后单击 Add Destination。



在 Add Destination 对话框中,为您的目标指定一个 Name、选择目标的 Type,并设置 Webhook URL。单击 Create。您可以根据需要设置多个目标,以便向所有相关方分发警报。


设置监视器

Open Distro for Elasticsearch 中的监视器支持指定要监视的值。您可以通过图形方式或通过指定 Elasticsearch 查询来选择值。首先定义监视器,然后为要监视的值定义触发器。


单击 Monitors 选项卡,随后单击 Create Monitor。



为您的监视器指定一个 Name。我将监视器命名为 Device CPUs。您可以将频率设置为某个预定义的时间间隔,或使用 cron 表达式进行更精细的控制。我选择的是“Every 1 minute”。



在页面的 Define Monitor 部分中,指定要监视的值。我已选择 logs- * index,并监视“CPU”字段的最大值。这还没有创建触发器,我们将在下一步中执行创建操作。



单击“Create”。这将打开 Define Trigger 页面。

创建触发器

创建触发器时,可以为要监视的字段指定阈值。当该字段的值超过阈值时,监视器会进入 Active 状态。我创建了一个名为“CPU Too High”的触发器,阈值为 90,严重性级别为 1。



设置触发器后,可以设置警报插件要执行的操作。


向下滚动该页面以添加操作。我添加了一项操作,用于向我的 Slack 目标发送消息,包括监视器名称、触发器、严重性以及警报激活的时间段。您可以使用 Mustache 模板为您将收到的消息创建模板。


向下滚动并单击页面底部的 Create:



##结果


当您返回 Alerting Dashboard 时,您将看到警报处于“Enabled”状态。警报可以处于各种不同的状态。“Enabled”表示监视器查询成功,并且未触发该触发器。其中还有一个有用的时间线显示,显示您的监视器的警报历史记录:



为了使警报达到“Active”状态,我发送了某台 CPU 使用率从 50% 上升到 100% 的故障设备的模拟传感器数据。在这个数值达到 90% 时,我在 Chime 中收到以下消息:



Open Distro for Elasticsearch 的警报插件可让您监视日志文件中的关键数据,以便在问题初现端倪时快速响应。通过识别 KPI、设置阈值并向第一应急响应者发放警报,您可以缩短关键问题的响应时间。


有问题或疑问? 希望参与讨论? 您可以在我们的论坛上获得帮助并讨论 Open Distro for Elasticsearch。您可以在这里提出问题。


作者介绍:


Jon Handler


Jon Handler (@_searchgeek) 是总部位于加利福尼亚州帕罗奥图市的 Amazon Web Services 的首席解决方案架构师。Jon 与 CloudSearch 和 Elasticsearch 团队密切合作,为想要将搜索工作负载迁移到 AWS 云的广大客户提供帮助和指导。在加入 AWS 之前,Jon 作为一名软件开发人员,曾为某个大型电子商务搜索引擎编写代码长达四年。Jon 拥有宾夕法尼亚大学的文学学士学位,以及西北大学计算机科学和人工智能理学硕士和博士学位。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/iot-alerting-open-distro-for-elasticsearch/


2019-10-04 21:25849
用户头像

发布了 1852 篇内容, 共 119.7 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

nodejs实现jwt

coder2028

node.js

亚中医疗——数据驱动预算管理升级,引领业务发展

元年技术洞察

数据驱动

分享一招应对BOM表的检查方法,摆脱被BOM支配的“恐惧”

华秋PCB

检查 PCB PCB设计

ONES 出席产业互联高峰论坛,分享金融企业研发管理实践

万事ONES

Python进阶(三十七)Windows7使用nginx+apache部署django项目

No Silver Bullet

Python Apache nginx django 11月月更

元年科技:在数字化浪潮中,为企业建造一艘“方舟”

元年技术洞察

微服务 云原生 容器化 方舟企业数字化 PaaS 平台

MASA MAUI Plugin (六)集成个推,实现本地消息推送[Android] 篇

MASA技术团队

blazor MASA MAUI Xamarin MASA Blazor

java Apache poi 对word doc文件进行读写操作

@下一站

编程 原创 word Java core 11月月更

大数据培训学习的时候有什么方法吗

小谷哥

聚焦“教-学-评-测-练-管一体化”,推动新型人才培养!

华为云开发者联盟

云计算 后端 华为云

【Go电商实战05】结合项目解答使用Go中间件遇到的问题:中间件的概念和应用

王中阳Go

golang 学习方法 中间件 11月月更 电商实战

大咖说·先临三维|高精度3D视觉技术商业应用与实践

大咖说

科技 高精度3D视觉

JavaScript刷LeetCode拿offer-js版字典

Geek_07a724

JavaScript LeetCode

js异步编程的三种模式

hellocoder2029

JavaScript

直播CDN调度技术关键挑战与架构设计

京东科技开发者

架构 系统架构 直播 CDN加速 CDN技术

前端leetcde算法面试套路之二叉树

js2030code

JavaScript LeetCode

零基础学习大数据培训难吗?

小谷哥

Nftea: 世界杯文化、 NFT与 期权的首度碰撞

股市老人

js对象和原型、原型链的关系

hellocoder2029

JavaScript

挖到宝了!2022阿里大佬手写“精品”Sping Boot学习笔记

小小怪下士

Java 程序员 阿里 springboot

还在为数据库事务一致性检测而苦恼?让Elle帮帮你,以TDSQL为例我们测测 | DB·洞见#7

腾讯云数据库

数据库 腾讯云 数据一致性 tdsql 腾讯云数据库

彻底搞懂nodejs事件循环

coder2028

node.js

一文读懂NodeJs知识体系和原理浅析

coder2028

node.js

js函数式编程讲解

hellocoder2029

JavaScript

JavaScript刷LeetCode拿offer-二叉树层序遍历篇

Geek_07a724

JavaScript LeetCode

[力扣] 剑指 Offer 第一天 - 用两个栈实现队列

陈明勇

Go 数据结构与算法 力扣 11月月更

Python进阶(三十八)利用matplotlib 进行折线图,直方图和饼图的绘制

No Silver Bullet

Python matplotlib 11月月更

JavaScript刷LeetCode拿offer-树的遍历

js2030code

JavaScript LeetCode

Python进阶(三十九)使用matplotlib进行绘图分析数据

No Silver Bullet

Python 绘图 matplotlib 11月月更

用javascript分类刷leetcode3.动态规划(图文视频讲解)

js2030code

JavaScript LeetCode

在 Open Distro for Elasticsearch 中设置警报_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章