Transmisión a sistemas externos

Resumen

Es posible transmitir valores de item y eventos desde Zabbix a sistemas externos a través de HTTP (consulte los detalles del protocolo).

El filtro de etiquetas puede utilizarse para transmitir subconjuntos de valores de item o eventos.

Dos tipos de procesos de Zabbix server son responsables de la transmisión de datos: connector manager y connector worker. Un item interno de Zabbix, zabbix[connector_queue], permite supervisar la cantidad de valores encolados en la cola del conector.

Configuración

Los siguientes pasos son necesarios para configurar la transmisión de datos a un sistema externo:

1. Configure un sistema remoto para recibir datos de Zabbix. Para ello, están disponibles las siguientes herramientas:

  • Un ejemplo de un receptor simple que registra la información recibida en los archivos events.ndjson y history.ndjson.
  • Kafka connector for Zabbix server: un server ligero escrito en Go, diseñado para reenviar valores de item y eventos desde un server de Zabbix a un broker de Kafka.

2. Establezca el número necesario de workers de connector en Zabbix ajustando el parámetro StartConnectors en zabbix_server.conf. El número de workers de connector debe coincidir con el número de connectors configurado en el frontend de Zabbix (o ser superior si hay más de 1 sesión simultánea). A continuación, reinicie el server de Zabbix.

3. Configure un nuevo connector en el frontend de Zabbix (Administración > General > Connectors) y vuelva a cargar la caché del server con el comando zabbix_server -R config_cache_reload.

Los campos obligatorios están marcados con un asterisco.

Parámetro Descripción
Nombre Introduzca el nombre del connector.
Tipo de datos Seleccione el tipo de datos que se transmitirá:
Valores de item: transmitir valores de item desde Zabbix a sistemas externos;
Eventos: transmitir eventos desde Zabbix a sistemas externos.
URL Introduzca la URL del receptor. Se admiten macros de usuario.
Filtro de etiquetas Exporte únicamente los valores de item o eventos que coincidan con el filtro de etiquetas. Si no se establece, se exportará todo.
Es posible incluir o excluir etiquetas y valores de etiquetas específicos. Se pueden establecer varias condiciones. La coincidencia de nombres de etiquetas siempre distingue entre mayúsculas y minúsculas.

Hay varios operadores disponibles para cada condición:
Existe: incluir los nombres de etiqueta especificados;
Es igual a: incluir los nombres y valores de etiqueta especificados (distingue entre mayúsculas y minúsculas);
Contiene: incluir los nombres de etiqueta especificados cuyos valores contengan la cadena introducida (coincidencia de subcadena, sin distinguir entre mayúsculas y minúsculas);
No existe: excluir los nombres de etiqueta especificados;
No es igual a: excluir los nombres y valores de etiqueta especificados (distingue entre mayúsculas y minúsculas);
No contiene: excluir los nombres de etiqueta especificados cuyos valores contengan la cadena introducida (coincidencia de subcadena, sin distinguir entre mayúsculas y minúsculas).

