zabbix api无法获取已解决问题解决思路和总结
事件背景
最近在对zabbix api进行二次开发,在设计获取problem的接口的时候发现了调用zabbix api无法获取已解决的problem的问题,在解决这个问题的过程之中对于zabbix api到底是如何获取数据的进行了一些探索,现在把最近的收获记录下来。因为本人对于zabbix刚刚开始学习,很多方面的知识不够完善,因此在总结收获的过程之中可能会出现很多错误,希望大家可以指出。
问题回顾
在zabbix api二次开发的过程中设计problem接口时为条件查询problem设计了一个是否已解决的字段,一开始的思路是调用zabbix api的problem.get方法来获取problem,在zabbix数据库的problem表中每个problem拥有两个eventId,一个是发生事件另一个是恢复事件,恢复事件不为空的problem表示已经解决了,调用zabbix api的problem.get方法本质上就是从problem表里查询problem。按照思路应该会成功获取各种problem,然而在开发过程中却发现了问题,那就是总是查不到已解决的问题,于是进入zabbix的数据库的problem表进行查看。在problem表里发现了很多problem已经拥有恢复事件了,然而调用zabbix api还是查询不到这些已解决的问题,断点调试后发现了一个现象,在返回的problem列表里凡是恢复事件不为空的事件都没有取到,这就令人非常费解。
思考过程:因为是在调用zabbix api的时候出现的问题所以理所应当的先查看官方的api说明文档,在查看各个参数的过程中发现了一个"recent"参数,官方文档给出的说明是这样的: