我使用Python和pyzabbix模块通过Zabbix获取所有触发器。使用trigger.get()函数获取所有触发器列表。该脚本可以很好地处理所有其他函数,如host.get()等。但是对于这个函数,它失败了,给了我500个内部服务器错误。但是,当我为相同的对象指定特定的对象参数时,它将运行。
使用为trigger.get()方法指定的一些参数运行它,但是我想列出所有触发器,而不使用方法triggers.get().的任何参数
我的代码:
from pyzabbix import ZabbixAPI
zapi = ZabbixAPI("http://Zabbix-Server-IP/zabbix")
zapi.login("username","password")
trigger=zapi.trigger.get() #Method to get all triggers from zabbix误差
Traceback (most recent call last):
File "zabbix.py", line 69, in <module>
get_all_zabbix_host()
File "zabbix.py", line 16, in get_all_zabbix_host
trigger=zapi.trigger.get()
File "/usr/lib/python2.7/site-packages/pyzabbix/__init__.py", line 157, in fn
args or kwargs
File "/usr/lib/python2.7/site-packages/pyzabbix/__init__.py", line 109, in do_request
response.raise_for_status()
File "/usr/lib/python2.7/site-packages/requests/models.py", line 928, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url:
http://Zabbix-Server-IP/zabbix/api_jsonrpc.php发布于 2019-01-07 22:07:06
正如您所说,不带params的trigger.get()调用应该返回定义触发器(主机和模板)的all。
一个带有2台主机和一些新增的默认模板(使用api 3.4和4.0)的新的zabbix系统:
>>> from zabbix.api import ZabbixAPI
>>> zabbixServer = 'http://localhost/zabbix/'
>>> zabbixUser = 'admin'
>>> zabbixPass = 'zabbix'
>>> zapi = ZabbixAPI(url=zabbixServer, user=zabbixUser, password=zabbixPass)
>>> triggers = zapi.trigger.get()
>>> len(triggers)
482
>>> sys.getsizeof(triggers)
4280500内部服务器错误可能是由过度响应引起的,例如,结果大于php的memory_limit。您应该首先检查httpd的error.log,以获得如下内容:
PHP Fatal error: Allowed memory size of xxxxxxx bytes exhausted如果是这样的话,您应该相应地调优您的/etc/httpd/conf.d/zabbix.conf (Centos的默认值),然后重新启动httpd并重试。
https://stackoverflow.com/questions/54005622
复制相似问题