QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

在 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:25862
用户头像

发布了 1855 篇内容, 共 122.7 次阅读, 收获喜欢 79 次。

关注

评论

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

加速数据要素价值释放,用友打造高性能时序数据库

用友BIP

数据分析

从智能合约到机器学习:NFT 与 AI 技术的结合

NFT Research

大数据 AI NFT

Paragon NTFS2023磁盘读写工具

茶色酒

Paragon NTFS Paragon NTFS16

几个常见的js手写题,你能写出来几道

helloworld1024fd

JavaScript 前端

美团面试全流程详解:一面 + 二面

Java你猿哥

ssm Java 面试 面经 java

4万字,阿里云《大型体育赛事云上实战精选》电子书发布!

阿里云CloudImagine

云计算 视频云

字节前端二面react面试题(边面边更)

beifeng1996

前端 React

算力网络智能选路新向导

鲸品堂

算力 电信运营商 算力网络 企业号 3 月 PK 榜

Visual ChatGPT:跟聊天机器人一起绘画

Zilliz

计算机视觉 ChatGPT

好家伙!阿里最新版高并发系统设计涵盖了“三高”所有骚操作

Java你猿哥

java面试 面经 春招 java 八股文

chatgpt 集成飞书实践指南

车江毅

聊天机器人 飞书 java ChatGPT

new Vue的时候到底做了什么

bb_xiaxia1998

Vue 前端

​在行 | AI赋能,为行业发展创造全新可能

用友BIP

为什么00后都不知道什么是报销?

用友BIP

差旅报销

软件测试/测试开发 | 电商业务的性能测试(一): 必备基础知识

测试人

软件测试 自动化测试 测试开发

校招前端二面经典react面试题及答案

beifeng1996

前端 React

问:React的useState和setState到底是同步还是异步呢?

beifeng1996

React

一文带你深度探析:软硬科技协同创新正当时

加入高科技仿生人

人工智能 科技 科技创新 ChatGPT

两会共议北斗发展,华大北斗芯片领衔

江湖老铁

架构训练营模块七作业

gigifrog

架构训练营

Studio One6免费电脑版编曲软件下载

茶色酒

Studio One6

精心整理SpringBoot学习笔记,从Web入门到系统架构

Java你猿哥

Java 面试 面经 校招 春招 java

企业数字化转型的核心——工作流

力软低代码开发平台

出道即封神的ChatGPT,现在怎么样了?

引迈信息

人工智能 低代码 ChatGPT

滴滴前端一面常考vue面试题(持续更新中)

bb_xiaxia1998

Vue 前端

滴滴前端高频vue面试题(边面边更)

bb_xiaxia1998

Vue 前端

什么大模型?我是时尚产业“大模王”!

白洞计划

AI AI制衣

一场HttpClient调用未关闭流引发的问题

石臻臻的杂货铺

HttpClient

问:你是如何进行react状态管理方案选择的?

beifeng1996

前端 React

常见的ftp文件传输工具有哪些?推荐最佳ftp文件传输工具

镭速

vue为什么v-for的优先级比v-if的高?

bb_xiaxia1998

Vue 前端

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