1 Server-proxy 数据交换协议
概述
Server-proxy 数据交换基于JSON格式。
请求和响应消息必须以header and data length开头
被动代理
代理配置请求
proxy config
请求由服务器发送以提供代理配置数据。 每次发送此请求 ProxyConfigFrequency
(服务器配置参数)秒。
name | value type | description | |||
---|---|---|---|---|---|
server→proxy: | |||||
request | string | ‘proxy config’ | |||
<table> | object | one or more objects with <table> data | |||
fields | array | array of field names | |||
- | string | field name | |||
data | array | array of rows | |||
- | array | array of columns | |||
- | string,number | column value with type depending on column type in database schema | |||
proxy→server: | |||||
response | string | the request success information (‘success’ or ‘failed’) | |||
version | string | the proxy version (<major>.<minor>.<build>) | |||
例:
server→proxy:
{
"request": "proxy config",
"globalmacro":{
"fields":[
"globalmacroid",
"macro",
"value"
],
"data":[
[
2,
"{$SNMP_COMMUNITY}",
"public"
]
]
},
"hosts":{
"fields":[
"hostid",
"host",
"status",
"ipmi_authtype",
"ipmi_privilege",
"ipmi_username",
"ipmi_password",
"name",
"tls_connect",
"tls_accept",
"tls_issuer",
"tls_subject",
"tls_psk_identity",
"tls_psk"
],
"data":[
[
10001,
"Template OS Linux",
3,
-1,
2,
"",
"",
"Template OS Linux",
1,
1,
"",
"",
"",
""
],
[
10050,
"Template App Zabbix Agent",
3,
-1,
2,
"",
"",
"Template App Zabbix Agent",
1,
1,
"",
"",
"",
""
],
[
10105,
"Logger",
0,
-1,
2,
"",
"",
"Logger",
1,
1,
"",
"",
"",
""
]
]
},
"interface":{
"fields":[
"interfaceid",
"hostid",
"main",
"type",
"useip",
"ip",
"dns",
"port",
"bulk"
],
"data":[
[
2,
10105,
1,
1,
1,
"127.0.0.1",
"",
"10050",
1
]
]
},
...
}
proxy→server:
{
"response": "success",
"version": "5.0.0"
}
代理请求
proxy data
request用于从代理获取主机可用性,历史,发现和自动注册数据。 每次发送此请求 ProxyDataFrequency
(服务器配置参数)秒。
name | value type | description | |
---|---|---|---|
server→proxy: | |||
request | string | ‘proxy data’ | |
proxy→server: | |||
host availability | array | (optional) array of host availability data objects | |
hostid | number | host identifier | |
available | number | Zabbix agent availability 0, HOSTAVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
error | string | Zabbix agent error message or empty string | |
snmp_available | number | SNMP agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
snmp_error | string | SNMP agent error message or empty string | |
ipmi_available | number | IPMI agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
ipmi_error | string | IPMI agent error message or empty string | |
jmx_available | number | JMX agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
jmx_error | string | JMX agent error message or empty string | |
history data | array | (optional) array of history data objects | |
itemid | number | item identifier | |
clock | number | item value timestamp (seconds) | |
ns | number | item value timestamp (nanoseconds) | |
value | string | (optional) item value | |
timestamp | number | (optional) timestamp of log type items | |
source | string | (optional) eventlog item source value | |
severity | number | (optional) eventlog item severity value | |
eventid | number | (optional) eventlog item eventid value | |
state | string | (optional) item state 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED | |
lastlogsize | number | (optional) last logs ize of log type items | |
mtime | number | (optional) modify time of log type items | |
discovery data | array | (optional) array of discovery data objects | |
clock | number | the discovery data timestamp | |
druleid | number | the discovery rule identifier | |
dcheckid | number | the discovery check indentifier or null for discovery rule data | |
type | number | the discovery check type: -1 discovery rule data 0, SVC_SSH - SSH service check 1, SVC_LDAP - LDAP service check 2, SVC_SMTP - SMTP service check 3, SVCFTP - FTP service check 4, SVCHTTP - HTTP service check 5, SVC_POP - POP service check 6, SVC_NNTP - NNTP service check 7, SVC_IMAP - IMAP service check 8, SVC_TCP - TCP port availability check 9, SVC_AGENT - Zabbix agent 10, SVC_SNMPv1 - SNMPv1 agent 11, SVC_SNMPv2 - SNMPv2 agent 12, SVC_ICMPPING - ICMP ping 13, SVC_SNMPv3 - SNMPv3 agent 14, SVC_HTTPS - HTTPS service check 15, SVC_TELNET - Telnet availability check | |
ip | string | the host IP address | |
dns | string | the host DNS name | |
port | number | (optional) service port number | |
key | string | (optional) the item key for discovery check of type 9 SVC_AGENT | |
value | string | (optional) value received from the service, can be empty for most of services | |
status | number | (optional) service status: 0, DOBJECT_STATUS_UP - Service UP 1, DOBJECT_STATUS_DOWN - Service DOWN | |
auto registration | array | (optional) array of auto registration data objects | |
clock | number | the auto registration data timestamp | |
host | string | the host name | |
ip | string | (optional) the host IP address | |
dns | string | (optional) the resolved DNS name from IP address | |
port | string | (optional) the host port | |
host_metadata | string | (optional) the host metadata sent by agent (based on HostMetadata or HostMetadataItem agent configuration parameter) | |
tasks | array | (optional) array of tasks | |
type | number | the task type: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - remote command result | |
status | number | the remote command execution status: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - the remote command completed successfully 1, ZBX_TM_REMOTE_COMMAND_FAILED - the remote command failed | |
error | string | (optional) the error message | |
parent_taskid | number | the parent task id | |
more | number | (optional) 1 - there are more history data to send | |
clock | number | data transfer timestamp (seconds) | |
ns | number | data transfer timestamp (nanoseconds) | |
version | string | the proxy version (<major>.<minor>.<build>) | |
server→proxy: | |||
response | string | the request success information (‘success’ or ‘failed’) | |
tasks | array | (optional) array of tasks | |
type | number | the task type: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - remote command | |
clock | number | the task creation time | |
ttl | number | the time in seconds after which task expires | |
commandtype | number | the remote command type: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - use custom script 1, ZBX_SCRIPT_TYPE_IPMI - use IPMI 2, ZBX_SCRIPT_TYPE_SSH - use SSH 3, ZBX_SCRIPT_TYPE_TELNET - use Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - use global script (currently functionally equivalent to custom script) | |
command | string | the remote command to execute | |
execute_on | number | the execution target for custom scripts: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - execute script on agent 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - execute script on server 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - execute script on proxy | |
port | number | (optional) the port for telnet and ssh commands | |
authtype | number | (optional) the authentication type for ssh commands | |
username | string | (optional) the user name for telnet and ssh commands | |
password | string | (optional) the password for telnet and ssh commands | |
publickey | string | (optional) the public key for ssh commands | |
privatekey | string | (optional) the private key for ssh commands | |
parent_taskid | number | the parent task id | |
hostid | number | target hostid | |
例如:
server→proxy:
{
"request": "proxy data"
}
proxy→server:
{
"host availability":[
{
"hostid":10106,
"available":1,
"error":"",
"snmp_available":0,
"snmp_error":"",
"ipmi_available":0,
"ipmi_error":"",
"jmx_available":0,
"jmx_error":""
},
{
"hostid":10107,
"available":1,
"error":"",
"snmp_available":0,
"snmp_error":"",
"ipmi_available":0,
"ipmi_error":"",
"jmx_available":0,
"jmx_error":""
}
],
"history data":[
{
"itemid":"12345",
"clock":1478609647,
"ns":332510044,
"value":"52956612"
},
{
"itemid":"12346",
"clock":1478609647,
"ns":330690279,
"state":1,
"value":"Cannot find information for this network interface in /proc/net/dev."
}
],
"discovery data":[
{
"clock":1478608764,
"drule":2,
"dcheck":3,
"type":12,
"ip":"10.3.0.10",
"dns":"vdebian",
"status":1
},
{
"clock":1478608764,
"drule":2,
"dcheck":null,
"type":-1,
"ip":"10.3.0.10",
"dns":"vdebian",
"status":1
}
],
"auto registration":[
{
"clock":1478608371,
"host":"Logger1",
"ip":"10.3.0.1",
"dns":"localhost",
"port":"10050"
},
{
"clock":1478608381,
"host":"Logger2",
"ip":"10.3.0.2",
"dns":"localhost",
"port":"10050"
}
],
"tasks":[
{
"type": 0,
"status": 0,
"parent_taskid": 10
},
{
"type": 0,
"status": 1,
"error": "No permissions to execute task.",
"parent_taskid": 20
}
],
"version":"5.0.0"
}
server→proxy:
{
"response": "success",
"tasks":[
{
"type": 1,
"clock": 1478608371,
"ttl": 600,
"commandtype": 2,
"command": "restart_service1.sh",
"execute_on": 2,
"port": 80,
"authtype": 0,
"username": "userA",
"password": "password1",
"publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
"privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
"parent_taskid": 10,
"hostid": 10070
},
{
"type": 1,
"clock": 1478608381,
"ttl": 600,
"commandtype": 1,
"command": "restart_service2.sh",
"execute_on": 0,
"authtype": 0,
"username": "",
"password": "",
"publickey": "",
"privatekey": "",
"parent_taskid": 20,
"hostid": 10084
}
]
}
主动代理
代理心跳请求
proxy heartbeat
请求由代理发送以报告代理正在运行。 每次发送此请求 HeartbeatFrequency
(代理配置参数)秒。
name | value type | description | |
---|---|---|---|
proxy→server: | |||
request | string | ‘proxy heartbeat’ | |
host | string | the proxy name | |
version | string | the proxy version (<major>.<minor>.<build>) | |
server→proxy: | |||
response | string | the request success information (‘success’ or ‘failed’) | |
proxy→server:
{
"request": "proxy heartbeat",
"host": "Proxy #12",
"version": "5.0.0"
}
server→proxy:
{
"response": "success"
}
代理配置请求
proxy config
请求由代理发送以获取代理配置数据。 每次发送此请求 ConfigFrequency
(代理配置参数)秒。
name | value type | description | |||
---|---|---|---|---|---|
proxy→server: | |||||
request | string | ‘proxy config’ | |||
host | string | proxy name | |||
version | string | the proxy version (<major>.<minor>.<build>) | |||
server→proxy: | |||||
request | string | ‘proxy config’ | |||
<table> | object | one or more objects with <table> data | |||
fields | array | array of field names | |||
- | string | field name | |||
data | array | array of rows | |||
- | array | array of columns | |||
- | string,number | column value with type depending on column type in database schema | |||
proxy→server: | |||||
response | string | the request success information (‘success’ or ‘failed’) | |||
例如:
proxy→server:
{
"request": "proxy config",
"host": "Proxy #12",
"version":"5.0.0"
}
server→proxy:
{
"globalmacro":{
"fields":[
"globalmacroid",
"macro",
"value"
],
"data":[
[
2,
"{$SNMP_COMMUNITY}",
"public"
]
]
},
"hosts":{
"fields":[
"hostid",
"host",
"status",
"ipmi_authtype",
"ipmi_privilege",
"ipmi_username",
"ipmi_password",
"name",
"tls_connect",
"tls_accept",
"tls_issuer",
"tls_subject",
"tls_psk_identity",
"tls_psk"
],
"data":[
[
10001,
"Template OS Linux",
3,
-1,
2,
"",
"",
"Template OS Linux",
1,
1,
"",
"",
"",
""
],
[
10050,
"Template App Zabbix Agent",
3,
-1,
2,
"",
"",
"Template App Zabbix Agent",
1,
1,
"",
"",
"",
""
],
[
10105,
"Logger",
0,
-1,
2,
"",
"",
"Logger",
1,
1,
"",
"",
"",
""
]
]
},
"interface":{
"fields":[
"interfaceid",
"hostid",
"main",
"type",
"useip",
"ip",
"dns",
"port",
"bulk"
],
"data":[
[
2,
10105,
1,
1,
1,
"127.0.0.1",
"",
"10050",
1
]
]
},
...
}
proxy→server:
{
"response": "success"
}
代理数据请求
proxy data
请求由代理发送,以提供主机可用性,历史记录,发现和自动注册数据。 每次发送此请求 DataSenderFrequency
(代理配置参数)秒。
name | value type | description | |
---|---|---|---|
proxy→server: | |||
request | string | ‘proxy data’ | |
host | string | the proxy name | |
host availability | array | (optional) array of host availability data objects | |
hostid | number | host identifier | |
available | number | Zabbix agent availability 0, HOSTAVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
error | string | Zabbix agent error message or empty string | |
snmp_available | number | SNMP agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
snmp_error | string | SNMP agent error message or empty string | |
ipmi_available | number | IPMI agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
ipmi_error | string | IPMI agent error message or empty string | |
jmx_available | number | JMX agent availability 0, HOST_AVAILABLE_UNKNOWN - unknown 1, HOST_AVAILABLE_TRUE - available 2, HOST_AVAILABLE_FALSE - unavailable | |
jmx_error | string | JMX agent error message or empty string | |
history data | array | (optional) array of history data objects | |
itemid | number | item identifier | |
clock | number | item value timestamp (seconds) | |
ns | number | item value timestamp (nanoseconds) | |
value | string | (optional) item value | |
timestamp | number | (optional) timestamp of log type items | |
source | string | (optional) eventlog item source value | |
severity | number | (optional) eventlog item severity value | |
eventid | number | (optional) eventlog item eventid value | |
state | string | (optional) item state 0, ITEM_STATE_NORMAL 1, ITEM_STATE_NOTSUPPORTED | |
lastlogsize | number | (optional) last logs ize of log type items | |
mtime | number | (optional) modify time of log type items | |
discovery data | array | (optional) array of discovery data objects | |
clock | number | the discovery data timestamp | |
druleid | number | the discovery rule identifier | |
dcheckid | number | the discovery check indentifier or null for discovery rule data | |
type | number | the discovery check type: -1 discovery rule data 0, SVC_SSH - SSH service check 1, SVC_LDAP - LDAP service check 2, SVC_SMTP - SMTP service check 3, SVCFTP - FTP service check 4, SVCHTTP - HTTP service check 5, SVC_POP - POP service check 6, SVC_NNTP - NNTP service check 7, SVC_IMAP - IMAP service check 8, SVC_TCP - TCP port availability check 9, SVC_AGENT - Zabbix agent 10, SVC_SNMPv1 - SNMPv1 agent 11, SVC_SNMPv2 - SNMPv2 agent 12, SVC_ICMPPING - ICMP ping 13, SVC_SNMPv3 - SNMPv3 agent 14, SVC_HTTPS - HTTPS service check 15, SVC_TELNET - Telnet availability check | |
ip | string | the host IP address | |
dns | string | the host DNS name | |
port | number | (optional) service port number | |
key | string | (optional) the item key for discovery check of type 9 SVC_AGENT | |
value | string | (optional) value received from the service, can be empty for most of services | |
status | number | (optional) service status: 0, DOBJECT_STATUS_UP - Service UP 1, DOBJECT_STATUS_DOWN - Service DOWN | |
auto registration | array | (optional) array of auto registration data objects | |
clock | number | the auto registration data timestamp | |
host | string | the host name | |
ip | string | (optional) the host IP address | |
dns | string | (optional) the resolved DNS name from IP address | |
port | string | (optional) the host port | |
host_metadata | string | (optional) the host metadata sent by agent (based on HostMetadata or HostMetadataItem agent configuration parameter) | |
tasks | array | (optional) array of tasks | |
type | number | the task type: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - remote command result | |
status | number | the remote command execution status: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - the remote command completed successfully 1, ZBX_TM_REMOTE_COMMAND_FAILED - the remote command failed | |
error | string | (optional) the error message | |
parent_taskid | number | the parent task id | |
more | number | (optional) 1 - there are more history data to send | |
clock | number | data transfer timestamp (seconds) | |
ns | number | data transfer timestamp (nanoseconds) | |
version | string | the proxy version (<major>.<minor>.<build>) | |
server→proxy: | |||
response | string | the request success information (‘success’ or ‘failed’) | |
tasks | array | (optional) array of tasks | |
type | number | the task type: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - remote command | |
clock | number | the task creation time | |
ttl | number | the time in seconds after which task expires | |
commandtype | number | the remote command type: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - use custom script 1, ZBX_SCRIPT_TYPE_IPMI - use IPMI 2, ZBX_SCRIPT_TYPE_SSH - use SSH 3, ZBX_SCRIPT_TYPE_TELNET - use Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - use global script (currently functionally equivalent to custom script) | |
command | string | the remote command to execute | |
execute_on | number | the execution target for custom scripts: 0, ZBX_SCRIPT_EXECUTE_ON_AGENT - execute script on agent 1, ZBX_SCRIPT_EXECUTE_ON_SERVER - execute script on server 2, ZBX_SCRIPT_EXECUTE_ON_PROXY - execute script on proxy | |
port | number | (optional) the port for telnet and ssh commands | |
authtype | number | (optional) the authentication type for ssh commands | |
username | string | (optional) the user name for telnet and ssh commands | |
password | string | (optional) the password for telnet and ssh commands | |
publickey | string | (optional) the public key for ssh commands | |
privatekey | string | (optional) the private key for ssh commands | |
parent_taskid | number | the parent task id | |
hostid | number | target hostid | |
例如:
proxy→server:
{
"request": "proxy data",
"host": "Proxy #12",
"session": "12345678901234567890123456789012",
"host availability":[
{
"hostid":10106,
"available":1,
"error":"",
"snmp_available":0,
"snmp_error":"",
"ipmi_available":0,
"ipmi_error":"",
"jmx_available":0,
"jmx_error":""
},
{
"hostid":10107,
"available":1,
"error":"",
"snmp_available":0,
"snmp_error":"",
"ipmi_available":0,
"ipmi_error":"",
"jmx_available":0,
"jmx_error":""
}
],
"history data":[
{
"itemid":"12345",
"clock":1478609647,
"ns":332510044,
"value":"52956612"
"id": 1
},
{
"itemid":"12346",
"clock":1478609647,
"ns":330690279,
"state":1,
"value":"Cannot find information for this network interface in /proc/net/dev."
"id": 2
}
],
"discovery data":[
{
"clock":1478608764,
"drule":2,
"dcheck":3,
"type":12,
"ip":"10.3.0.10",
"dns":"vdebian",
"status":1
},
{
"clock":1478608764,
"drule":2,
"dcheck":null,
"type":-1,
"ip":"10.3.0.10",
"dns":"vdebian",
"status":1
}
],
"auto registration":[
{
"clock":1478608371,
"host":"Logger1",
"ip":"10.3.0.1",
"dns":"localhost",
"port":"10050"
},
{
"clock":1478608381,
"host":"Logger2",
"ip":"10.3.0.2",
"dns":"localhost",
"port":"10050"
}
],
"tasks":[
{
"type": 2,
"clock":1478608371,
"ttl": 600,
"commandtype": 2,
"command": "restart_service1.sh",
"execute_on": 2,
"port": 80,
"authtype": 0,
"username": "userA",
"password": "password1",
"publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
"privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
"parent_taskid": 10,
"hostid": 10070
},
{
"type": 2,
"clock":1478608381,
"ttl": 600,
"commandtype": 1,
"command": "restart_service2.sh",
"execute_on": 0,
"authtype": 0,
"username": "",
"password": "",
"publickey": "",
"privatekey": "",
"parent_taskid": 20,
"hostid": 10084
}
],
"tasks":[
{
"type": 0,
"status": 0,
"parent_taskid": 10
},
{
"type": 0,
"status": 1,
"error": "No permissions to execute task.",
"parent_taskid": 20
}
],
"version":"5.0.0"
}
server→proxy:
{
"response": "success",
"tasks":[
{
"type": 1,
"clock": 1478608371,
"ttl": 600,
"commandtype": 2,
"command": "restart_service1.sh",
"execute_on": 2,
"port": 80,
"authtype": 0,
"username": "userA",
"password": "password1",
"publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
"privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
"parent_taskid": 10,
"hostid": 10070
},
{
"type": 1,
"clock": 1478608381,
"ttl": 600,
"commandtype": 1,
"command": "restart_service2.sh",
"execute_on": 0,
"authtype": 0,
"username": "",
"password": "",
"publickey": "",
"privatekey": "",
"parent_taskid": 20,
"hostid": 10084
}
]
}