Diffusion vers des systèmes externes
Aperçu
Il est possible de diffuser en continu les valeurs des éléments et les événements de Zabbix vers des systèmes externes via HTTP (voir les détails du protocole).
Le filtre de tags peut être utilisé pour diffuser en continu des sous-ensembles de valeurs d'éléments ou d'événements.
Deux types de processus du serveur Zabbix sont responsables de la diffusion des données : connector manager et connector worker.
Un élément interne de Zabbix zabbix[connector_queue] permet de surveiller le nombre de valeurs mises en file d'attente dans la file d'attente du connecteur.
Configuration
Les étapes suivantes sont nécessaires pour configurer la diffusion des données vers un système externe :
1. Disposer d’un système distant configuré pour recevoir les données de Zabbix. Les outils suivants sont disponibles à cet effet :
- Un exemple de récepteur simple qui consigne les informations reçues dans les fichiers
events.ndjsonethistory.ndjson. - Connecteur Kafka pour le serveur Zabbix - un serveur léger écrit en Go, conçu pour transférer les valeurs des éléments et les événements d’un serveur Zabbix vers un broker Kafka.
2. Définir le nombre requis de processus workers de connecteur dans Zabbix en ajustant le paramètre StartConnectors dans zabbix_server.conf.
Le nombre de processus workers de connecteur doit correspondre au nombre de connecteurs configuré dans l’interface Zabbix (ou lui être supérieur si le nombre de sessions simultanées est supérieur à 1).
Redémarrer ensuite le serveur Zabbix.
3. Configurer un nouveau connecteur dans l’interface Zabbix (Administration > Général > Connecteurs), puis recharger le cache du serveur avec la commande zabbix_server -R config_cache_reload.

