写点什么

使用 odfe-monitor-cli 来管理您的 Open Distro for Elasticsearch 警报监视器

  • 2019-09-27
  • 本文字数:3505 字

    阅读完需:约 11 分钟

使用 odfe-monitor-cli 来管理您的 Open Distro for Elasticsearch 警报监视器

当您使用 Open Distro for Elasticsearch 警报功能时,您将在 Kibana 中创建监视器。使用 UI 可以非常快速方便地设置监视器,因此也十分容易入门。但如果监控属于集群的重要工作负载,您可能会需要不断创建、更新和调整数百个甚至数千个监视器。使用 Kibana UI 来设置如此多的监视器,将非常耗时,也无比枯燥。幸运的是,警报插件拥有一个 REST API,借助它可以更方便地通过命令行来管理监视器。


如果您还不熟悉 Open Distro for Elasticsearch 的警报功能,请参阅我们以前的一些博文,涉及的内容包括在 Kibana 中设置监视器的基础知识以及根据 Open Distro for Elasticsearch 安全性审计日志发出警报。


借助警报插件的 REST API,您可以对监视器执行 CRUD 和其他操作。odfe-monitor-cli 将此 API 用于自己的请求,但允许您将监视器保存到 YAML 文件中。您可以构建自动化的管道以将监视器部署到您集群,并且可以使用该管道将同样的监视器部署到支持开发、测试和生产的多个集群。您可以在源控制系统中维护您的监视器,以满足共享、版本控制和审核等多种目的。CLI 将从您的集群读取监视器,并将它们与您的 YAML 文件进行比较,从而帮助您防止偏移。


本博文解释了如何通过 odfe-monitor-cli(可从 GitHub 获取,采用 Apache 2.0 许可证),使用 YAML 文件来管理您的监视器。

前提条件

odfe-monitor-cli 目前使用基本的 HTTP 身份验证机制。确保您的集群已经启用了基本身份验证。

安装

odfe-monitor-cli


安装进程是一个命令:


curl -sfL https://raw.githubusercontent.com/mihirsoni/odfe-monitor-cli/master/godownloader.sh | bash -s -- -b /usr/local/bin
复制代码


注意:有关其他安装方法以及如何从源构建的说明,请参阅 odfe-monitor-cli README 文件。


成功安装后,验证它是否工作正常:


$ odfe-monitor-cli此应用程序将帮助您使用 YAML 文件来管理 Opendistro 警报监视器。
Usage: odfe-monitor-cli [command]...
复制代码

创建目标并完成同步

您需要在 Open Distro for Elasticsearch 警报中定义目标,从而指定要将消息发送到哪里(Slack、Chime 或自定义)。odfe-monitor-cli 目前还不支持目标管理功能,因此您需要使用 Kibana UI 来创建目标。


首先导航至 https://localhost:5601 以进入 Kibana。登录后选择警报选项卡。选择目标,然后创建一个目标。



Open Distro for Elasticsearch 的警报定义窗格。设置警报的目标。


在您的计算机上,创建一个新目录 odfe-monitor-cli。此目录将用于放置您创建的监视器以及您从集群同步的任何监视器或目标。


$ mkdir odfe-monitor-cli$ cd odfe-monitor-cli$ odfe-monitor-cli sync --destinations #Sync remote destination
复制代码


该序列中的最后一个命令将会获取所有远程目标,并将它们写入一个新的文件 destinations.yml。该文件将包含一份目标名称和 ID 的映射图。稍后您创建监视器时将会用到该目标名称。如果您使用 cat destinations.yml 来查看该文件,它应会如以下所示:


#destinations.yml file contentsample_destination: _6wzIGsBoP5_pydBFBzc
复制代码


如果您的集群上已经拥有了监视器,并且希望保留这些监视器,您也可以同步这些监视器。否则请跳过此步骤。此命令会获取所有的远程监视器并写入 monitors.yml 文件:


odfe-monitor-cli sync --monitors #Sync existing remote monitors
复制代码


您可以在根目录下添加其他目录并将您的监视器分为多个 YAML 文件,按照您认为适当的任何方式进行组织。当您使用 odfe-monitor-cli 将更改发送到集群时,它会遍历当前目录下的整个目录结构,查找所有的 .yml 文件。使用 --rootDir 选项以更改要遍历的根目录。

