写点什么

使用 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:391102
用户头像

发布了 1947 篇内容, 共 164.4 次阅读, 收获喜欢 81 次。

关注

评论

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

【活动回顾】Apps Everywhere 上海站圆满结束

亚马逊云科技 (Amazon Web Services)

人工智能 机器学习

如何用科学的方法“撞大运”? | 学点运气

赵新龙

CTO 创新 与运气竞争

C++---类型萃取---std::remove_cv/std::remove_cv

桑榆

C++ STL 11月月更

react源码分析:深度理解React.Context

flyzz177

React

【web 开发基础】PHP中的伪类型参数的函数 (31)

迷彩

函数 web开发基础 11月月更 伪类型参数函数 伪类型

Zebec流支付生态,开启多链布局的“两手准备”

股市老人

2022年第三季度泛出行行业洞察:泛出行行业正在经历数智化升级的关键时期,用户规模保持平稳增长,行业整体良性发展

易观分析

数智化 泛出行

《算法》世界二

初学者

算法 网络 11月月更

使用keytool生成Tomcat证书

源字节1号

HarmonyOS 3重磅版本更新,Mate Xs 2等更多设备支持超级中转站!

极客天地

【web 开发基础】PHP 中的默认(缺省)参数的函数 (33)

迷彩

缺省参数 函数 web开发基础 11月月更 默认参数

Kafka SASL 用户认证机制

spacerrobot

kafka 认证授权 SASL SCRAM JAAS

自动化测试成熟度模型

老张

DevOps 自动化测试

react源码分析:组件的创建和更新

flyzz177

React

【web 开发基础】PHP中的引用参数的函数 (32)

迷彩

web开发基础 11月月更 引用传递 引用参数函数 值传递

软件测试之 Contract Testing

QE_LAB

契约测试 测试技术

微信小程序开发在全局配置和资源加载优化在获取接口上的节点信息实战

恒山其若陋兮

前端 11月月更

深入React源码揭开渲染更新流程的面纱

goClient1992

React

如何给 Fiori Elements 应用添加自定义按钮

汪子熙

前端开发 web开发 Fiori SAP UI5 11月月更

【个人成长】《代码的艺术》视频分享合集

非晓为骁

职业规划 开发 软件工程能力 代码的艺术

基于OpenHarmony的ArkUI框架进阶对于高性能容器类和持久化和原子化的运用

恒山其若陋兮

前端 11月月更

K8S环境的Jenkin性能问题处理续篇(任务Pod设置)

程序员欣宸

Kubernetes jenkins 11月月更

带你实现react源码的核心功能

goClient1992

React

react的useState源码分析

flyzz177

React

《算法》世界一

初学者

算法 网络 11月月更

API关键技术-日志审计技术

阿泽🧸

日志审计 11月月更

Jan Ozer:高清直播互动场景下的硬编码如何选型?

声网

人工智能 编码 视频

架构实战营模块 6 作业

陌生流云

架构实战营

对于基于鸿蒙系统的应用支持多语言Arkui框架的线性容器类和PieChart的研究实战

恒山其若陋兮

前端 11月月更

手写一个react,看透react运行机制

goClient1992

React

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