Es posible transmitir valores de métricas y eventos desde Zabbix a sistemas externos a través de HTTP (consulte detalles del protocolo).
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". Una métrica interna de Zabbix zabbix[connector_queue]
permite monitorear el recuento de valores en cola en la cola del conector.
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. |
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.
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}
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:
Ejemplo con errores: