写点什么

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

发布了 1834 篇内容, 共 91.5 次阅读, 收获喜欢 73 次。

关注

评论

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

字节跳动端智能工程链路 Pitaya 的架构设计

字节跳动终端技术

机器学习 客户端 端智能 Python. Pitaya

Java即时编译(JIT)原理与调优

柠檬汁Code(binbin0325)

JVM JIT 即时编译

融云超级群的「同城社交平台」应用实践

融云 RongCloud

社交网络

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

计算机魔术师

8月月更

设计模式的艺术 第十六章责任链设计模式练习(提供一个假条审批模块:如果员工请假天数小于3天,主任审批该请假条;如果天数大于或等于3天,小于10天,经理审批;如果天数大于或等于10天,小于30天,总经理审批;如果超过30天,总经理不能审批,提示相应拒绝信息)

代廉洁

设计模式的艺术

如何为开源项目撰写 RFC

Databend

大数据 开源 #开源 databend

面试官:你知道MySQL和Linux操作系统是如何改进LRU算法的吗?

程序员小毕

Java MySQL 程序员 面试 LRU

defi质押挖矿dapp系统开发智能合约部署详解

开发微hkkf5566

基于KubeEdge的边缘节点分组管理设计与实现

华为云开发者联盟

云计算 云原生 后端

使用华为云GaussDB(for Redis)实现二级索引

科技怪咖

华为云发布业界首个《云原生数据库白皮书》 重新定义数据新范式

科技怪咖

设计模式的艺术 第五章工厂方法设计模式练习(设计一个程序来读取各种不同类型的图片格式,针对每种格式都设计一个图片读取器)

代廉洁

设计模式的艺术

中大型现代服务行业的ERP,Telework现代服务中台

sofiya

软件测试 | 测试开发 | 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock

测吧(北京)科技有限公司

Mock

华为云GaussDB(for Redis)揭秘:谁说Redis不能存大key

科技怪咖

MobTech短信验证 Android端快速集成

MobTech袤博科技

android android-studio 短信验证

【Django | 开发】 (国际化项目&支持多语言)

计算机魔术师

8月月更

快手能做好ToB吗?

ToB行业头条

tob 快手

软件测试 | 测试开发 | 常见接口协议解析

测吧(北京)科技有限公司

TCP/IP

前端小白躺平摆烂可以吗

Liam

前端 前端开发 前端面试 Mock 前端入门

官宣!华为云GaussDB两大数据库通过中国信通院多项评测

科技怪咖

【小程序项目开发-- 京东商城】uni-app之商品列表页面 (下)

计算机魔术师

8月月更

Databend SQL Planner 全新设计

Databend

sql 大数据 开源 #开源 databend

软件测试 | 测试开发 | 一文带你了解K8S容器编排(上)

测吧(北京)科技有限公司

k8s

演讲实录|吴亚昆:云时代智能运维与可观测性探索

观测云

长安链源码分析启动(7)

长安链

教育部“产学合作协同育人”项目华为云GaussDB项目入选名单公布

sofiya

4步教你做一个煤气安全提示神器

华为云开发者联盟

云计算 后端 物联网 IoT

华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级

sofiya

数字藏品系统开发:NFT系统开发

开源直播系统源码

数字藏品 数字藏品软件开发 数字藏品源码出售 数字藏品开发

Python如何用类和对象来编程?

和牛

Python 8月月更

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