服务器端 - proxy 数据交换基于JSON格式。
请求和响应消息必须以header and data length开头。
proxy config
请求由服务器发送,用于提供proxy配置数据。该请求每ProxyConfigFrequency
秒(服务器配置参数)发送一次。
名称 | 值类型 | 描述 | |||
---|---|---|---|---|---|
server→proxy: | |||||
request | string | 'proxy配置' | |||
<table> | object | 一个或多个包含<table>数据的objects。 | |||
字段 | array | 字段名的array。 | |||
- | string | 字段名称。 | |||
数据 | array | 行的array。 | |||
- | array | 列的array。 | |||
- | string,number | 列值,其类型取决于数据库模式中的列类型。 | |||
proxy→server: | |||||
response | string | 请求成功信息('success'或'失败')。 | |||
version | string | Proxy的version版本(<major>.<minor>.<build>)。 |
示例:
服务器→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,
"Linux",
3,
-1,
2,
"",
"",
"Linux",
1,
1,
"",
"",
"",
""
],
[
10050,
"Zabbix Agent",
3,
-1,
2,
"",
"",
"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→服务器:
proxy data
请求用于从proxy获取主机接口可用性、历史数据、发现数据和自动注册数据。该请求每ProxyDataFrequency
秒(服务器配置参数)发送一次。
名称 | 值类型 | 描述 | |
---|---|---|---|
server→proxy: | |||
request | string | 'proxy数据' | |
proxy→server: | |||
session | string | 数据会话令牌。 | |
interface availability | array | (可选) 接口可用性数据objects的array。 | |
interfaceid | number | 接口标识符。 | |
available | number | 接口可用性: 0, INTERFACE_AVAILABLE_UNKNOWN - 未知 1, INTERFACE_AVAILABLE_TRUE - 可用 2, INTERFACE_AVAILABLE_FALSE - 不可用 |
|
error | string | 接口错误消息或空string。 | |
history data | array | (可选) 历史数据objects的array。 | |
itemid | number | 监控项标识符。 | |
clock | number | 监控项值时间戳(秒)。 | |
ns | number | 监控项值时间戳(纳秒)。 | |
value | string | (可选) 监控项值。 | |
id | number | 值标识符(递增计数器,在单个数据会话内唯一)。 | |
timestamp | number | (可选) 日志类型监控项的时间戳。 | |
source | string | (可选) 事件日志监控项源值。 | |
severity | number | (可选) 事件日志监控项严重性值。 | |
eventid | number | (可选) 事件日志监控项事件ID值。 | |
state | string | (可选) 监控项状态: 0, 监控项_STATE_NORMAL 1, 监控项_STATE_NOTSUPPORTED |
|
lastlogsize | number | (可选) 日志类型监控项的最后日志大小。 | |
mtime | number | (可选) 日志类型监控项的修改时间。 | |
discovery data | array | (可选) 发现数据objects的array。 | |
clock | number | 发现数据时间戳。 | |
druleid | number | 发现规则标识符。 | |
dcheckid | number | 发现检查标识符或发现规则数据的null。 | |
type | number | 发现检查类型: -1 发现规则数据 0, SVC_SSH - SSH服务检查 1, SVC_LDAP - LDAP服务检查 2, SVC_SMTP - SMTP服务检查 3, SVC_FTP - FTP服务检查 4, SVC_HTTP - HTTP服务检查 5, SVC_POP - POP服务检查 6, SVC_NNTP - NNTP服务检查 7, SVC_IMAP - IMAP服务检查 8, SVC_TCP - TCP端口可用性检查 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服务检查 15, SVC_TELNET - Telnet可用性检查 |
|
ip | string | 主机IP地址。 | |
dns | string | 主机DNS名称。 | |
port | number | (可选) 服务端口号。 | |
key_ | string | (可选) 类型为9 SVC_AGENT的发现检查的监控项键 | |
value | string | (可选) 从服务接收的值,对于大多数服务可以为空。 | |
status | number | (可选) 服务状态: 0, DOBJECT_STATUS_UP - 服务UP 1, DOBJECT_STATUS_DOWN - 服务DOWN |
|
auto registration | array | (可选) 自动注册数据objects的array。 | |
clock | number | 自动注册数据时间戳。 | |
主机 | string | 主机名。 | |
ip | string | (可选) 主机IP地址。 | |
dns | string | (可选) 从IP地址解析的DNS名称。 | |
port | string | (可选) 主机端口。 | |
主机_metadata | string | (可选) agent发送的主机元数据(基于HostMetadata或HostMetadataItem agent配置参数)。 | |
tasks | array | (可选) 任务的array。 | |
type | number | 任务类型: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - 远程命令结果 |
|
status | number | 远程命令执行状态: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - 远程命令成功完成 1, ZBX_TM_REMOTE_COMMAND_FAILED - 远程命令失败 |
|
error | string | (可选) 错误消息。 | |
parent_taskid | number | 父任务ID。 | |
more | number | (可选) 1 - 还有更多历史数据需要发送。 | |
clock | number | (可选) 数据传输时间戳(秒)。 | |
ns | number | (可选) 数据传输时间戳(纳秒)。 | |
version | string | Proxy version (<主版本>.<次版本>.<构建版本>)。 | |
server→proxy: | |||
response | string | 请求成功信息('success'或'失败')。 | |
tasks | array | (可选) 任务的array。 | |
type | number | 任务类型: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - 远程命令 |
|
clock | number | 任务创建时间。 | |
ttl | number | 任务过期时间(秒)。 | |
commandtype | number | 远程命令类型: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - 使用自定义脚本 1, ZBX_SCRIPT_TYPE_IPMI - 使用IPMI 2, ZBX_SCRIPT_TYPE_SSH - 使用SSH 3, ZBX_SCRIPT_TYPE_TELNET - 使用Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - 使用全局脚本(当前功能上等同于自定义脚本) |
|
command | string | 要execute的远程命令。 | |
execute_on | number | 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) Port for Telnet and SSH commands. | |
authtype | number | (optional) Authentication type for SSH commands. | |
username | string | (optional) User name for Telnet and SSH commands. | |
password | string | (optional) Password for Telnet and SSH commands. | |
publickey | string | (optional) Public key for SSH commands. | |
privatekey | string | (optional) Private key for SSH commands. | |
parent_taskid | number | 父任务ID。 | |
hostid | number | 目标主机 ID。 |
示例:
服务器→proxy:
proxy→服务器:
{
"session": "12345678901234567890123456789012"
"interface availability": [
{
"interfaceid": 1,
"available": 1,
"error": ""
},
{
"interfaceid": 2,
"available": 2,
"error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
},
{
"interfaceid": 3,
"available": 1,
"error": ""
},
{
"interfaceid": 4,
"available": 1,
"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": 0,
"status": 0,
"parent_taskid": 10
},
{
"type": 0,
"status": 1,
"error": "No permissions to execute task.",
"parent_taskid": 20
}
],
"version":"5.4.0"
}
服务器→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
请求由proxy发送,用于报告proxy正在运行。该请求每HeartbeatFrequency
秒(proxy配置参数)发送一次。
名称 | 值类型 | 描述 |
---|---|---|
proxy→server: | ||
request | string | 'proxy心跳信号' |
host | string | Proxy名称. |
version | string | Proxyversion (<主版本>.<次版本>.<构建号>). |
server→proxy: | ||
response | string | 请求成功信息('success'或'失败'). |
proxy→服务器:
服务器→proxy:
proxy config
请求由proxy发送,用于获取proxy配置数据。该请求每隔ConfigFrequency
秒(proxy配置参数)发送一次。
名称 | 值类型 | 描述 | |||
---|---|---|---|---|---|
proxy→server: | |||||
request | string | 'proxy配置' | |||
host | string | Proxy名称。 | |||
version | string | Proxyversion(<主版本>.<次版本>.<构建号>)。 | |||
server→proxy: | |||||
request | string | 'proxy配置' | |||
<table> | object | 一个或多个包含<table>数据的objects。 | |||
字段 | array | 字段名的array。 | |||
- | string | 字段名。 | |||
数据 | array | 行的array。 | |||
- | array | 列的array。 | |||
- | string,number | 列值,其类型取决于数据库模式中的列类型。 | |||
proxy→server: | |||||
response | string | 请求成功信息('success'或'失败')。 |
示例:
proxy→服务器:
服务器→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,
"Linux",
3,
-1,
2,
"",
"",
"Linux",
1,
1,
"",
"",
"",
""
],
[
10050,
"Zabbix Agent",
3,
-1,
2,
"",
"",
"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→服务器:
proxy data
请求由proxy发送,用于提供主机接口可用性、历史数据、发现和自动注册数据。 该请求每DataSenderFrequency
秒(proxy配置参数)发送一次。 注意:主动式proxy仍会每秒轮询Zabbix server以获取远程命令任务(发送空的proxy data
请求)。
名称 | 值类型 | 描述 | |
---|---|---|---|
proxy→server: | |||
request | string | 'proxy数据' | |
host | string | Proxy名称。 | |
session | string | 数据会话令牌。 | |
interface availability | array | (可选) 接口可用性数据的arrayobjects。 | |
interfaceid | number | 接口标识符。 | |
available | number | 接口可用性: 0, INTERFACE_AVAILABLE_UNKNOWN - 未知 1, INTERFACE_AVAILABLE_TRUE - 可用 2, INTERFACE_AVAILABLE_FALSE - 不可用 |
|
error | string | 接口错误消息或空string。 | |
history data | array | (可选) 历史数据的arrayobjects。 | |
itemid | number | 监控项标识符。 | |
clock | number | 监控项值时间戳(秒)。 | |
ns | number | 监控项值时间戳(纳秒)。 | |
value | string | (可选) 监控项值。 | |
id | number | 值标识符(递增计数器,在单个数据会话内唯一)。 | |
timestamp | number | (可选) 日志类型监控项的时间戳。 | |
source | string | (可选) 事件日志监控项的源值。 | |
severity | number | (可选) 事件日志监控项的严重性值。 | |
eventid | number | (可选) 事件日志监控项的事件ID值。 | |
state | string | (可选) 监控项状态: 0, 监控项_STATE_NORMAL 1, 监控项_STATE_NOTSUPPORTED |
|
lastlogsize | number | (可选) 日志类型监控项的最后日志大小。 | |
mtime | number | (可选) 日志类型监控项的修改时间。 | |
discovery data | array | (可选) 发现数据的arrayobjects。 | |
clock | number | 发现数据时间戳。 | |
druleid | number | 发现规则标识符。 | |
dcheckid | number | 发现检查标识符或发现规则数据的null值。 | |
type | number | 发现检查类型: -1 发现规则数据 0, SVC_SSH - SSH服务检查 1, SVC_LDAP - LDAP服务检查 2, SVC_SMTP - SMTP服务检查 3, SVC_FTP - FTP服务检查 4, SVC_HTTP - HTTP服务检查 5, SVC_POP - POP服务检查 6, SVC_NNTP - NNTP服务检查 7, SVC_IMAP - IMAP服务检查 8, SVC_TCP - TCP端口可用性检查 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服务检查 15, SVC_TELNET - Telnet可用性检查 |
|
ip | string | 主机IP地址。 | |
dns | string | 主机DNS名称。 | |
port | number | (可选) 服务端口号。 | |
key_ | string | (可选) 类型为9 SVC_AGENT的发现检查的监控项键 | |
value | string | (可选) 从服务接收的值,大多数服务可能为空。 | |
status | number | (可选) 服务状态: 0, DOBJECT_STATUS_UP - 服务正常 1, DOBJECT_STATUS_DOWN - 服务异常 |
|
autoregistration | array | (可选) 自动注册数据的arrayobjects。 | |
clock | number | 自动注册数据时间戳。 | |
主机 | string | 主机名。 | |
ip | string | (可选) 主机IP地址。 | |
dns | string | (可选) 从IP地址解析的DNS名称。 | |
port | string | (可选) 主机端口。 | |
主机_metadata | string | (可选) agent发送的主机元数据(基于HostMetadata或HostMetadataItem agent配置参数)。 | |
tasks | array | (可选) 任务的array。 | |
type | number | 任务类型: 0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - 远程命令结果 |
|
status | number | 远程命令执行状态: 0, ZBX_TM_REMOTE_COMMAND_COMPLETED - 远程命令成功完成 1, ZBX_TM_REMOTE_COMMAND_FAILED - 远程命令失败 |
|
error | string | (可选) 错误消息。 | |
parent_taskid | number | 父任务ID。 | |
more | number | (可选) 1 - 还有更多历史数据待发送。 | |
clock | number | (可选) 数据传输时间戳(秒)。 | |
ns | number | (可选) 数据传输时间戳(纳秒)。 | |
version | string | Proxyversion(<主版本>.<次版本>.<构建号>)。 | |
server→proxy: | |||
response | string | 请求成功信息('success'或'失败')。 | |
upload | string | 历史数据上传控制(历史数据、自动注册、主机可用性、网络发现)。 可能值: enabled - 正常操作 disabled - 服务器不接受数据(可能由于内部缓存超过限制) |
|
tasks | array | (可选) 任务的array。 | |
type | number | 任务类型: 1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - 远程命令 |
|
clock | number | 任务创建时间。 | |
ttl | number | 任务过期时间(秒)。 | |
commandtype | number | 远程命令类型: 0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - 使用自定义脚本 1, ZBX_SCRIPT_TYPE_IPMI - 使用IPMI 2, ZBX_SCRIPT_TYPE_SSH - 使用SSH 3, ZBX_SCRIPT_TYPE_TELNET - 使用Telnet 4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - 使用全局脚本(当前功能等同于自定义脚本) |
|
command | string | 要execute的远程命令。 | |
execute_on | number | 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) Port for Telnet and SSH commands. | |
authtype | number | (optional) Authentication type for SSH commands. | |
username | string | (optional) User name for Telnet and SSH commands. | |
password | string | (optional) Password for Telnet and SSH commands. | |
publickey | string | (optional) Public key for SSH commands. | |
privatekey | string | (optional) Private key for SSH commands. | |
parent_taskid | number | 父任务ID。 | |
hostid | number | 目标主机ID。 |
示例:
proxy→服务器:
{
"request": "proxy data",
"host": "Proxy #12",
"session": "12345678901234567890123456789012",
"interface availability": [
{
"interfaceid": 1,
"available": 1,
"error": ""
},
{
"interfaceid": 2,
"available": 2,
"error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
},
{
"interfaceid": 3,
"available": 1,
"error": ""
},
{
"interfaceid": 4,
"available": 1,
"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.4.0"
}
服务器→proxy:
{
"response": "success",
"upload": "enabled",
"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
}
]
}