2 Transmisión a sistemas externos

Descripción general

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

Esta característica actualmente tiene estado experimental.

El filtro de etiquetas se puede utilizar para transmitir subconjuntos de valores de métricas o eventos.

Dos procesos del servidor Zabbix son responsables de la transmisión de datos: "administrador de conectores" y "trabajador de conectores". Un elemento interno de Zabbix zabbix[connector_queue] permite monitorear el recuento de valores en cola en la cola del conector.

Configuración

Se requieren los siguientes pasos para configurar la transmisión de datos a un sistema externo:

1. Tener un sistema remoto configurado para recibir datos de Zabbix.

Consulte la documentación de un receptor simple. Actualmente, el receptor registra la información recibida en los archivos events.ndjson y history.ndjson.

2. Establezca el número de trabajadores del conector requeridos en Zabbix ajustando el parámetro StartConnectors en zabbix_server.conf. El número de trabajadores del conector debe coincidir (o exceder si las sesiones simultáneas son más del 1) recuento de conectores configurado en la interfaz de Zabbix. Luego, reinicie el servidor Zabbix.

3. Configure un nuevo conector en la interfaz de Zabbix (Administración -> General -> Conectores) y vuelva a cargar la caché del servidor con el comando "zabbix_server -R config_cache_reload".

Los campos obligatorios están marcados con un asterisco.

Parámetro Descripción
Nombre Ingrese el nombre del conector.
Tipo de datos Seleccione el tipo de datos: Valores de métricas o Eventos.
URL Ingrese la URL del receptor. Se admiten macros de usuario.
Filtro de etiquetas Exporta solo valores o eventos que coincidan con el filtro de etiquetas. Si no está configurado, exporte todo.
Es posible incluir y 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: incluye los nombres de etiquetas especificados
Igual: incluye los nombres de etiquetas especificados y valores (distingue entre mayúsculas y minúsculas)
Contiene: incluye los nombres de etiqueta especificados donde los valores de etiqueta contienen la cadena ingresada (coincidencia de subcadena, no distingue entre mayúsculas y minúsculas)
No existe: excluye lo especificado nombres de etiquetas
No es igual: excluye los nombres y valores de etiquetas especificados (distingue entre mayúsculas y minúsculas)
No contiene: excluye los nombres de etiquetas especificados donde los valores de etiqueta contienen la cadena ingresada ( coincidencia de subcadena, no distingue entre mayúsculas y minúsculas)
Hay dos tipos de cálculo para las condiciones:
Y/O: se deben cumplir todas las condiciones, las condiciones que tengan el mismo nombre de etiqueta se agruparán por la condición O<br >O - suficiente si se cumple una condición
Autenticación HTTP Seleccione la opción de autenticación:
Ninguno: no se utiliza autenticación;
Básico: se utiliza autenticación básica;
NTLM - NTLM (Windows NT LAN Manager) se utiliza autenticación;
Kerberos: se utiliza autenticación Kerberos;
Digest: autenticación implícita se utiliza;
Portador - Se utiliza autenticación de portador.
Nombre de usuario Ingrese el nombre de usuario.
Este campo está disponible si autenticación HTTP está configurada en Básica, NTLM, Kerberos o Digest. Se admiten macros de usuario.
Contraseña Ingrese la contraseña de usuario.
Este campo está disponible si autenticación HTTP está configurada en Básica, NTLM, Kerberos o Digest. Se admiten macros de usuario.
Token de portador Ingrese el token de portador.
Este campo está disponible y es obligatorio si autenticación HTTP está configurado en Portador. Se admiten macros de usuario.
Configuración avanzada Marque esta casilla de verificación para mostrar las opciones de configuración avanzadas.
Registros máximos por mensaje Especifique el número máximo de valores o eventos que se pueden enviar dentro de un mensaje.
Sesiones simultáneas Seleccione el número de procesos de remitente que se ejecutarán para este conector. Se pueden especificar hasta 100 sesiones; el valor predeterminado es '1'.
Intentos Número de intentos para intentar enviar los datos. Se pueden especificar hasta 5 intentos; el valor predeterminado es '1'.
Tiempo de espera Especifique el tiempo de espera del mensaje (1-60 segundos, predeterminado 5 segundos).
Se admiten sufijos de tiempo, p. 30s, 1m. Se admiten macros de usuario.
Proxy HTTP Puede especificar un proxy HTTP para usar, usando el formato [protocolo://][nombre de usuario[:contraseña]@]proxy.example.com[:puerto].
El opcional El prefijo protocolo:// se puede utilizar para especificar protocolos de proxy alternativos (la compatibilidad con el prefijo de protocolo se agregó en cURL 7.21.7). Sin ningún protocolo especificado, el proxy será tratado como un proxy HTTP.
De forma predeterminada, se utilizará el puerto 1080.
Si se especifica, el proxy sobrescribirá las variables de entorno relacionadas con el proxy, como http_proxy, HTTPS_PROXY. Si no se especifica, el proxy no sobrescribirá las variables de entorno relacionadas con el proxy. El valor ingresado se transmite "tal cual", no se realiza ninguna verificación de idoneidad.
También puede ingresar una dirección de proxy SOCKS. Si especifica el protocolo incorrecto, la conexión fallará y el elemento dejará de ser compatible.
Tenga en cuenta que solo se admite la autenticación simple con el proxy HTTP.
Se admiten macros de usuario.
SSL verificar par Marque la casilla de verificación para verificar el certificado SSL del servidor web.
El certificado del servidor se tomará automáticamente de la ubicación de la autoridad certificadora (CA) de todo el sistema. Puede anular la ubicación de los archivos CA utilizando el servidor Zabbix o el parámetro de configuración del proxy SSLCALocation.
SSL verificar equipo Marque la casilla de verificación para verificar que el campo Nombre común o el campo Nombre alternativo del sujeto del certificado del servidor web coincidan.
Esto establece el CURLOPT_SSL_VERIFYHOST opción cURL.
Archivo de certificado SSL Nombre del archivo de certificado SSL utilizado para la autenticación del cliente. El archivo del certificado debe estar en formato PEM1. Si el archivo de certificado contiene también la clave privada, deje el campo archivo de clave SSL vacío. Si la clave está cifrada, especifique la contraseña en el campo contraseña de clave SSL. El directorio que contiene este archivo lo especifica el servidor Zabbix o el parámetro de configuración del proxy SSLCertLocation. Se admiten macros de usuario.
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. El directorio que contiene este archivo lo especifica el servidor Zabbix o el parámetro de configuración del proxy SSLKeyLocation. Se admiten macros de usuario.
Contraseña de la clave SSL Contraseña del archivo de clave privada SSL. Se admiten macros de usuario.
Descripción Ingrese la descripción del conector.
Habilitado Marque la casilla de verificación para habilitar el conector.

Protocolo

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

Para obtener más detalles, consulte el protocolo de exportación JSON delimitado por salto de línea.

Solicitud del servidor

Ejemplo de envío 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 envío 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 respuesta HTTP y la carga útil JSON. El código de estado de respuesta HTTP debe ser "200" para las solicitudes que se manejaron correctamente y otro para las solicitudes fallidas.

Ejemplo de éxito:

localhost:8080/v1/history": HTTP/1.1 200 OK
       Date: Wed, 11 Jan 2023 16:40:30 GMT
       Content-Length: 0

Ejemplo con errores:

localhost:8080/v1/history": HTTP/1.1 422 Unprocessable Entity
       Content-Type: application/json
       Date: Wed, 11 Jan 2023 17:07:36 GMT
       Content-Length: 55
        
       {"error":"invalid character '{' after top-level value"}