最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

在 Amazon Elasticsearch Service 中设置警报

  • 2019-09-18
  • 本文字数:3990 字

    阅读完需:约 13 分钟

在 Amazon Elasticsearch Service 中设置警报

客户经常使用 Amazon Elasticsearch Service 进行日志分析。Amazon ES 允许您从基础设施收集日志,将每个日志行转换为 JSON 文档,并将这些文档发送到批量处理 BULK API。转换后的日志行包含许多 字段,每个字段都包含多个 值。例如,Apache Web 日志每行包含一个源 IP 地址字段、一个请求 URL 字段和一个状态代码字段(还有其他各种字段)。许多用户使用 Kibana 构建控制面板,直观监控其基础设施,显示应用程序使用情况、错误数或安全问题,这些问题从这些字段中的数据显而易见。例如,您可以将 HTTP 5xx 状态代码的计数绘制成图形,观察变化并对其做出反应。如果您看到 5xx 代码数量出现突增,则可能是您的某个服务器出现了问题。但是使用此系统,您必须手动监控 Kibana。4 月 8 日,Amazon ES 推出了事件监控和警报支持。要使用此功能,您可以使用带有 触发器(即您设置的特定触发条件,指示监视器何时发送警报)的 监控 Monitor(即事先安排的作业)。 警报是发生触发条件的通知。触发器触发时,监控 Monitor 将执行特定 操作(向 目标发送消息)。本文使用模拟的物联网 Device Farm 生成数据并将数据发送到 Amazon ES。

模拟器概览

该模拟包括几个重要部分:传感器和设备。

传感器

模拟器的核心类是 Sensor 类。设备上配有传感器,可以模拟不同的浮点值模式。调用每个传感器的 report 方法时,它会更新并返回其传感器的对应值。Sensor 有多个子类:


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

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

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

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

  • 在本文中,我使用了 MonotonicSensor,它的值会不断增加,以强行突破我设置的警报阈值。


您可以通过通用唯一标识符 (UUID) 和它跟踪的指标的标签来确认传感器。Sensor 类的 report 函数会返回时间戳、传感器的 UUID、指标标签以及该时刻的指标值。

设备

设备是一组传感器的集合。在本文中,我创建了一组设备,用以模拟现场的 IoT 设备,测量温度和湿度,并发送设备的 CPU 信息。每个设备具有一个 report 方法,可递归调用所有传感器的 report 方法,并返回传感器报告的集合。我在 GitHub 上的 Open Distro for Elasticsearch 示例代码存储库中提供了代码。


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



在接下来的部分中,我设置了一个 CPU 使用率达到 90% 时触发的警报,以便我可以捕获并纠正这种情况。

先决条件

要继续使用此解决方案,您需要一个 AWS 账户。设置您自己的 Amazon ES 域,以构成配置监控和警报的基础。

第 1 步:设置目标

在 Amazon ES 中创建警报时,您可以分配一个或多个目标。目标是分发频道,您的域会在警报触发时发送通知。您可以使用 Amazon SNS、Slack 频道或 Amazon Chime 作为目标。也可以设置一个自定义 webhook (URL) 来接收消息。您可以设置标题和邮件正文,Amazon ES Alerts 会将邮件发布到目标 URL。


在此示例中,我使用 SNS 接收来自 Amazon ES 域的警报,但 Amazon ES 提供了许多用于设置主题和订阅的选项。我创建了主题以接收通知并订阅电子邮件分发主题。您的 SNS 主题可以有许多订阅,支持通过 HTTP/S 终端节点、电子邮件、Amazon SQS、AWS Lambda 和 SMS 分发。


要设置目标,请导航至 AWS 管理控制台。登录并打开 SNS 控制台。


选择主题、创建主题。



在创建主题页面中,填写名称和显示名称的值。我将两者都设置为 sensor-alerting。选择创建主题。


现在订阅您的主题。您可以从主题页面执行此操作,因为在您创建完主题后,控制台会自动将您返回此页面。您也可以通过左侧导航窗格中的订阅选项卡来订阅。从主题页面中,选择创建订阅。


在创建订阅页面上,为协议部分选择电子邮件。在终端节点框中填写您的电子邮件地址,然后选择创建订阅。请记下此处的主题 ARN,您稍后会再次引用它。



最后,通过单击 SNS 发送给您的电子邮件中的确认链接来确认您的订阅。

第 2 步:设置角色

要让 Amazon ES 向您的主题发布警报,请创建具有相应权限的 IAM 角色。在开始之前,请从第 1 步中的 SNS 主题页面复制主题 ARN。


