gpt4 book ai didi

java - 如何用zabbix api和java匹配所有触发器

转载 作者:行者123 更新时间:2023-11-30 11:25:14 25 4
gpt4 key购买 nike

我需要从我的 Zabbix 仪表板获取所有触发器。因此,如果有触发器,无论严重程度如何,我都需要得到它。这是带有一个条目的触发器仪表板的屏幕截图: enter image description here 点击放大看
因此,如果没有 Activity 触发器,则此列表为空。

我已经拥有的:

jsonObj.put("method", "trigger.get");
// Priority: 0 = Not classified | 1 = Information | 2 = Warning | 3 =
// Average | 4 = High | 5 = Disaster
jsonObj.put(
"params",
(new JSONObject().put(
"filter",
new JSONObject().put("priority", 1).put("group", "WZU-Server")).put(
"output", "extend")));

但这会返回很多旧的触发器,它们不再处于 Activity 状态。我真的只需要显示在仪表板上的触发器!

我怎样才能做到这一点?我用 zabbix api 几个小时都没有得到它...

信息:
群组ID为7
这个组里有不同的宿主
如果触发器的状态为 OK,则我不需要它。仅当出现问题时。

编辑
我真的很接近我的目标。
我当前的代码如下所示:

int count = 2;
while (count <= 5){
jsonObj.put("jsonrpc", "2.0");
jsonObj.put("method", "trigger.get");
// Value: 0 = OK | 1 = PROBLEM | 2 = UNKNOWN
// Priority: 0 = Not classified | 1 = Information | 2 = Warning | 3 =
// Average | 4 = High | 5 = Disaster

// count = priority. It start with two and end with 5
jsonObj.put("params", (new JSONObject().put("filter", new JSONObject().put("priority", count).put("group", "WZU-Server").put("value", 1)).put("output", "extend")));
jsonObj.put("id", 0);
jsonObj.put("auth", "8ba6b9f29dd68e0c98cdea9ee01f2614");

putMethod.setRequestEntity(new StringRequestEntity(jsonObj.toString(), "application/json", "UTF-8"));
}

此时,我的仪表板是空的。所以我不应该得到这段代码的任何对象。
“警告”为空,所以没关系。
“平均返回 8 个对象。所有对象都超过一周。不好!
“高”是空的,所以还好。
“灾难”返回 1 个对象。这个对象已经超过一周了。不好!<​​/p>

那么我怎样才能实现只获取仪表板的条目呢?

最佳答案

我有一个调用 zabbix API 来检查状态的外部应用程序。

没有“系统状态”这样的东西。如果“系统”是指“主机”。在 zabbix 中,你有 hosts 监控了 items。项目不断获取保存到历史 中的值。收到的数据通过触发器机制,可以引发警报

现在,您提到您在仪表板中看到的可能是主机可用性状态和警报的组合。让我们将您在仪表板中看到的整个画面称为“系统运行状况”。要了解您可能需要的系统健康状况:

  • 检查是否有任何主机的代理不可用,仅此而已,您监控的主机安装了 zabbix 代理并且 zabbix 服务器无法访问代理。为此,您可以使用 host.get对“可用”属性进行筛选。

  • 检查是否有任何警报,仅此而已,如果您使用警报,这是从仪表板获取红色内容的最简单方法。你可以用 alert.get 做到这一点.我从未使用过它,因此请检查您是否需要任何过滤器来获取 Activity 警报。

  • 也许您还可以使用 event.get 检查来自触发器的事件但我也没用过这种方法。

  • 如果您的无代理主机没有系统健康状况警报,对我有用的以及您可能被迫做的是检查特定项目的历史记录。为此,您需要使用 history.get获取值,通常是最后 N 个值或最后 N 分钟的值,您可以在代码中对其进行分析。这种方法可能会将监控和警报目的从 zabbix 转移到您的应用程序,而让 zabbix 服务器仅用于收集数据。

继续试验,但首先阅读 zabbix 的工作原理和概念。该平台的知识将为您节省大量时间,您最好将这些时间投入到编写代码中。

关于java - 如何用zabbix api和java匹配所有触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com