Hay dos tipos de cálculo para las condiciones:
Y/O: deben cumplirse todas las condiciones; las condiciones que tienen el mismo nombre de etiqueta se agruparán mediante la condición O;
O: basta con que se cumpla una condición.
Tipo de información Seleccione el tipo de información (numérica (sin signo), numérica (flotante), carácter, etc.) por el que se filtrarán los valores de item que el connector debe transmitir.
Este campo está disponible si Tipo de datos está establecido en «Valores de item».
Autenticación HTTP Seleccione la opción de autenticación:
Ninguna: no se utiliza autenticación;
Básica: se utiliza autenticación básica;
NTLM: se utiliza autenticación NTLM (Windows NT LAN Manager);
Kerberos: se utiliza autenticación Kerberos (consulte también: Configuración de Kerberos con Zabbix);
Digest: se utiliza autenticación Digest;
Bearer: se utiliza autenticación Bearer.
Nombre de usuario Introduzca el nombre de usuario (hasta 255 caracteres). Se admiten macros de usuario.
Este campo está disponible si Autenticación HTTP está establecido en «Básica», «NTLM», «Kerberos» o «Digest».
Contraseña Introduzca la contraseña del usuario (hasta 255 caracteres). Se admiten macros de usuario.
Este campo está disponible si Autenticación HTTP está establecido en «Básica», «NTLM», «Kerberos» o «Digest».
Token Bearer Introduzca el token Bearer. Se admiten macros de usuario.
Este campo está disponible y es obligatorio si Autenticación HTTP está establecido en «Bearer».
Configuración avanzada Haga clic en el encabezado Configuración avanzada para mostrar las opciones de configuración avanzada (véase más abajo).
Máximo de registros por mensaje Especifique el número máximo de valores o eventos que se pueden transmitir en un mensaje.
Sesiones simultáneas Seleccione el número de procesos emisores que se ejecutarán para este connector. Se pueden especificar hasta 100 sesiones; el valor predeterminado es «1».
Intentos Número de intentos para transmitir datos. Se pueden especificar hasta 5 intentos; el valor predeterminado es «1».
Intervalo entre intentos Especifique cuánto tiempo debe esperar el connector después de un intento fallido de transmitir datos. Se pueden especificar hasta 10 s; el valor predeterminado es «5 s».
Este campo está disponible si Intentos está establecido en «2» o más.
Los intentos fallidos son aquellos en los que no se ha podido establecer una conexión o en los que el código de respuesta HTTP no es 200, 201, 202, 203 o 204. Los reintentos se activan en caso de errores de comunicación o cuando el código de respuesta HTTP no es 200, 201, 202, 203, 204, 400, 401, 403, 404, 405, 415 o 422. Se siguen las redirecciones, por lo que 302 -> 200 es una respuesta positiva, mientras que 302 -> 503 activará un reintento.
Tiempo de espera Especifique el tiempo de espera del mensaje (1-60 segundos, valor predeterminado: 5 segundos).
Se admiten sufijos de tiempo (por ejemplo, 30s, 1m). Se admiten macros de usuario.
Proxy HTTP Puede especificar un proxy HTTP con el siguiente formato:
[protocol://][username[:password]@]proxy.example.com[:port]
Se admiten macros de usuario.

El prefijo opcional protocol:// puede utilizarse para especificar protocolos de proxy alternativos (la compatibilidad con el prefijo de protocolo se añadió en cURL 7.21.7). Si no se especifica ningún protocolo, el proxy se tratará como un proxy HTTP. De forma predeterminada, se utilizará el puerto 1080.

Si se especifica Proxy HTTP, el proxy sobrescribirá las variables de entorno relacionadas con el proxy, como http_proxy y HTTPS_PROXY. Si no se especifica, el proxy no sobrescribirá las variables de entorno relacionadas con el proxy. El valor introducido se transmite tal cual, sin realizar comprobaciones de validez.
También puede introducir una dirección de proxy SOCKS. Si especifica el protocolo incorrecto, el connector no podrá transmitir valores de item o eventos desde Zabbix.

Tenga en cuenta que con un proxy HTTP solo se admite la autenticación simple.
Verificar el par SSL Marque la casilla para verificar el certificado SSL del web server.
El certificado del server se obtendrá automáticamente de la ubicación de la autoridad certificadora (CA) de todo el sistema. Puede sobrescribir la ubicación de los archivos CA mediante el parámetro de configuración del server o proxy de Zabbix SSLCALocation.
Verificar el host SSL Marque la casilla para verificar que el campo Common Name o el campo Subject Alternate Name del certificado del web server coincida.
Esto establece la opción de cURL CURLOPT_SSL_VERIFYHOST.
Archivo de certificado SSL Nombre del archivo de certificado SSL utilizado para la autenticación del cliente. El archivo de certificado debe estar en formato PEM1. Se admiten macros de usuario.
Si el archivo de certificado también contiene la clave privada, deje vacío el campo Archivo de clave SSL. Si la clave está cifrada, especifique la contraseña en el campo Contraseña de clave SSL. El directorio que contiene este archivo se especifica mediante el parámetro de configuración del server o proxy de Zabbix SSLCertLocation.
Archivo de clave SSL Nombre del archivo de clave privada SSL utilizado para la autenticación del cliente. El archivo de clave privada debe estar en formato PEM1. Se admiten macros de usuario.
El directorio que contiene este archivo se especifica mediante el parámetro de configuración del server o proxy de Zabbix SSLKeyLocation.
Contraseña de clave SSL Contraseña del archivo de clave privada SSL. Se admiten macros de usuario.
Descripción Introduzca la descripción del connector.
Habilitado Marque la casilla para habilitar el connector.

Cuando el Kafka connector se configura con una lista de direcciones de brokers de arranque separadas por comas (por ejemplo, Kafka.URL=kafka1.example.com:9093,kafka2.example.com:9093), el cliente de Kafka se conecta al broker o brokers que responden primero y utiliza sus metadatos del clúster. Si la lista contiene direcciones de distintos clústeres de Kafka, solo se utilizará el clúster que responda más rápido y las demás direcciones se registrarán como no disponibles; como resultado, pueden aparecer advertencias de inicio como la siguiente aunque el connector esté conectado:

kafka cluster connected, but broker(s) "kafka1.example.com:9093, kafka2.example.com:9093" unavailable; will retry on message send if active brokers fail 

En algunos entornos (redes privadas, redes de contenedores o configuraciones de DNS/hosts no estándar), los nombres de host o las IP pueden resolverse en direcciones de loopback (por ejemplo, 127.0.0.1/localhost) o ser normalizados por el cliente, lo que puede hacer que estas advertencias resulten engañosas. Para reducir la confusión, asegúrese de que todas las direcciones de Kafka.URL pertenezcan al mismo clúster de Kafka, verifique la resolución DNS desde el host del connector y los advertised.listeners de los brokers, y prefiera las direcciones que se resuelvan en la dirección anunciada del broker.

Protocolo

La comunicación entre el server y el receptor se realiza a través de HTTP mediante REST API, NDJSON, "Content-Type: application/x-ndjson".

Para obtener más detalles, consulte Protocolo de exportación JSON delimitado por saltos de línea.

Solicitud del servidor

Ejemplo de transmisión de valores de métricas:

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}

Ejemplo de transmisión de eventos:

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}
Respuesta del receptor

La respuesta consta del código de estado de la respuesta HTTP y de la carga útil JSON. El código de estado de la respuesta HTTP debe ser "200", "201", "202", "203" o "204" para las solicitudes que se hayan procesado correctamente; cualquier otro indica solicitudes fallidas.

Ejemplo de éxito:

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

Ejemplo con errores:

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