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

Requête de configuration

Le serveur enverra d'abord une requête proxy config vide. Cette requête est envoyée toutes les ProxyConfigFrequency secondes (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 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 configuration du proxy.
server→proxy:
full_sync number 1 - si les données de configuration complètes sont envoyées ; absent - sinon (facultatif).
data array Objet des données de table. Absent si la configuration n'a pas été modifiée (facultatif).
<table> object Un ou plusieurs objets avec les données de <table> (facultatif, selon les modifications).
fields array Tableau des noms de champs.
- string Nom du champ.
data array Tableau des lignes.
- array Tableau des 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 aucune modification dans les macros du coffre-fort (facultatif).
config_revision number Révision du cache de configuration - envoyée avec les données de configuration (facultatif).
del_hostids array Tableau des hostid supprimés (facultatif).
- number Identifiant d'hôte.
del_macro_hostids array Tableau des hostid dont toutes les macros ont été supprimées (facultatif).
- number Identifiant d'hôte.
proxy→server:
response string Informations sur le 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": "8.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]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "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": "8.0.0"
}
Requête de données

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

name value type description
server→proxy:
request string 'proxy data'
proxy→server:
session string Jeton de session des données.
interface availability array (optional) Tableau d’objets de données 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 dans une session de données).
timestamp number (optional) Horodatage des éléments de type journal.
source string (optional) Valeur 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 de la vérification de découverte ou null pour les données de règle de découverte.
type number Type de vérification de découverte :

-1 données de règle de découverte
0, SVC_SSH - vérification du service SSH
1, SVC_LDAP - vérification du service LDAP
2, SVC_SMTP - vérification du service SMTP
3, SVC_FTP - vérification du service FTP
4, SVC_HTTP - vérification du service HTTP
5, SVC_POP - vérification du service POP
6, SVC_NNTP - vérification du service NNTP
7, SVC_IMAP - vérification du service IMAP
8, SVC_TCP - vérification 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 - vérification du service HTTPS
15, SVC_TELNET - vérification 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 une vérification 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
auto registration array (optional) Tableau d’objets de données d’auto-enregistrement.
clock number Horodatage des données d’auto-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 (basées sur 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 terminé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 y a davantage de 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 réussite 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":"8.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
      }
  ]
}
Requête 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 requête proxy tasks vide à 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 (facultatif) Horodatage du transfert de données (secondes).
ns number (facultatif) Horodatage du transfert de données (nanosecondes).
server→proxy:
response string Information de réussite de la requête ('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-proxy.
server→proxy:
full_sync number 1 - si les données de configuration complètes sont envoyées, absent sinon (facultatif).
data array Objet des données de table. Absent si la configuration n’a pas été modifiée (facultatif).
<table> object Un ou plusieurs objets avec les données de <table> (facultatif, selon les modifications).
fields array Tableau des noms de champs.
- string Nom du champ.
data array Tableau des lignes.
- array Tableau des 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 aucune modification dans les macros du coffre-fort (facultatif).
proxy_group string Nom du groupe de proxys auquel appartient le proxy.
config_revision number Révision du cache de configuration - envoyée avec les données de configuration (facultatif).
del_hostids array Tableau des hostids supprimés (facultatif).
- number Identifiant d’hôte.
del_macro_hostids array Tableau des hostids dont toutes les macros ont été supprimées (facultatif).
- number Identifiant d’hôte.

Exemple :

proxy→server:

{
  "request": "proxy config",
  "host": "Zabbix proxy",
  "version":"8.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, "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]
            ]
        },
        "settings": {
            "fields": ["name", "type", "value_str", "value_int"],
            "data": [
                ["autoreg_tls_accept", 2, "", 1],
                ["hk_history_global", 2, "", 0],
                ["snmptrap_logging", 2, "", 1],
                ["proxy_secrets_provider", 2, "", 0],
                ["hk_history", 1, "31d", 0],
                ["timeout_db_monitor", 1, "3s", 0],
                ["timeout_external_check", 1, "3s", 0],
                ["timeout_http_agent", 1, "3s", 0],
                ["timeout_simple_check", 1, "3s", 0],
                ["timeout_snmp_agent", 1, "3s", 0],
                ["timeout_ssh_agent", 1, "3s", 0],
                ["timeout_telnet_agent", 1, "3s", 0],
                ["timeout_zabbix_agent", 1, "3s", 0],
                ["timeout_browser", 1, "30s", 0]
            ]
        },
        "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
}
Requête de données

