写点什么

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

发布了 1968 篇内容, 共 170.0 次阅读, 收获喜欢 84 次。

关注

评论

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

80+产品正通过兼容性测试,OpenHarmony生态落地已初具规模

科技汇

Sidecar 模式的机制与应用

全象云低代码

Kubernetes 容器 低代码 后端技术 Sidecar

OpenHarmony技术日成功举办,全球下载次数高达6300万

科技汇

风险与机遇并存,数据分析厂商如何突围?

ToB行业头条

工程师们看过来|这是我见过的IT圈最“潮”的产品发布会了!

观测云

程序员 可观测性 产品发布会 IT工程师 监测

不知道OpenCLA的注意啦!(OpenCLA签署须知)

Jianmu

开源项目 开源社区 建木CI CLA 贡献者许可协议

列举GaussDB(DWS)常见的查询时索引失效场景

华为云开发者联盟

索引 GaussDB(DWS) 隐式类型转化 GIN索引 analyze

Docker 镜像知多少?

Daocloud 道客

云原生 Docker 镜像

阿里云人工智能创新发布-工业五金图片搜索

视觉智能

拍照购物 以图搜图 图像搜索 拍立淘

OpenHarmony技术日圆满举行 | 3.1 Release版本重磅发布,生态落地初具规模

OpenHarmony开发者

OpenHarmony 技术日

基于Sharding-JDBC的订单分库⽅案

领创集团Advance Intelligence Group

企业如何应对知识管理中的文档管理

小炮

知识管理

免费IT自动化运维平台- ETL调度批量管理工具 TASKCTL 8.0 作业设计功能使用

敏捷调度TASKCTL

数据仓库 数据治理 运维自动化 ETL任务 TASKCTL

网站的FAQ页面应该怎么写?

小炮

FAQ

KPI与360度考核结合的应用落地方案

明道云

使用车载小程序,共建车联网联合共赢生态

Speedoooo

车联网 物联网 智能设备 小程序容器 车载设备

带你认识2种基于深度学习的场景文字检索算法

华为云开发者联盟

深度学习 计算机视觉 文本检测 场景文本检索 文字检索

以南大通用为例,讲一讲如何完成与龙蜥操作系统的兼容验证

OpenAnolis小助手

操作系统 龙蜥社区 南大通用 兼容验证

松灵学院 | Scout mini 仿真指南

松灵机器人

人工智能 机器人 ROS 移动机器人

直播预告|企业云原生 IT 成本治理方案解析

阿里巴巴云原生

阿里云 容器 云原生 cncf 直播预告

有更新!鸿蒙智联生态产品《接入智慧生活App开发指导》(官方版)

HarmonyOS开发者

HarmonyOS 鸿蒙智联

设计千万级学生管理系统的考试试卷存储方案

锎心😌😌😌

区块链赋能不动产—易居EBaaS在不动产领域应用

BSN研习社

区块链

一看即会:Serverless 应用开发的 7 个实战小技巧(文末附好礼)

阿里巴巴云原生

阿里云 Serverless 架构 开发者 云原生

在亚马逊云科技上搭建静态无服务器 Wordpress,每天仅需 0.01 美元

亚马逊云科技 (Amazon Web Services)

Serverless CDN WordPress

一个平面设计师的异想世界

万事ONES

研发管理 设计师 ONES workbalance

如何成为一名亚马逊云科技 Community Builder

亚马逊云科技 (Amazon Web Services)

Cloud 亚马逊云科技 career

智能手表的下半场,机遇与挑战并存

Speedoooo

物联网 小程序容器 智能手表 智能穿戴

MySQL数据库之数据查询

乌龟哥哥

4月月更

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

Liam

测试 Postman 自动化测试 测试工具 测试自动化

智慧运维平台之全息监控

鲸品堂

运维 通信 运营商

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