【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

波场链智能合约系统定制开发

Spring 源码学习 09:refresh 大概流程

程序员小航

spring 源码 源码阅读

差点跳起来了!全靠这份“Java核心知识笔记”我成功拿到美团offer

比伯

Java 程序员 架构 计算机 编写

为什么现代系统需要一个新的编程模型?

华为云开发者联盟

编程 模型 语言

iOS面试基础知识 (四)

iOSer

ios 面试 底层知识

软件测试之登录测试详解

测试人生路

软件测试

成为分布式系统架构师,都要学哪些东西?该怎么学?

四猿外

Java 程序员 分布式 分布式系统 架构师

模糊匹配、相似度查询怎么破?看PG亿级检索毫秒响应

PostgreSQLChina

数据库 postgresql 开源

养猫了!

小林coding

生活

编写令人愉悦的API接口(一)

Geek_42915f

Java 程序设计 API APi设计

数字货币交易所系统开发功能方案

OTC场外交易系统开发软件定制

堪称完美!阿里架构师用60个实战案例讲明白了Spring Boot

Java架构追梦

Java 架构 面试 微服务 springboot

快递员出售用户信息被判刑:如何防止快递行业信息泄露

石头IT视角

合约跟单系统开发软件定制

2020中国 .NET开发者大会精彩回顾:葡萄城高性能表格技术解读

葡萄城技术团队

GCExcel 中国 .NET开发者大会 表格技术

四币连发交易所系统开发技术

OLAP计算引擎怎么选?

数据社

OLAP 七日更

学习笔记丨数据结构之二叉查找树

Liuchengz.

数据结构 C/C++ 数据结构与算法 高级数据结构

惊艳!阿里自爆用480页讲清楚了44种微服务架构设计模式

996小迁

程序员 面试 微服务 设计模式 架构设计

数字货币交易所交易平台系统开发

AWS云上安全最佳实践

雪雷

安全 AWS 云安全

一场由fork引发的超时,让我们重新探讨了Redis的抖动问题

华为云开发者联盟

redis fork 时延抖动

用了这个评估优化LiteOS镜像利器,我有点飘...

华为云开发者联盟

镜像 开发 环境配置

突破程序员基本功的16课

田维常

程序员

dForce挖矿APP系统开发|dForce挖矿软件开发

系统开发

提升awk技能的两个教程【译】

程序员架构进阶

Linux Shell awk

研发团队如何实现无缝协作?

万事ONES

研发管理 团队协作 研发效能 研发工具

区块链矿机系统开发现成案例

我敢说这是全网最详细的基础讲解,附源码实例,没人学不明白

小Q

Java 学习 架构 面试 基础

震闻:2021年 微服务 即将被这个取代了!!

Java架构师迁哥

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