如何通过 REST API 获取 ELK 告警信息

42次阅读
没有评论

问题描述

正在学习使用 ELK(Elasticsearch、Logstash、Kibana)堆栈,并在本地主机上安装了 Kibana 和 Elasticsearch。他已经学会了如何安装 Metricbeat 并设置告警。在设置告警时,他使用了索引连接器,并将索引命名为 testconnector。当他在浏览器中访问 http://localhost:5601/app/observability/alerts 时,可以看到告警信息显示出来。他想知道是否有办法通过 REST API 获取相同的信息,他尝试了一些端点,但都显示 “no handler found for uri”。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以通过 Kibana API 获取告警信息,而不是 Elasticsearch API。首先,你可以使用以下命令获取所有规则的列表:

curl -X GET -k -u elasticuser:elasticpass "http://localhost:5601/api/alerting/rules/_find"

规则列表中还包含每个规则的执行状态,即一些规则是活动的,一些是正常的,一些是已恢复的等等。因此,你可以立即获取与每个规则相关的告警信息。
如果你需要更多详细信息,你可以获取规则的 ID,并使用以下命令获取更多详细信息:

curl -X GET -k -u elasticuser:elasticpass "http://localhost:5601/api/alerting/rule/<rule id>"

你可以在这里找到有关规则和告警管理的所有 API 端点:https://www.elastic.co/guide/en/kibana/current/alerting-apis.html

方案2

请注意以下操作注意版本差异及修改前做好备份。
另一种方法是直接使用 Elasticsearch API 来获取告警信息。你可以使用以下命令来获取告警信息:

curl -X GET -k -u elasticuser:elasticpass "http://localhost:9200/testconnector/_search"

在上面的命令中,testconnector 是你设置的索引名称。这将返回与该索引相关的告警信息。
请注意,根据你的具体设置,可能需要进行身份验证或使用其他参数来获取正确的结果。
以上是获取 ELK 告警信息的两种方法,你可以根据自己的需求选择适合的方法。

正文完