1

我正在尝试通过 library 从 Zabbix获取一个Event给定的值。具有此 ID 的事件存在并且当前处于活动状态。Zabbix 连接成功。此外,如果我删除过滤器,它会发现超过 600 个事件。但是(!)我无法在同一用户下直接从 Zabbix Web 界面访问其中一些。 代码:event_idgithub.com/cavaliercoder/go-zabbixEventIDs

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参数默认设置为truefalse。我无法删除它。

按照zabbix api的计划(我猜),如果这个参数设置为false,应该返回所有事件。如果参数设置为true,则只应返回已确认的事件。但它没有按预期工作。

4

0 回答 0