Python 3.x Zabbix API 3.4-由于循环要求,无法创建主机
我正在尝试为用Python编写的服务添加zabbix服务器支持。此服务应在活动模式下向zabbix服务器发送度量。例如,服务定期连接到服务器,而不是以其他方式连接。(该服务可在防火墙后运行,唯一选项是使用活动模式。) 在host.create API调用中,我需要给出主机的接口。以下是相关文档:-需要interfaces参数。如果我试图给出一个空列表:Python 3.x Zabbix API 3.4-由于循环要求,无法创建主机,python-3.x,zabbix,Python 3.x,Zabbix,我正在尝试为用Python编写的服务添加zabbix服务器支持。此服务应在活动模式下向zabbix服务器发送度量。例如,服务定期连接到服务器,而不是以其他方式连接。(该服务可在防火墙后运行,唯一选项是使用活动模式。) 在host.create API调用中,我需要给出主机的接口。以下是相关文档:-需要interfaces参数。如果我试图给出一个空列表: zapi = ZabbixAPI(cfg.url) zapi.login(cfg.user, cfg.password) # I'm using
zapi = ZabbixAPI(cfg.url)
zapi.login(cfg.user, cfg.password) # I'm using an administrator user here!
host = zapi.host.create(
host=cfg.host_name,
description=cfg.host_description,
inventory_mode=1, # auto host inventory population
status=0, # monitored host
groups=[host_group_id],
interfaces=[], # active agent, no interface???
)
然后我得到这个错误:
pyzabbix.ZabbixAPIException: ('Error -32500: Application error., No permissions to referred object or it does not exist!', -32500)
我可以使用相同的用户和zabbix web界面创建主机,所以我想问题在于界面。所以我尝试先创建一个接口。但是,hostinterface.create方法需要一个hostid参数。
请参见此处:-我必须提供一个hostid
这是catch 22-为了创建主机,我需要一个主机接口。但是要创建主机接口,我需要一个主机
我错过了什么?也许我错了,host.create API调用被拒绝是因为另一个原因。我怎样才能知道它是什么?主机创建api也将创建hostinterface,您需要根据 例如,在调用api之前添加以下内容:
interfaces = []
interfaces.append( {
'type' : 2,
'main' : 1,
'useip': 1,
'ip' : '1.2.3.4',
'dns' : "",
'port' : '161'
} )
然后将其传递给主机create api(创建api)参考文档未显示明确性,但在Zabbix中,一台主机需要具备: -一个或多个接口(活动主机也需要) -一个或多个主机组 因此,对于您的代码工作,您需要更改为以下内容:
zapi = ZabbixAPI(cfg.url)
zapi.login(cfg.user, cfg.password) # I'm using an administrator user here!
host = zapi.host.create(
host=cfg.host_name,
description=cfg.host_description,
inventory_mode=1, # auto host inventory population
status=0, # monitored host
groups=[host_group_id],
interfaces=[ {"type": "1",
"main": "1",
"useip": "1",
"ip": "127.0.0.1",
"dns": "mydns", # can be blank
"port": "10051"}],
)
在您的情况下是“主动主机”,但在Zabbix中,主动/被动的概念是针对项目,而不是针对主机。因此,主机可能同时具有被动和主动ITEN。好的。现在我想知道,对于一个永远不会使用任何接口的主机,我应该提供什么样的接口。(例如,只在活动模式下更新项目的主机。)我可以给出一个已知的黑洞IP地址,但这不是最理想的解决方案。是的,这非常令人困惑。zabbix数据库的规范化显然存在问题。这是可行的,但有时会违反直觉。