警报是Elastic Stack的一个重要组成部分。你可以使用存储在Elasticsearch中的数据,在满足特定条件时触发警报。警报动作可能涉及发送电子邮件或Slack消息,将数据写入Elasticsearch的索引,调用并传递数据给外部网络服务,等等。
在Elastic Stack中,有两种类型的警报框架。Kibana Alert和Elasticsearch Watcher。Kibana Alert与Kibana中应用程序集成,如Observability、机器学习和Maps。另一方面,Elasticsearch Watcher允许你直接根据索引数据创建警报。
在本文中,我们将讨论Alerts和Watch的基础知识,并提供简单的指导以让您可以为一个用例确定正确的警报类型
在Elastic Stack中,有很多方法可以创建和管理警报。Kibana将Alert与许多应用程序集成,包括Observability、堆栈监控、地图、机器学习和安全。定义警报的最佳方式是在这些应用程序的上下文中进行。例如,如果你对在过去5分钟内的错误数量感兴趣,并期望在超过一个给定的阈值时收到通知,你可以在Kibana的Logs应用程序中启动警报创建。
在日志应用程序的背景下创建的警报规则(conditions和actions)是指来自各个日志相关索引中包含的日志数据。Logs应用程序已经被配置为使用来自这些特定索引的数据,并以统一的方式将其视为日志条目。日志应用希望日志索引符合 Elastic Common Schema,因此希望所有索引中都有某些基本字段,例如@timestamp。
Kibana应用程序不能支撑你的用例,或者当Kibana应用程序不支持从其UI上创建你所需的警报时,你仍然可以使用Kibana中的Rules and Connectors功能创建警报。在这个页面上,你可以创建和管理所有Kibana级别的警报。例如,如果你想在实体
进入地图上定义的地理空间区域时收到通知,例如,城市公交车进入施工区,你可以创建一个电子围栏告警:
当Rules and Connectors中的规则类型都不支持你的用例时,你仍然可以尝试使用Advance Watcher来创建一个警报。Watcher
是索引级别的警报,完全构建在Elasticsearch后端运行。(注意,这与Kibana Alert的不同,Kibana Alert完全由Kibana来提供告警的调度,检查,和运行)尽管它们可以使用Kibana用户界面进行部分定义,但最好使用Dev Tools控制台的特定领域语言(DSL)和_watcher API。当规则条件需要来自高级DSL查询或聚合的结果时,或者当你想对数据进行更进一步的原酸以用于下一步的动作时,你可以使用Watcher。例如,你可以使用Elasticsearch查询和聚合来跟踪复杂的SLA,当SLA达到阈值或任何其他条件被满足时,使用Watcher来通知你。
另一个与Kibana Alert的重要不同是,Watcher也可以用来调度Elasticsearch的任务。两个常见的用途是调度报告的定时生成和发送电子邮件,或运行Elasticsearch任务,如重新索引。
大多数情况下,我们优先选择Kibana Alert,特别是当你需要告警的场景与以下场景之一吻合时,请选择开箱即用的Kibana Alert,会让你事半功倍:
如果你想创建一个不属于Kibana提供的应用级规则的警报规则,而数据级的Stack规则又不能为你的需求提供足够的表达能力,你可以使用Watcher。
Watcher允许你根据你可以在Elasticsearch查询DSL中编写的任何查询和聚合来创建规则。高级表还有其他用途,如报告或进程调度,
Watcher最重要的最佳实践是只有在Kibana Alert不能解决问题的时候才使用它们。因为,Watcher是出了名的难写,因为它们需要有JSON语法、DSL查询和聚合以及Painless脚本的知识。更复杂的是,Watcher不能与Kibana Alert的连接器一起工作。Watcher连接器必须在每个节点的yaml中配置,而不是像我们对Kibana级连接器那样通过Kibana UI配置。此外,并不是每个Kibana级别的连接器都有对应的Watcher。最后,开发Watcher开发任何其他类型的代码是一样的。它必须经过适当的测试,而且必须被管理。特别是,当升级堆栈时,必须对所有的Watcher进行测试,并在必要时进行更新。考虑到所有这些,请尽力先使用Kibana Alert,而不是试图编写一个Watcher规则。
留言与评论(共有 0 条评论) “” |