您的角色包含两部分:可信实体和承担该角色的实体的权限。控制台不支持使用 Amazon ES 作为可信实体创建角色。使用 EC2 作为可信实体创建角色,然后编辑 JSON 信任文档以更改实体。


在 AWS 管理控制台中,打开 IAM 控制台并依次选择角色、创建角色。


在创建角色页面上,选择 AWS 服务和 EC2。选择下一步: 权限。



在权限页面上,选择创建策略。此操作会将您带到创建策略的新窗口。不要关闭原来的选项卡,因为您稍后会返回该窗口。


您在此步骤创建的策略会定义承担该角色的实体的权限。添加策略文档,允许各种实体(在本例中为 Amazon ES)发布到您的 SNS 主题。


在创建策略页面上,选择 JSON 选项卡,并复制粘贴以下代码来替换 JSON 文本。将代码中的 sns-topic-arn 替换为您之前创建的主题的 ARN。完成此操作后,选择查看策略。



{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "sns:Publish","Resource": "sns-topic-arn"}]}
复制代码


在查看策略页面上,为您的策略命名。在此示例中,我设置为 SensorAlertingPolicy。选择创建策略。


返回创建角色窗口或选项卡。使用刷新按钮重新加载策略,并在搜索框中键入策略的名称。选中策略旁边的复选框。依次选择下一步: 标签和下一步: 查看。您还可以添加标签,以便更轻松地搜索您的角色。


在“查看”页面上,为您的角色命名。在此示例中,我使用了 SensorAlertingRole。选择创建角色。


要将角色的可信实体更改为 Amazon ES,请在 IAM 控制台中选择角色。在搜索框中键入 SensorAlertingRole,然后选择链接(而不是复选框)以查看该角色。依次选择信任关系和编辑信任关系。



编辑策略文档代码,使用 es.amazonaws.com 替换 ec2.amazonaws.com。完成后的策略文档应类似于以下代码示例:



{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "es.amazonaws.com"},"Action": "sts:AssumeRole"}]}

复制代码


选择更新信任策略。记下您的角色 ARN,因为您会再次引用它。

第 3 步:设置 Amazon ES 警报

我将我的 IoT 传感器模拟器指向我的 Amazon ES 域。这会创建作为监视器和警报基础的数据。要亲自执行此操作,请在浏览器中导航到 Kibana 终端节点,然后在左侧导航窗格中选择警报。在窗口顶部,依次选择目标和添加目标。


在添加目标对话框中,为目标命名。在类型部分,选择 SNS,并将 SNS 主题 ARN 设置为您在第 1 步中创建的主题 ARN。将 IAM 角色 ARN 设置为您在第 2 步中创建的角色 ARN。选择创建。您可以根据需要设置多个目标,以便在出现问题时提醒多个人。

第 4 步:设置监控

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


在 Kibana 中,依次选择监控和创建监控。



为您的监控命名。我将监控命名为 Device CPUs。您可以将频率设置为某个预定义的时间间隔,或使用 cron 表达式进行更精细的控制。我选择的是每隔 1 分钟。



滚动到页面的定义监控部分。使用此组控件指定要监控的值。您可以为一个索引或多个索引、时间字段输入值并输入目标值。从您想如何定义监控?列表中,选择使用可视图表定义。您还可以输入使用提取查询定义的信息,这允许您提供生成要监控的值的查询。对于简单的阈值,可视界面快速简便。


从列表中选择要监控的索引值。该列表包含单个索引。要使用通配符,您还可以在文本框中键入。对于要注册的值,必须在键入索引名称后按 Enter 键(例如,“logs-*”)。


从列表中选择时间字段的值。这会在图表顶部显示几个选择器。选择 Count() 并打开菜单以查看计算值的汇总。选择 max(),然后在选择字段部分选择 CPU。最后,将 FOR THE LAST 设置为 5 分钟。选择创建。



您可以直观地创建监视器或提供查询以生成要监控的值。


我选择了 logs-* 索引来监控 CPU 字段的最大值,但此操作尚未创建一个触发器。选择创建。这将打开定义触发器页面。

第 5 步:创建触发器

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



设置触发条件后,可以设置 Amazon ES 要执行的操作。


要添加操作,请滚动页面。我添加了一项操作,用于向我的 SNS 主题发送消息,包括监控名称、触发器、严重性以及警报激活的时间段。您可以使用 Mustache 脚本为您收到的消息创建模板。


添加完操作后,请选择页面底部的创建。


