2

我需要从我的 Zabbix Dashboard 中获取所有触发器。因此,如果有触发器,无论严重程度如何,我都需要得到这个。这是带有一个条目的触发器仪表板的屏幕截图: 单击它以放大它 因此,如果没有活动的触发器,则此列表为空。 在此处输入图像描述

我已经:

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")));

但这会给我带来很多旧的触发器,这些触发器不再活跃了。我真的只需要显示在仪表板上的触发器!

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

INFO:
组 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 个对象。这个对象超过一周。糟糕!

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

4

1 回答 1

1

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

没有“系统状态”之类的东西。如果“系统”是指“主机”。在 zabbix 中,您拥有监控项目的主机。项目不断获得保存到历史记录中的值。接收到的数据通过触发可以引发警报的机制。

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

  • 检查是否有任何代理不可用的主机,仅此而已,安装了zabbix代理的主机和zabbix服务器无法访问代理。为此,您可以在“可用”属性上使用带有过滤器的host.get 。

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

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

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

继续试验,但首先要阅读 zabbix 的工作原理以及概念是什么。该平台的知识将为您节省大量时间,您最好投资于编写代码。

于 2013-12-04T07:45:26.120 回答