50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

Go 程序编译过程(基于Go1.21)

-Hedon🍭

Go 编译原理 Go 面试题 面经 后端 大厂 Go编译过程

纯CSS实现炫酷背景霓虹灯文字效果

南城FE

CSS 前端 动画 交互设计

JVM C1、C2编译器

FunTester

重磅签约!美团携手用友推进数智化升级

用友BIP

企业数智化

大模型技术的发展与实践 主赛道:技术人的 2023 总结

芯动大师

大模型 ChatGPT LLM

05 | 数组:为什么很多编程语言中数组都从0开始编号

鲁米

07 | 链表(下):如何轻松写出正确的链表代码?

鲁米

Amazon CodeWhisperer 正式发布可免费供个人使用

亚马逊云科技 (Amazon Web Services)

人工智能 Amazon Lambda 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

2024深圳电子展,加快粤港澳电子信息发展,重点打造湾区经济

AIOTE智博会

电子展 深圳电子展 电子信息展 电博会

What's new in Pika v3.5.2

apache/dubbo-go

redis 底层原理 Redis 7 Pika

DevOps|研发提效-敏捷开发之每日站立会

laofo

DevOps Scrum 敏捷开发 研发效能 每日站会

CnosDB 科技春晚暨CnosDB 2.4.0 Milky Way发布会

CnosDB

开源 时序数据库 CnosDB CnosDB2.4.0发布会

用友与厦国会联合培训,探索智能会计时代业财融合成功模式

用友BIP

智能会计

GPU深度学习性能的三驾马车:Tensor Core、内存带宽与内存层次结构

Baihai IDP

人工智能 程序员 AI gpu LLM

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

华为云开发者联盟

鸿蒙 操作系统 华为云 HarmonyOS 华为云开发者联盟

架构实战营模块 2 作业

陈斌

架构实战营

06 | 链表(上):如何实现LRU缓存淘汰算法

鲁米

三层开发

Geek_8da502

APP开发

喜讯!华秋荣获2023中国产业数字化百强榜企业

华秋电子

服务器集群技术有哪几种类型

Geek_f19a80

服务器

京东面试:说说Cookie、Session和Token的区别?

王磊

Java 面试

SQL 日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法

小万哥

MySQL 数据库 程序员 sql 后端开发

拼版不合理案例详解

华秋电子

走进厦航,体验智能会计时代的业财融合

用友BIP

智能会计 业财融合

Tomcat 配合虚拟线程,一种新的编程体验

越长大越悲伤

Java springboot 虚拟线程

细说GaussDB(DWS)的2种查询优化技术

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

mybatis-plus代码生成器

智慧源点

Mybatis Plus 代码生成器

CnosDB FDW:打通一扇通往PostgreSQL世界的大门

CnosDB

开源 时序数据库 CnosDB

时间序列数据压缩算法简述

CnosDB

开源 时序数据库 CnosDB

如何从 Jira 成功迁移到极狐GitLab,看这个就够了!

极狐GitLab

项目管理 DevOps gitlab 敏捷开发

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