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