创建新监视器

使用文本编辑器创建新文件 error-count-alert.yml。复制以下 yml 并粘贴到该文件,然后将 destinationId 更改为某个现有目标的名称。您可以将您的文件放置在 odfe-monitor-cli 目录内或之下的任何位置。


- name: 'Sample Alerting monitor'  schedule:    period:      interval: 10      unit: MINUTES  enabled: true  inputs:    - search:        indices:          - log* # Change this as per monitor, this is just an example        query: # This block should be valid Elasticsearch query          size: 0          query:            match_all: {              boost: 1.0            }  triggers:    - name: '500'      severity: '2'      condition: | #This is how you can create multiline        // Performs some crude custom scoring and returns true if that score exceeds a certain value        int score = 0;        for (int i = 0; i < ctx.results[0].hits.hits.length; i++) {          // Weighs 500 errors 10 times as heavily as 503 errors          if (ctx.results[0].hits.hits[i]._source.http_status_code == "500") {            score += 10;          } else if (ctx.results[0].hits.hits[i]._source.http_status_code == "503") {            score += 1;          }        }        if (score > 99) {          return true;        } else {          return true;        }      actions:        - name: Sample Action          destinationId: sample_destination #This destination should be available in destinations.yaml file otherwise it will throw an error.          subject: 'There is an error'          message: |            Monitor {{ctx.monitor.name}} just entered an alert state.Please investigate the issue.            - Trigger: {{ctx.trigger.name}}            - Severity: {{ctx.trigger.severity}}            - Period start: {{ctx.periodStart}}            - Period end: {{ctx.periodEnd}}
复制代码


odfe-monitor-cli 提供了一个 diff 命令,它会从您的集群获取监视器并遍历您的本地目录结构,从而显示集群的监视器与您的本地监视器之间的任何差异。您可以使用 diff 命令来验证没有人更改您的集群中的监视器。现在调用 diff 命令以验证它找到了您刚刚创建的新监视器。


$ odfe-monitor-cli diff--------------------------------------------------------- These monitors are currently missing in alerting---------------------------------------------------------name: 'Sample Alerting monitor'type: 'monitor'schedule:...
复制代码


在验证差异后,您可以获取经同事审核或经您的管理层或安全部门批准的任何新监视器或更改的监视器。


您将使用 push 命令以将本地更改发送到您的 Open Distro for Elasticsearch 集群。当您使用 push 命令时,odfe-monitor-cli 会调用 Run Monitor API 来验证您的监视器配置并确保没有错误。如果出现任何错误,odfe-monitor-cli 将会显示该错误及其详细信息。您可以修复这些错误并重新运行 push 命令,直到运行成功,没有出现错误时为止。


默认情况下,push 命令会在空转模式下运行,只是比较差异,检查句法,看是否有任何增加。由于它不会向集群发布任何东西,因此不会发布任何意外的更改。一起准备就绪后,使用 --submit 选项以将您的更改发送到集群:


$ odfe-monitor-cli push --submit


push 命令将执行以下操作:


  • 运行并验证修改后的监视器和新监视器。

  • 在提供 --submit 标志时创建新监视器并更新现有监视器。

  • 警告:使用 --submit 选项推送更改将会覆盖您(通过 Kibana 或任何其他方式)对集群上的现有监视器作出的任何更改。

  • 不会删除任何监视器。使用 --delete 和 --submit 选项将会删除所有未跟踪的监视器。一定要小心! 监视器删除操作无法撤销!

小结

本博文向大家介绍了命令行界面 odfe-monitor-cli,它用于管理 Open Distro for Elasticsearch 集群上的监视器。odfe-monitor-cli 方便您以版本控制方式存储监视器,并将这些监视器部署到您的 Open Distro for Elasticsearch 集群。您可以验证您的监视器是否工作正常,并且可以在不同的环境之间共享监视器。


有问题或疑问? 希望参与讨论? 加入 Open Distro for Elasticsearch 论坛。您可以在这里提出问题。欢迎您参与该项目! 期待能在论坛和代码库中见到各位的佳作!


作者介绍:


Mihir Soni


