我正在尝试通过 library 从 Zabbix获取一个Event
给定的值。具有此 ID 的事件存在并且当前处于活动状态。Zabbix 连接成功。此外,如果我删除过滤器,它会发现超过 600 个事件。但是(!)我无法在同一用户下直接从 Zabbix Web 界面访问其中一些。
代码:event_id
github.com/cavaliercoder/go-zabbix
EventIDs
session, err := zabbix.NewSession("zabbix_url/api_jsonrpc.php", "user", "password")
if err != nil {
panic(err)
}
var event_ids []string = []string{"2589270"}
params := zabbix.EventGetParams{
EventIDs: event_ids,
}
events, err := session.GetEvents(params)
fmt.Println(events)
输出:
[]
错误:
2021/07/06 18:49:09 Error getting events: No results were found matching the given search
parameters
2021/07/06 18:49:09 No events found
2021/07/06 18:49:09 Validated 0 Events
也许我以某种方式错误地进入id
了图书馆?
在库的源代码中,EventIDs
参数如下所示:
EventIDs []string `json:"eventids,omitempty"`
同时,curl 一切正常。
UPD
代码:
jparams, err := json.Marshal(params)
os.Stdout.Write(jparams)
回报:
{"eventids":["2589270"],"object":0,"acknowledged":false}
UPD2:
已经凭经验确定问题出在acknowledged
参数上。如果设置为false
,则找不到事件。如果设置为true
,则找到事件。Curl
表现出相同的行为。问题是该acknowledged
参数默认设置为true
或false
。我无法删除它。
按照zabbix api的计划(我猜),如果这个参数设置为false
,应该返回所有事件。如果参数设置为true
,则只应返回已确认的事件。但它没有按预期工作。