1 Protocole d'échange de données serveur-proxy

Aperçu

L'échange de données serveur - proxy est basé sur le format JSON.

Les messages de requête et de réponse doivent commencer par un en-tête et une longueur des données.

Proxy passif

Configuration de la requête

Le serveur enverra d'abord une requête vide proxy config. Cette requête est envoyée toutes les ProxyConfigFrequency (secondes du paramètre de configuration du serveur).

Le proxy répond avec la version actuelle du proxy, le jeton de session et la révision de la configuration. Le serveur répond avec les données de configuration qui doivent être mises à jour.

name value type description
server→proxy:
request string 'proxy config'
proxy→server:
version string Version du proxy (<major>.<minor>.<build>).
session string Jeton de session de configuration du proxy.
config_revision number Révision de la configuration du proxy.
server→proxy:
full_sync number 1 - si les données de configuration complètes sont envoyées ; absent - sinon (optionnel).
data array Objet des données de table. Absent si la configuration n'a pas été modifiée (optionnel).
<table> object Un ou plusieurs objets avec les données de <table> (optionnel, selon les modifications).
fields array Tableau des noms de champs.
- string Nom du champ.
data array Tableau de lignes.
- array Tableau de colonnes.
- string,number Valeur de colonne avec un type dépendant du type de colonne dans le schéma de la base de données.
macro.secrets object Informations sur les macros secrètes, absent s'il n'y a aucun changement dans les macros du coffre-fort (optionnel).
config_revision number Révision du cache de configuration - envoyée avec les données de configuration (optionnel).
del_hostids array Tableau des hostids supprimés (optionnel).
- number Identifiant de l'hôte.
del_macro_hostids array Tableau des hostids dont toutes les macros ont été supprimées (optionnel).
- number Identifiant de l'hôte.
proxy→server:
response string Informations de succès de la requête ('success' ou 'failed').
version string Version du proxy (<major>.<minor>.<build>).

Exemple :

server→proxy:

{
  "request":"proxy config"
} 

proxy→server:

{
  "version": "7.0.0",
  "session": "0033124949800811e5686dbfd9bcea98",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "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": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "File systems for discovery"],
                [2, "Network interfaces for discovery"],
                [3, "Storage devices for SNMP discovery"],
                [4, "Windows service names for discovery"],
                [5, "Windows service startup states for discovery"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "config": {
            "fields": ["configid", "snmptrap_logging", "hk_history_global", "hk_history", "autoreg_tls_accept"],
            "data": [
                [1, 1, 0, "90d", 1]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}

proxy→server:

{
  "response": "success",
  "version": "7.0.0"
}
Demande de données

La requête proxy data est utilisée pour obtenir la disponibilité des interfaces d'hôte, les données historiques, de découverte et d'autodétection depuis le proxy. Cette requête est envoyée toutes les ProxyDataFrequency secondes (paramètre de configuration du serveur).

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Jeton de session de données.
interface availability array (optional) Tableau d'objets de disponibilité des interfaces.
interfaceid number Identifiant de l'interface.
available number Disponibilité de l'interface :

0, INTERFACE_AVAILABLE_UNKNOWN - inconnue
1, INTERFACE_AVAILABLE_TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - indisponible
error string Message d'erreur de l'interface ou chaîne vide.
history data array (optional) Tableau d'objets de données historiques.
itemid number Identifiant de l'élément.
clock number Horodatage de la valeur de l'élément (secondes).
ns number Horodatage de la valeur de l'élément (nanosecondes).
value string (optional) Valeur de l'élément.
id number Identifiant de la valeur (compteur croissant, unique au sein d'une session de données).
timestamp number (optional) Horodatage des éléments de type journal.
source string (optional) Valeur de source de l'élément eventlog.
severity number (optional) Valeur de gravité de l'élément eventlog.
eventid number (optional) Valeur eventid de l'élément eventlog.
state string (optional) État de l'élément :
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Dernière taille de journal des éléments de type journal.
mtime number (optional) Heure de modification des éléments de type journal.
discovery data array (optional) Tableau d'objets de données de découverte.
clock number Horodatage des données de découverte.
druleid number Identifiant de la règle de découverte.
dcheckid number Identifiant du contrôle de découverte ou null pour les données de règle de découverte.
type number Type de contrôle de découverte :

-1 données de règle de découverte
0, SVC_SSH - contrôle du service SSH
1, SVC_LDAP - contrôle du service LDAP
2, SVC_SMTP - contrôle du service SMTP
3, SVC_FTP - contrôle du service FTP
4, SVC_HTTP - contrôle du service HTTP
5, SVC_POP - contrôle du service POP
6, SVC_NNTP - contrôle du service NNTP
7, SVC_IMAP - contrôle du service IMAP
8, SVC_TCP - contrôle de la disponibilité du port TCP
9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - contrôle du service HTTPS
15, SVC_TELNET - contrôle de la disponibilité Telnet
ip string Adresse IP de l'hôte.
dns string Nom DNS de l'hôte.
port number (optional) Numéro de port du service.
key_ string (optional) Clé de l'élément pour le contrôle de découverte de type 9 SVC_AGENT
value string (optional) Valeur reçue du service, peut être vide pour la plupart des services.
status number (optional) État du service :

0, DOBJECT_STATUS_UP - service actif
1, DOBJECT_STATUS_DOWN - service inactif
auto registration array (optional) Tableau d'objets de données d'autodétection.
clock number Horodatage des données d'autodétection.
host string Nom de l'hôte.
ip string (optional) Adresse IP de l'hôte.
dns string (optional) Nom DNS résolu à partir de l'adresse IP.
port string (optional) Port de l'hôte.
host_metadata string (optional) Métadonnées de l'hôte envoyées par l'agent (selon le paramètre de configuration de l'agent HostMetadata ou HostMetadataItem).
tasks array (optional) Tableau de tâches.
type number Type de tâche :

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - résultat de commande distante
status number État d'exécution de la commande distante :

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - commande distante exécutée avec succès
1, ZBX_TM_REMOTE_COMMAND_FAILED - échec de la commande distante
error string (optional) Message d'erreur.
parent_taskid number ID de la tâche parente.
more number (optional) 1 - il reste d'autres données historiques à envoyer.
clock number (optional) Horodatage du transfert de données (secondes).
ns number (optional) Horodatage du transfert de données (nanosecondes).
version string Version du proxy (<major>.<minor>.<build>).
server→proxy:
response string Information de succès de la requête ('success' ou 'failed').
tasks array (optional) Tableau de tâches.
type number Type de tâche :

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - commande distante
clock number Heure de création de la tâche.
ttl number Temps en secondes après lequel la tâche expire.
commandtype number Type de commande distante :

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - utiliser un script personnalisé
1, ZBX_SCRIPT_TYPE_IPMI - utiliser IPMI
2, ZBX_SCRIPT_TYPE_SSH - utiliser SSH
3, ZBX_SCRIPT_TYPE_TELNET - utiliser Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - utiliser un script global (actuellement fonctionnellement équivalent à un script personnalisé)
command string Commande distante à exécuter.
execute_on number Cible d'exécution pour les scripts personnalisés :

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - exécuter le script sur l'agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - exécuter le script sur le serveur
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - exécuter le script sur le proxy
port number (optional) Port pour les commandes Telnet et SSH.
authtype number (optional) Type d'authentification pour les commandes SSH.
username string (optional) Nom d'utilisateur pour les commandes Telnet et SSH.
password string (optional) Mot de passe pour les commandes Telnet et SSH.
publickey string (optional) Clé publique pour les commandes SSH.
privatekey string (optional) Clé privée pour les commandes SSH.
parent_taskid number ID de la tâche parente.
hostid number ID de l'hôte cible.

Exemple :

server→proxy :

{
  "request": "proxy data"
}

proxy→server :

{
    "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":"7.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
      }
  ]
}
Demande de tâches

L'échange proxy tasks gère la livraison et l'accusé de réception des tâches de commande à distance entre le serveur et un proxy passif. Lorsque le serveur interroge le proxy pour obtenir les résultats des tâches, il envoie une demande vide proxy tasks à l'intervalle défini par ProxyDataFrequency. Le proxy répond avec sa version actuelle et tous les résultats de tâches en attente (y compris les horodatages). Le serveur accuse ensuite réception en renvoyant une response et peut inclure de nouvelles tâches à exécuter par le proxy.

name value type description
server→proxy:
request string 'proxy tasks'
proxy→server:
version string Version du proxy (<major>.<minor>.<build>).
clock number (optional) Horodatage du transfert de données (secondes).
ns number (optional) Horodatage du transfert de données (nanosecondes).
server→proxy:
response string Informations de réussite de la demande ('success' ou 'failed').

Exemple :

server→proxy:

{
  "request":"proxy tasks"
}

proxy→server:

{
  "version":"7.0.0",
  "clock":1721059872,
  "ns":848141522
}

server→proxy:

{
  "response":"success"
}

Proxy actif

Requête de configuration

La requête proxy config est envoyée par un proxy actif afin d’obtenir les données de configuration du proxy. Cette requête est envoyée toutes les ProxyConfigFrequency secondes (paramètre de configuration du proxy).

name value type description
proxy→server:
request string 'proxy config'
host string
Nom du proxy.
version string Version du proxy (<major>.<minor>.<build>).
session string Jeton de session de configuration du proxy.
config_revision number Révision de la configuration du proxy.
hostmap_revision number Révision actuelle du mappage hôte-vers-proxy.
server→proxy:
full_sync number 1 - si toutes les données de configuration sont envoyées, absent sinon (optionnel).
data array Objet des données de table. Absent si la configuration n’a pas été modifiée (optionnel).
<table> object Un ou plusieurs objets avec les données de <table> (optionnel, selon les modifications).
fields array Tableau des noms de champs.
- string Nom du champ.
data array Tableau de lignes.
- array Tableau de colonnes.
- string,number Valeur de colonne, avec un type dépendant du type de colonne dans le schéma de base de données.
macro.secrets object Informations sur les macros secrètes, absent s’il n’y a aucun changement dans les macros du coffre-fort (optionnel).
proxy_group string Nom du groupe de proxy auquel appartient le proxy.
config_revision number Révision du cache de configuration - envoyée avec les données de configuration (optionnel).
del_hostids array Tableau des hostids supprimés (optionnel).
- number Identifiant d’hôte.
del_macro_hostids array Tableau des hostids dont toutes les macros ont été supprimées (optionnel).
- number Identifiant d’hôte.

Exemple :

proxy→server:

{
  "request": "proxy config",
  "host": "Zabbix proxy",
  "version":"7.0.0",
  "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
  "config_revision": 0
}

server→proxy:

{
    "full_sync": 1,
    "data": {
        "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": [
                [10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
            ]
        },
        "interface": {
            "fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
            "data": [
                [1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
            ]
        },
        "interface_snmp": {
            "fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
            "data": []
        },
        "host_inventory": {
            "fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
            "data": [
                [10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
            ]
        },
        "items": {
            "fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
            "data": [
                [44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
                [44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
            ]
        },
        "item_rtdata": {
            "fields": ["itemid", "lastlogsize", "mtime"],
            "data": [
                [44161, 0, 0],
                [44162, 0, 0]
            ]
        },
        "item_preproc": {
            "fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
            "data": []
        },
        "item_parameter": {
            "fields": ["item_parameterid", "itemid", "name", "value"],
            "data": []
        },
        "globalmacro": {
            "fields": ["globalmacroid", "macro", "value", "type"],
            "data": [
                [2, "{$SNMP_COMMUNITY}", "public", 0]
            ]
        },
        "hosts_templates": {
            "fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
            "data": []
        },
        "hostmacro": {
            "fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
            "data": [
                [5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
            ]
        },
        "drules": {
            "fields": ["druleid", "name", "iprange", "delay"],
            "data": [
                [2, "Local network", "127.0.0.1", "10s"]
            ]
        },
        "dchecks": {
            "fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
            "data": [
                [2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
            ]
        },
        "regexps": {
            "fields": ["regexpid", "name"],
            "data": [
                [1, "Systèmes de fichiers pour la découverte"],
                [2, "Interfaces réseau pour la découverte"],
                [3, "Périphériques de stockage pour la découverte SNMP"],
                [4, "Noms des services Windows pour la découverte"],
                [5, "États de démarrage des services Windows pour la découverte"]
            ]
        },
        "expressions": {
            "fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
            "data": [
                [1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
                [3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
                [5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
                [6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
                [7, 2, "^Software Loopback Interface", 4, ",", 1],
                [8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
                [9, 2, "^NULL[0-9.]*$", 4, ",", 1],
                [10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
                [11, 2, "^[Ss]ystem$", 4, ",", 1],
                [12, 2, "^Nu[0-9.]*$", 4, ",", 1]
            ]
        },
        "config": {
            "fields": ["configid", "snmptrap_logging", "hk_history_global", "hk_history", "autoreg_tls_accept"],
            "data": [
                [1, 1, 0, "90d", 1]
            ]
        },
        "httptest": {
            "fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
            "data": []
        },
        "httptestitem": {
            "fields": ["httptestitemid", "httptestid", "itemid", "type"],
            "data": []
        },
        "httptest_field": {
            "fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
            "data": []
        },
        "httpstep": {
            "fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
            "data": []
        },
        "httpstepitem": {
            "fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
            "data": []
        },
        "httpstep_field": {
            "fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
            "data": []
        },
        "config_autoreg_tls": {
            "fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
            "data": [
                [1, "", ""]
            ]
        }
    },
    "macro.secrets": {
        "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
            "Content": "738"
        }
    },
    "config_revision": 2
}
Demande de données

La requête proxy data est envoyée par le proxy afin de fournir les données de disponibilité des interfaces d'hôte, d'historique, de découverte et d'autoréenregistrement. Cette requête est envoyée toutes les DataSenderFrequency secondes (paramètre de configuration du proxy). Notez que le proxy actif interrogera toujours le serveur Zabbix chaque seconde pour les tâches de commande à distance (avec une requête proxy data vide).

name value type description
proxy→server:
request string 'proxy data'
host string Nom du proxy.
session string Jeton de session de données.
interface availability array (optional) Tableau d'objets de disponibilité des interfaces.
interfaceid number Identifiant de l'interface.
available number Disponibilité de l'interface:

0, INTERFACE_AVAILABLE_UNKNOWN - inconnue
1, INTERFACE_AVAILABLE_TRUE - disponible
2, INTERFACE_AVAILABLE_FALSE - indisponible
error string Message d'erreur de l'interface ou chaîne vide.
history data array (optional) Tableau d'objets de données d'historique.
itemid number Identifiant de l'élément.
clock number Horodatage de la valeur de l'élément (secondes).
ns number Horodatage de la valeur de l'élément (nanosecondes).
value string (optional) Valeur de l'élément.
id number Identifiant de la valeur (compteur croissant, unique au sein d'une session de données).
timestamp number (optional) Horodatage des éléments de type journal.
source string (optional) Valeur de source de l'élément eventlog.
severity number (optional) Valeur de gravité de l'élément eventlog.
eventid number (optional) Valeur eventid de l'élément eventlog.
state string (optional) État de l'élément:
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (optional) Dernière taille de journal des éléments de type journal.
mtime number (optional) Heure de modification des éléments de type journal.
discovery data array (optional) Tableau d'objets de données de découverte.
clock number Horodatage des données de découverte.
druleid number Identifiant de la règle de découverte.
dcheckid number Identifiant du contrôle de découverte ou null pour les données de règle de découverte.
type number Type de contrôle de découverte:

-1 données de règle de découverte
0, SVC_SSH - contrôle du service SSH
1, SVC_LDAP - contrôle du service LDAP
2, SVC_SMTP - contrôle du service SMTP
3, SVC_FTP - contrôle du service FTP
4, SVC_HTTP - contrôle du service HTTP
5, SVC_POP - contrôle du service POP
6, SVC_NNTP - contrôle du service NNTP
7, SVC_IMAP - contrôle du service IMAP
8, SVC_TCP - contrôle de disponibilité du port TCP
9, SVC_AGENT - agent Zabbix
10, SVC_SNMPv1 - agent SNMPv1
11, SVC_SNMPv2 - agent SNMPv2
12, SVC_ICMPPING - ping ICMP
13, SVC_SNMPv3 - agent SNMPv3
14, SVC_HTTPS - contrôle du service HTTPS
15, SVC_TELNET - contrôle de disponibilité Telnet
ip string Adresse IP de l'hôte.
dns string Nom DNS de l'hôte.
port number (optional) Numéro de port du service.
key_ string (optional) Clé d'élément pour le contrôle de découverte de type 9 SVC_AGENT
value string (optional) Valeur reçue du service, peut être vide pour la plupart des services.
status number (optional) État du service:

0, DOBJECT_STATUS_UP - service UP
1, DOBJECT_STATUS_DOWN - service DOWN
autoregistration array (optional) Tableau d'objets de données d'autoréenregistrement.
clock number Horodatage des données d'autoréenregistrement.
host string Nom de l'hôte.
ip string (optional) Adresse IP de l'hôte.
dns string (optional) Nom DNS résolu à partir de l'adresse IP.
port string (optional) Port de l'hôte.
host_metadata string (optional) Métadonnées de l'hôte envoyées par l'agent (selon le paramètre de configuration de l'agent HostMetadata ou HostMetadataItem).
tasks array (optional) Tableau de tâches.
type number Type de tâche:

0, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND_RESULT - résultat de commande à distance
status number État d'exécution de la commande à distance:

0, ZBX_TM_REMOTE_COMMAND_COMPLETED - commande à distance exécutée avec succès
1, ZBX_TM_REMOTE_COMMAND_FAILED - échec de la commande à distance
error string (optional) Message d'erreur.
parent_taskid number ID de la tâche parente.
more number (optional) 1 - il y a d'autres données d'historique à envoyer
clock number (optional) Horodatage du transfert de données (secondes).
ns number (optional) Horodatage du transfert de données (nanosecondes).
version string Version du proxy (<major>.<minor>.<build>).
server→proxy:
response string Information de succès de la requête ('success' ou 'failed').
upload string Contrôle de l'envoi des données historiques (historique, autoréenregistrement, disponibilité des hôtes, découverte réseau).

Valeurs possibles:
enabled - fonctionnement normal
disabled - le serveur n'accepte pas les données (éventuellement en raison d'un dépassement du cache interne)
tasks array (optional) Tableau de tâches.
type number Type de tâche:

1, ZBX_TM_TASK_PROCESS_REMOTE_COMMAND - commande à distance
clock number Heure de création de la tâche.
ttl number Temps en secondes après lequel la tâche expire.
commandtype number Type de commande à distance:

0, ZBX_SCRIPT_TYPE_CUSTOM_SCRIPT - utiliser un script personnalisé
1, ZBX_SCRIPT_TYPE_IPMI - utiliser IPMI
2, ZBX_SCRIPT_TYPE_SSH - utiliser SSH
3, ZBX_SCRIPT_TYPE_TELNET - utiliser Telnet
4, ZBX_SCRIPT_TYPE_GLOBAL_SCRIPT - utiliser un script global (actuellement fonctionnellement équivalent à un script personnalisé)
command string Commande à distance à exécuter.
execute_on number Cible d'exécution pour les scripts personnalisés:

0, ZBX_SCRIPT_EXECUTE_ON_AGENT - exécuter le script sur l'agent
1, ZBX_SCRIPT_EXECUTE_ON_SERVER - exécuter le script sur le serveur
2, ZBX_SCRIPT_EXECUTE_ON_PROXY - exécuter le script sur le proxy
port number (optional) Port pour les commandes Telnet et SSH.
authtype number (optional) Type d'authentification pour les commandes SSH.
username string (optional) Nom d'utilisateur pour les commandes Telnet et SSH.
password string (optional) Mot de passe pour les commandes Telnet et SSH.
publickey string (optional) Clé publique pour les commandes SSH.
privatekey string (optional) Clé privée pour les commandes SSH.
parent_taskid number ID de la tâche parente.
hostid number ID de l'hôte cible.

Exemple:

proxy→server:

{
    "request": "proxy data",
    "host": "Zabbix proxy",
    "session": "818cdd1b537bdc5e50c09ed4969235b6",
    "interface availability": [{
        "interfaceid": 1,
        "available": 1,
        "error": ""
    }],
    "history data": [{
        "id": 1114,
        "itemid": 44162,
        "clock": 1665730632,
        "ns": 798953105,
        "value": "1"
    }, {
        "id": 1115,
        "itemid": 44161,
        "clock": 1665730633,
        "ns": 811684663,
        "value": "58"
    }],
    "auto registration": [{
        "clock": 1665730633,
        "host": "Zabbix server",
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": "10053",
        "host_metadata": "58",
        "tls_accepted": 1
    }],
    "discovery data": [{
        "clock": 1665732232,
        "drule": 2,
        "dcheck": 2,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "port": 10052,
        "status": 1
    }, {
        "clock": 1665732232,
        "drule": 2,
        "dcheck": null,
        "ip": "127.0.0.1",
        "dns": "localhost",
        "status": 1
    }],
    "host data": [{
        "hostid": 10084,
        "active_status": 1
    }],
    "tasks": [{
        "type": 3,
        "clock": 1665730985,
        "ttl": 0,
        "status": -1,
        "info": "Remote commands are not enabled",
        "parent_taskid": 3
    }],
    "version": "7.0.0",
    "clock": 1665730643,
    "ns": 65389964
}

server→proxy:

{
    "upload": "enabled",
    "response": "success",
    "tasks": [{
        "type": 2,
        "clock": 1665730986,
        "ttl": 600,
        "commandtype": 0,
        "command": "ping -c 3 127.0.0.1; case $? in [01]) true;; *) false;; esac",
        "execute_on": 2,
        "port": 0,
        "authtype": 0,
        "username": "",
        "password": "",
        "publickey": "",
        "privatekey": "",
        "alertid": 0,
        "parent_taskid": 4,
        "hostid": 10084
    }]
}