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}]}
