【问题标题】:Can't Update Nor Delete Zabbix Triggers With Zabbix Rest API无法使用 Zabbix Rest API 更新或删除 Zabbix 触发器
【发布时间】:2019-05-09 20:53:03
【问题描述】:

我正在尝试通过它的 API 修改 Zabbix 触发器,但它不允许我使用 API 方法 "trigger.update" 更新触发器,也不允许使用 API 方法 "trigger.delete" 删除触发器。

我已经设法创建、更新和删除主机组、主机和模板,Zabbix API 没有问题,但正如我上面所说,我无法更改触发器,也无法找出原因。

当我尝试使用这些参数删除触发器(以便我可以使用新值重新创建它)时,Zabbix API 向我返回以下错误:

{"jsonrpc":"2.0","method":"trigger.delete","id":1,"auth":"token","params":["XXXX"]}

Cannot delete templated trigger "MyTriggerName:{SomoHostName:ItemName.regexp(^OK)}<>1".

当我尝试使用以下参数更新触发器时,Zabbix API 返回另一个错误:

{"jsonrpc":"2.0","method":"trigger.update","id":1,"auth":"token","params":{"triggerid":"XXX","status":0,"expression":"{TemplateName:ItemName.regexp(^OK)}<>1"}}

error.message: Invalid params.
error.data: Cannot update "expression" for templated trigger "TriggerName".

因此,更新和删除操作的错误消息都抱怨与“模板化触发器”相关的内容。我想全局修改触发器,以便可以将更改应用于所有链接了触发器模板的主机。

有人可以指出 Zabbix 不允许我既不更新也不删除触发器的原因可能是什么?非常感谢。

【问题讨论】:

    标签: c# api zabbix


    【解决方案1】:

    首先,请注意,这不是 REST API,而是 JSON-RPC 的。

    其次,您的问题是您使用的是模板化触发器的触发器 ID,即主机上的触发器 ID 来自模板。如果您尝试在 Zabbix 前端删除此类触发器,您将收到相同的错误消息。

    正如你所说的要在模板上更新,解决方法是使用目标模板上的触发器的触发器ID。

    【讨论】:

    • 只是一个补充,trigger.update 部分返回一个error.message: Invalid params:尤利西斯请检查表达式,你已经反转了右大括号和双引号。
    • @SimoneZabberoni 表达还可以。我认为阅读它有点令人困惑,因为问题中的 JSON 格式不正确。
    • @Richlv,你是对的。我正在选择搜索给定主机的触发器(在 trigger.get 方法的过滤器参数上传递 hostid)。从过滤器中删除 hostid 并仅搜索“模板化触发器”(trigger.get 上的模板化参数 = true)后,我成功地更新了触发器。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多