Les champs obligatoires sont marqués d’un astérisque.
| Paramètre | Description |
|---|---|
| Nom | Saisir le nom du connecteur. |
| Type de données | Sélectionner le type de données à diffuser : Valeurs des éléments - diffuser les valeurs des éléments de Zabbix vers des systèmes externes ; Événements - diffuser les événements de Zabbix vers des systèmes externes. |
| URL | Saisir l’URL du récepteur. Les macros utilisateur sont prises en charge. |
| Filtre de tags | Exporter uniquement les valeurs des éléments ou les événements correspondant au filtre de tags. Si ce champ n’est pas défini, tout est exporté. Il est possible d’inclure ou d’exclure des tags et des valeurs de tags spécifiques. Plusieurs conditions peuvent être définies. La correspondance des noms de tags est toujours sensible à la casse. Plusieurs opérateurs sont disponibles pour chaque condition : Existe - inclure les noms de tags spécifiés ; Est égal à - inclure les noms et les valeurs de tags spécifiés (sensible à la casse) ; Contient - inclure les noms de tags spécifiés dont les valeurs contiennent la chaîne saisie (correspondance de sous-chaîne, insensible à la casse) ; N’existe pas - exclure les noms de tags spécifiés ; N’est pas égal à - exclure les noms et les valeurs de tags spécifiés (sensible à la casse) ; Ne contient pas - exclure les noms de tags spécifiés dont les valeurs contiennent la chaîne saisie (correspondance de sous-chaîne, insensible à la casse). Deux types de calcul sont disponibles pour les conditions : Et/Ou - toutes les conditions doivent être remplies ; les conditions ayant le même nom de tag sont regroupées avec la condition Ou ; Ou - une seule condition remplie suffit. |
| Type d’information | Sélectionner le type d’information (numérique (non signé), numérique (flottant), caractère, etc.) utilisé pour filtrer les valeurs des éléments que le connecteur doit diffuser. Ce champ est disponible si Type de données est défini sur « Valeurs des éléments ». |
| Authentification HTTP | Sélectionner l’option d’authentification : Aucune - aucune authentification n’est utilisée ; Basic - l’authentification Basic est utilisée ; NTLM - l’authentification NTLM (Windows NT LAN Manager) est utilisée ; Kerberos - l’authentification Kerberos est utilisée (voir également : Configuration de Kerberos avec Zabbix) ; Digest - l’authentification Digest est utilisée ; Bearer - l’authentification Bearer est utilisée. |
| Nom d’utilisateur | Saisir le nom d’utilisateur (255 caractères maximum). Les macros utilisateur sont prises en charge. Ce champ est disponible si Authentification HTTP est défini sur « Basic », « NTLM », « Kerberos » ou « Digest ». |
| Mot de passe | Saisir le mot de passe utilisateur (255 caractères maximum). Les macros utilisateur sont prises en charge. Ce champ est disponible si Authentification HTTP est défini sur « Basic », « NTLM », « Kerberos » ou « Digest ». |
| Jeton Bearer | Saisir le jeton Bearer. Les macros utilisateur sont prises en charge. Ce champ est disponible et obligatoire si Authentification HTTP est défini sur « Bearer ». |
| Configuration avancée | Cliquer sur l’en-tête Configuration avancée pour afficher les options de configuration avancées (voir ci-dessous). |
| Nombre maximal d’enregistrements par message | Indiquer le nombre maximal de valeurs ou d’événements pouvant être diffusés dans un même message. |
| Sessions simultanées | Sélectionner le nombre de processus d’envoi à exécuter pour ce connecteur. Jusqu’à 100 sessions peuvent être spécifiées ; la valeur par défaut est « 1 ». |
| Tentatives | Nombre de tentatives de diffusion des données. Jusqu’à 5 tentatives peuvent être spécifiées ; la valeur par défaut est « 1 ». |
| Intervalle entre les tentatives | Indiquer la durée pendant laquelle le connecteur doit attendre après une tentative infructueuse de diffusion des données. Une durée maximale de 10 s peut être spécifiée ; la valeur par défaut est « 5 s ». Ce champ est disponible si Tentatives est défini sur « 2 » ou plus. Les tentatives infructueuses sont celles pour lesquelles l’établissement de la connexion a échoué ou pour lesquelles le code de réponse HTTP n’est pas 200, 201, 202, 203 ou 204. Les nouvelles tentatives sont déclenchées en cas d’erreurs de communication ou lorsque le code de réponse HTTP n’est pas 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415 ou 422. Les redirections sont suivies : ainsi, 302 -> 200 est une réponse positive, tandis que 302 -> 503 déclenchera une nouvelle tentative. |
| Délai d’expiration | Indiquer le délai d’expiration du message (1 à 60 secondes, 5 secondes par défaut). Les suffixes de durée sont pris en charge (par exemple, 30s, 1m). Les macros utilisateur sont prises en charge. |
| Proxy HTTP | Vous pouvez spécifier un proxy HTTP au format suivant :[protocol://][username[:password]@]proxy.example.com[:port]Les macros utilisateur sont prises en charge. Le préfixe facultatif protocol:// peut être utilisé pour spécifier d’autres protocoles de proxy (la prise en charge du préfixe de protocole a été ajoutée dans cURL 7.21.7). Si aucun protocole n’est spécifié, le proxy est traité comme un proxy HTTP. Le port 1080 est utilisé par défaut.Si Proxy HTTP est spécifié, le proxy remplace les variables d’environnement associées aux proxies telles que http_proxy et HTTPS_PROXY. S’il n’est pas spécifié, le proxy ne remplace pas les variables d’environnement associées aux proxies. La valeur saisie est transmise telle quelle, sans aucune vérification de cohérence.Vous pouvez également saisir l’adresse d’un proxy SOCKS. Si vous spécifiez un protocole incorrect, le connecteur ne pourra pas diffuser les valeurs des éléments ou les événements de Zabbix. Notez que seule l’authentification simple est prise en charge avec un proxy HTTP. |
| Vérifier le pair SSL | Cocher la case pour vérifier le certificat SSL du serveur web. Le certificat du serveur est automatiquement récupéré depuis l’emplacement système des autorités de certification (CA). Vous pouvez remplacer l’emplacement des fichiers CA à l’aide du paramètre de configuration du serveur Zabbix ou du proxy SSLCALocation. |
| Vérifier l’hôte SSL | Cocher la case pour vérifier que le champ Common Name ou le champ Subject Alternate Name du certificat du serveur web correspond. Cette option définit l’option cURL CURLOPT_SSL_VERIFYHOST. |
| Fichier de certificat SSL | Nom du fichier de certificat SSL utilisé pour l’authentification du client. Le fichier de certificat doit être au format PEM1. Les macros utilisateur sont prises en charge. Si le fichier de certificat contient également la clé privée, laisser le champ Fichier de clé SSL vide. Si la clé est chiffrée, spécifier le mot de passe dans le champ Mot de passe de la clé SSL. Le répertoire contenant ce fichier est spécifié par le paramètre de configuration du serveur Zabbix ou du proxy SSLCertLocation. |
| Fichier de clé SSL | Nom du fichier de clé privée SSL utilisé pour l’authentification du client. Le fichier de clé privée doit être au format PEM1. Les macros utilisateur sont prises en charge. Le répertoire contenant ce fichier est spécifié par le paramètre de configuration du serveur Zabbix ou du proxy SSLKeyLocation. |
| Mot de passe de la clé SSL | Mot de passe du fichier de clé privée SSL. Les macros utilisateur sont prises en charge. |
| Description | Saisir la description du connecteur. |
| Activé | Cocher la case pour activer le connecteur. |
Lorsque le connecteur Kafka est configuré avec une liste d’adresses de brokers d’amorçage séparées par des virgules (par exemple, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), le client Kafka se connecte au(x) broker(s) qui répond(ent) en premier et utilise leurs métadonnées de cluster.
Si la liste contient des adresses provenant de différents clusters Kafka, seul le cluster répondant le plus rapidement sera utilisé et les autres adresses seront consignées comme indisponibles ; par conséquent, des avertissements au démarrage tels que le suivant peuvent apparaître même si le connecteur est connecté :
kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail
Dans certains environnements (réseaux privés, réseaux de conteneurs ou configurations DNS/hosts non standard), les noms d’hôte ou les adresses IP peuvent être résolus vers des adresses de bouclage (par exemple, 127.0.0.1/localhost) ou normalisés par le client, ce qui peut rendre ces avertissements trompeurs.
Pour réduire la confusion, vérifiez que toutes les adresses Kafka.URL appartiennent au même cluster Kafka, vérifiez la résolution DNS depuis l’hôte du connecteur ainsi que les advertised.listeners des brokers, et privilégiez les adresses qui se résolvent vers l’adresse annoncée du broker.
Protocole
La communication entre le serveur et le receiver s'effectue via HTTP en utilisant l'API REST, NDJSON, "Content-Type: application/x-ndjson".
Pour plus de détails, consultez Newline-delimited JSON export protocol.
Requête du serveur
Exemple de diffusion en continu des valeurs d'élément :
POST /v1/history HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 628
Content-Type: application/x-ndjson
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":800155804,"value":0,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":44457,"name":"foo","clock":1673454303,"ns":832290669,"value":1,"type":3}
{"host":{"host":"Zabbix server","name":"Zabbix server"},"groups":["Zabbix servers"],"item_tags":[{"tag":"bar","value":"test"}],"itemid":44458,"name":"bar","clock":1673454303,"ns":867770366,"value":123,"type":3}
Exemple de diffusion en continu des événements :
POST /v1/events HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: deflate, gzip, br, zstd
Content-Length: 333
Content-Type: application/x-ndjson
{"clock":1673454303,"ns":800155804,"value":1,"eventid":5,"name":"trigger for foo being 0","severity":0,"hosts":[{"host":"Zabbix server","name":"Zabbix server"}],"groups":["Zabbix servers"],"tags":[{"tag":"foo_trig","value":"test"},{"tag":"foo","value":"test"}]}
{"clock":1673454303,"ns":832290669,"value":0,"eventid":6,"p_eventid":5}
Réponse du récepteur
La réponse se compose du code d'état de la réponse HTTP et de la charge utile JSON. Le code d'état de la réponse HTTP doit être "200", "201", "202", "203" ou "204" pour les requêtes traitées avec succès, sinon il indique un échec de la requête.
Exemple de réussite :
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 10:13:04 GMT
Content-Length: 23
{"response":"success"}
Exemple avec des erreurs :
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Tue, 21 Apr 2026 12:15:01 GMT
Content-Length: 55
{"error":"invalid character '{' after top-level value"}