La requête proxy data est envoyée par le proxy pour fournir les données de disponibilité des interfaces d’hôte, d’historique, de découverte et d’auto-enregistrement. Cette requête est envoyée toutes les DataSenderFrequency secondes (paramètre de configuration du proxy). Notez qu’un proxy actif interrogera tout de même le serveur Zabbix chaque seconde pour les tâches de commande distante (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 des données.
interface availability array (facultatif) Tableau d’objets de données 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 (facultatif) 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 (facultatif) Valeur de l’élément.
id number Identifiant de la valeur (compteur croissant, unique dans une session de données).
timestamp number (facultatif) Horodatage des éléments de type journal.
source string (facultatif) Valeur source de l’élément eventlog.
severity number (facultatif) Valeur de sévérité de l’élément eventlog.
eventid number (facultatif) Valeur eventid de l’élément eventlog.
state string (facultatif) État de l’élément :
0, ITEM_STATE_NORMAL
1, ITEM_STATE_NOTSUPPORTED
lastlogsize number (facultatif) Dernière taille du journal des éléments de type journal.
mtime number (facultatif) Heure de modification des éléments de type journal.
discovery data array (facultatif) 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 de la vérification de découverte ou null pour les données de règle de découverte.
type number Type de vérification de découverte :

-1 données de règle de découverte
0, SVC_SSH - vérification du service SSH
1, SVC_LDAP - vérification du service LDAP
2, SVC_SMTP - vérification du service SMTP
3, SVC_FTP - vérification du service FTP
4, SVC_HTTP - vérification du service HTTP
5, SVC_POP - vérification du service POP
6, SVC_NNTP - vérification du service NNTP
7, SVC_IMAP - vérification du service IMAP
8, SVC_TCP - vérification 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 - vérification du service HTTPS
15, SVC_TELNET - vérification de disponibilité Telnet
ip string Adresse IP de l’hôte.
dns string Nom DNS de l’hôte.
port number (facultatif) Numéro de port du service.
key_ string (facultatif) Clé d’élément pour une vérification de découverte de type 9 SVC_AGENT
value string (facultatif) Valeur reçue du service, peut être vide pour la plupart des services.
status number (facultatif) État du service :

0, DOBJECT_STATUS_UP - service UP
1, DOBJECT_STATUS_DOWN - service DOWN
autoregistration array (facultatif) Tableau d’objets de données d’auto-enregistrement.
clock number Horodatage des données d’auto-enregistrement.
host string Nom de l’hôte.
ip string (facultatif) Adresse IP de l’hôte.
dns string (facultatif) Nom DNS résolu à partir de l’adresse IP.
port string (facultatif) Port de l’hôte.
host_metadata string (facultatif) Métadonnées d’hôte envoyées par l’agent (sur la base du paramètre de configuration de l’agent HostMetadata ou HostMetadataItem).
tasks array (facultatif) 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 terminée avec succès
1, ZBX_TM_REMOTE_COMMAND_FAILED - échec de la commande distante
error string (facultatif) Message d’erreur.
parent_taskid number ID de la tâche parente.
more number (facultatif) 1 - il y a davantage de données d’historique à envoyer
clock number (facultatif) Horodatage du transfert de données (secondes).
ns number (facultatif) Horodatage du transfert de données (nanosecondes).
version string Version du proxy (<major>.<minor>.<build>).
server→proxy:
response string Information de réussite de la requête (success ou failed).
upload string Contrôle du téléversement des données historiques (historique, auto-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 de la limite du cache interne)
tasks array (facultatif) 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 (facultatif) Port pour les commandes Telnet et SSH.
authtype number (facultatif) Type d’authentification pour les commandes SSH.
username string (facultatif) Nom d’utilisateur pour les commandes Telnet et SSH.
password string (facultatif) Mot de passe pour les commandes Telnet et SSH.
publickey string (facultatif) Clé publique pour les commandes SSH.
privatekey string (facultatif) 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": "8.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
    }]
}