Mihir Soni (@sonimihir) 是 Amazon Web Services 的一位工程师,常驻华盛顿州西雅图。他的项目以面向 AES 团队的 Kibana 领域为中心。他也是一位忠实的开源拥趸。此外,他一直是 Ubuntu 移动操作系统的核心应用程序的核心贡献者。Mihir 拥有印度 DA-IICT 计算机工程硕士学位。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/open-distro-for-elasticsearch-alerting-monitors-command-line/


2019-09-27 14:391119
用户头像

发布了 1960 篇内容, 共 168.1 次阅读, 收获喜欢 82 次。

关注

评论

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

使用 Python 和 mitmproxy 实现基于队列的路径管理

IT蜗壳-Tango

一种通用的业务监控触发方案设计 | 京东云技术团队

京东科技开发者

京东云 业务监控 企业号 5 月 PK 榜

本周精彩!关于 Linux 内核宕机和超融合 Kata 虚拟化容器技术介绍 | 第 77-78 期

OpenAnolis小助手

开源 云原生 系统运维 龙蜥大讲堂 浪潮

从前后端的角度分析options预检请求

华为云开发者联盟

前端 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

元宇宙链游系统软件开发

Congge420

海量主机自动化运维软件用哪款好?具体功能有哪些?

行云管家

主机 云主机 自动化运维

Java开发实践:合理使用线程池及线程变量

阿里技术

Java 线程池

基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索 | 京东云技术团队

京东科技开发者

开源 京东云 企业号 5 月 PK 榜

限速神器RateLimiter源码解析 | 京东云技术团队

京东科技开发者

限流算法 京东云 企业号 5 月 PK 榜

Midjourney|文心一格prompt教程[基础篇]:注册使用教程、风格设置、参数介绍、隐私模式等

汀丶人工智能

人工智能 深度学习 ChatGPT MidJourney prompt learning

LP流动性质押挖矿系统软件开发

Congge420

生态伙伴 | 硬创大赛新起航!携手华强科创广场,助力硬科技创业者

华秋电子

高效联调,可靠发布!华为云推出CodeArts Release发布管理服务

华为云开发者联盟

云计算 开发工具 华为云 华为云开发者联盟 企业号 5 月 PK 榜

SpringBoot 使用 Sa-Token 完成注解鉴权功能

Java spring Sa-Token

刷Github时发现了一本阿里大神的算法笔记!标星70.5K

Java 数据结构 算法 LeetCode

硬科技,创未来!第十五届深创赛福田预选赛-华秋第九届硬创大赛正式启幕

华秋电子

TOB行业头条专访伙伴云CEO戴志康:GPT带来的AIGC热潮,改造了低代码?

联营汇聚

开箱即用!AI模型库全新发布,一站式在线开发部署!

飞桨PaddlePaddle

模型 飞桨

JMeter笔记6 | JMeter录制(配置代理)

测试 Jmeter 性能测试 自动化测试 接口测试

消息推送平台有没有保证数据不丢?

机器学习服务语音合成,解锁智能养娃新趋势

HarmonyOS SDK

HMS Core

赋能企业数智转型新动力,迈向票据等分化新时代

用友BIP

IPv6定义以及优势说明-行云管家

行云管家

网络 ipv6

MobLink 创建应用

MobTech袤博科技

Python从零到壹丨详解图像锐化Roberts、Prewitt算子实现边缘检测

华为云开发者联盟

人工智能 华为云 图像 华为云开发者联盟 企业号 5 月 PK 榜

包管理工具:pnpm | 京东云技术团队

京东科技开发者

京东云 pnpm 企业号 5 月 PK 榜

【AI思维空间】ChatGPT纵横编程世界,点亮智慧火花 | 京东云技术团队

京东科技开发者

人工智能 京东云 ChatGPT 企业号 5 月 PK 榜

央国企数字化转型 6 大挑战如何应对?中国信通院 IOMM 方法论提 6 点参考对策

信通院IOMM数字化转型团队

数字化转型 IOMM 央国企数字化转型

EhViewer软件2023最新白色版中文语言

ehviewer

EhViewer

使用 odfe-monitor-cli 来管理您的 Open Distro for Elasticsearch 警报监视器_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章