总结

当您返回警报控制面板后,您将看到警报处于已完成状态。警报可以处于各种不同的状态。已完成表示监视器成功查询目标,并且未触发该触发器。


为使警报达到活动状态,我发送了某台 CPU 使用率从 50% 上升到 100% 的故障设备的模拟传感器数据。在这个数值达到 90% 时,我收到了以下电子邮件:


小结

在本文中,我演示了如何使用 Amazon ES 警报功能帮助您监控日志文件中的关键数据,以便在问题初现端倪时快速做出反应。通过识别 KPI、设置阈值并向第一应急响应者发出警报,您可以缩短关键问题的响应时间。


如果您有任何问题或反馈,请在下面留言,或在 Twitter 上联系我们!


作者介绍:


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


本文转载自 AWS 博客。


原文链接:


https://aws.amazon.com/blogs/big-data/setting-alerts-in-amazon-elasticsearch-service/


2019-09-18 15:10796
用户头像

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

关注

评论

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

如何判断线程池已经执行完所有任务了?

CRMEB

学生管理系统毕业架构设计

天琪实刚亮

「架构实战营」

昇思MindSpore行至2022,开源社区成就生态共赢

科技热闻

昇思MindSpore行至2022,开源社区成就生态共赢

科技热闻

web前端培训-MySQL的索引下推解析

@零度

MySQL 前端开发

云效流水线 Flow 是什么?为什么选择云效「Flow」

阿里云云效

阿里云 云原生 持续交付 研发 云效流水线 Flow

固定资产管理系统的主要功能和优点

低代码小观

低代码 企业管理 资产管理 企业管理系统 CRM系统

云效持续交付流水线,免费还好用!

阿里云云效

云计算 阿里云 持续集成 持续交付 持续交付流水线

大数据自动管理,24 小时服务无间断,StarRocks 如何做到?

StarRocks

大数据 数据分析 StarRocks

espnet中的transformer和LSTM语言模型对比实验

华为云开发者联盟

nlp Transformer espnet LSTM语言模型 aishell

减少计算、简化架构——TDengine在灌区信息化平台中的应用

TDengine

数据库 tdengine 物联网

不后悔的星期四,明道云首次全网公开直播零代码训练营

明道云

视觉Transformer中的输入可视化方法

百度Geek说

后端

NFT游戏NFT交易系统开发技术

薇電13242772558

NFT

网络编程入门从未如此简单(三):什么是IPv6?漫画式图文,一篇即懂!

JackJiang

网络编程 ipv6 ipv4 即时通讯IM

华为公布终端云最新数据:终端全球月活用户超过7.3亿

叶落便知秋

华为

长治测评机构公司有几家?是正规的吗?

行云管家

网络安全 等保 等保测评

一个服务器轻松存储上亿数据,TDengine 在北京智能建筑边缘存储的应用

TDengine

数据库 tdengine 物联网

TiDB 在携程 | 实时标签处理平台优化实践

PingCAP

学习编程是最好的复利方式

FunTester

FunTester

从 OpenTSDB 到 TDengine,至数物联网平台技术改造之路

TDengine

数据库 tdengine 物联网

大数据培训Flink 源码解析Async IO

@零度

flink 大数据开发

传统数据库改造难?华为云GaussDB“五心”解决

华为云开发者联盟

数据库 数字化转型 GaussDB 云数据库 华为云数据库

100行代码实现HarmonyOS“画图”应用,eTS开发走起!

HarmonyOS开发者

HarmonyOS ETS ArKUI 3.0

生产环境频繁内存溢出,原来就是因为这个“String类”

华为云开发者联盟

jdk JVM 内存 字符串 String类

机器使用成本下降 50%,TDengine 在同程旅行基础监控中的实践

TDengine

数据库 tdengine

星河标杆案例 | 洞见科技与智慧齐鲁「基于隐私计算的省级公共数据开放平台建设」实践

洞见科技

隐私计算 数据流通

一起来DIVE!在基础软件知识海洋遨游,还能赢取万元奖品!

InfoQ写作社区官方

热门活动 DIVE

阿里云智能编码插件,Cosy文档搜索上新了

阿里云云效

阿里云 代码管理 代码库 阿里云智能编码插件 Cosy

得物技术登录组件重构

得物技术

重构 用户增长 增长 组件 用户登录

字节跳动基于 Apache Hudi 的多流拼接实践

字节跳动数据平台

字节跳动 实时数仓 Hudi

在 Amazon Elasticsearch Service 中设置警报_安全_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章