Supervisión distribuida mediante proxies

Descripción general

Los proxies de Zabbix se pueden utilizar para crear una configuración de monitorización distribuida eficaz y fiable.

Los proxies se implementan localmente para recopilar datos de rendimiento y disponibilidad. A continuación, los datos se envían a un server centralizado.

Un proxy de Zabbix se puede utilizar para:

  • Monitorizar ubicaciones remotas
  • Monitorizar ubicaciones con comunicaciones poco fiables
  • Descargar de trabajo al server de Zabbix al monitorizar miles de dispositivos
  • Recopilar datos de telemetría para la monitorización del rendimiento de aplicaciones (APM)

El proxy solo requiere una conexión TCP con el server de Zabbix. De esta forma, es más fácil atravesar un firewall, ya que solo es necesario configurar una regla de firewall.

El proxy de Zabbix debe utilizar una base de datos independiente. Si se configura para utilizar la base de datos del server de Zabbix, la configuración se dañará.

Todos los datos recopilados por el proxy se almacenan localmente antes de transmitirse al server. De esta forma, no se pierden datos debido a problemas temporales de comunicación con el server. Los parámetros ProxyLocalBuffer y ProxyOfflineBuffer del archivo de configuración del proxy controlan durante cuánto tiempo se conservan los datos localmente.

Puede ocurrir que un proxy que recibe directamente de la base de datos del server de Zabbix los cambios de configuración más recientes tenga una configuración más actualizada que el server de Zabbix, cuya configuración puede no actualizarse con la misma rapidez debido al valor de CacheUpdateFrequency. Como resultado, el proxy puede comenzar a recopilar datos y enviarlos al server de Zabbix, que ignora dichos datos.

El proxy de Zabbix es un recopilador de datos. No calcula triggers, procesa eventos ni envía alertas. Para obtener una descripción general de las funciones del proxy, consulte la siguiente tabla:

Función Compatible con el proxy
Items
Comprobaciones de Zabbix agent Sí
Comprobaciones de Zabbix agent (activas) Sí 1
Comprobaciones simples Sí
Items trapper Sí
Comprobaciones SNMP Sí
Traps SNMP Sí
Comprobaciones IPMI Sí
Comprobaciones JMX Sí
Monitorización de archivos de registro Sí
Comprobaciones internas Sí
Comprobaciones SSH Sí
Comprobaciones Telnet Sí
Comprobaciones externas Sí
Items dependientes Sí
Items de script Sí
Items de navegador Sí
Items de consulta de telemetría Sí
Monitorización web integrada Sí
Preprocesamiento de valores de item Sí
Descubrimiento de red Sí
Registro automático de agent activo Sí
Descubrimiento de bajo nivel Sí 2
Comandos remotos Sí
Recopilación de datos de telemetría (APM) Sí 3
Cálculo de triggers No
Procesamiento de eventos No
Correlación de eventos No
Envío de alertas No

[1] Para asegurarse de que un agent solicite al proxy (y no al server) las comprobaciones activas, el proxy debe aparecer en el parámetro ServerActive del archivo de configuración del agent.
[2] Para el LLD, el proxy de Zabbix solo recopila y preprocesa los datos y, a continuación, los envía al server de Zabbix para su procesamiento posterior.
[3] Los datos de telemetría solo se recopilan si APM está habilitado en el proxy (consulte la pestaña APM en la configuración del proxy); el server de Zabbix no puede recibir datos de telemetría.

Características del proxy

Al decidir si usar o no un proxy, deben tenerse en cuenta varias consideraciones.

Proxy
Ligero Sí
GUI No
Funciona de forma independiente Sí
Mantenimiento sencillo Sí
Creación automática de la base de datos Sí1
Administración local No
Listo para hardware integrado Sí
Conexiones TCP unidireccionales Sí
Configuración centralizada Sí
Genera notificaciones No

1 La función de creación automática de la base de datos solo funciona con SQLite. Las demás bases de datos compatibles requieren una configuración manual.

El proxy de Zabbix no tiene conocimiento de los períodos de mantenimiento; consulte Cálculo de colas durante el mantenimiento para obtener más detalles.

Protección contra sobrecarga

Si el server de Zabbix estuvo caído durante algún tiempo y los proxies han recopilado muchos datos, cuando el server se inicie puede sobrecargarse (el uso de la caché de historial permanece en 95-100% durante algún tiempo). Esta sobrecarga podría provocar una degradación del rendimiento, en la que las comprobaciones se procesan más lentamente de lo que deberían. Se implementó una protección frente a este escenario para evitar los problemas que surgen debido a la sobrecarga de la caché de historial.

Cuando la caché de historial del server de Zabbix está llena, el acceso de escritura a la caché de historial se limita, lo que detiene los procesos de recopilación de datos del server. El caso más común de sobrecarga de la caché de historial es después de un tiempo de inactividad del server, cuando los proxies están cargando los datos recopilados. Para evitar esto, se añadió la limitación de proxies (actualmente no se puede deshabilitar).

Cuando el uso de la caché de historial alcanza el 80%, el server de Zabbix entra en modo de limitación. En modo de limitación, el server acepta datos de proxy solo cuando el uso de la caché de historial está por debajo del 60%, alternando los proxies aceptados. Una vez que el uso de la caché de historial baja por debajo del 20%, el server vuelve al modo normal.

Además, en modo normal, el server de Zabbix limita los proxies individuales que envían paquetes muy grandes (10,000+ registros) si el uso de la caché de historial supera el 60%. Esta decisión se aplica en el instante en que el server evalúa una carga de proxy y, por lo tanto, no siempre puede reflejarse de inmediato en los gráficos de uso de la caché de historial (el item interno zabbix[wcache,history,pused] y su intervalo de actualización pueden omitir picos breves).

Este modo de limitación continuará hasta que el uso de la caché vuelva a alcanzar el 80%, o baje al 20%, o la lista de limitación quede vacía. En el primer caso, el server dejará de aceptar datos de proxy nuevamente. En los otros dos casos, el server comenzará a funcionar normalmente, aceptando datos de todos los proxies.

La información anterior puede ilustrarse en la siguiente tabla:

Uso de la
caché de escritura de historial
Modo del server de Zabbix Acción del server de Zabbix
Alcanza el 80% Espera Deja de aceptar datos de proxy, pero mantiene una lista de limitación (lista priorizada de proxies que se contactarán más adelante).
Alcanza el 60% Normal, pero preparado para ser limitado Puede rechazar cargas de proxy muy grandes (más de 10k registros) al decidir si acepta datos; sigue aceptando otros datos de proxy.
Baja al 20% Normal Descarta la lista de limitación y comienza a aceptar datos de proxy normalmente.

Puede usar el item interno zabbix[wcache,history,pused] para correlacionar este comportamiento del server de Zabbix con una métrica.

Configuración

Una vez que haya instalado y configurado un proxy, es momento de configurarlo en el frontend de Zabbix.

Adición de proxies

En lugar de instalar un proxy en su propia infraestructura, puede implementar uno en Zabbix Cloud. Para hacerlo, haga clic en Create proxy in Cloud en Administration > Proxies; Zabbix Cloud se abrirá en una nueva pestaña del navegador. Después de crear allí un nodo proxy, configure el proxy en el frontend de Zabbix como se describe a continuación. Para obtener más información, consulte Configurar un proxy de Zabbix Cloud.

Para configurar un proxy en el frontend de Zabbix:

  1. Vaya a Administration > Proxies.
  2. Haga clic en Create proxy.
  3. Introduzca los parámetros del proxy en el formulario.

Parámetro Descripción
Proxy name Introduzca el nombre del proxy. Debe ser el mismo nombre que aparece en el parámetro Hostname del archivo de configuración del proxy.
Proxy group Seleccione un grupo de proxies para el balanceo de carga/alta disponibilidad del proxy.
Address for active agents Introduzca la dirección a la que deben conectarse los agentes activos o senders supervisados. Compatible solo con agentes de Zabbix 7.0 o posteriores.
Esta dirección se utiliza para conectarse tanto a proxies activos como pasivos. Este campo solo está disponible si se selecciona un grupo de proxies en el campo Proxy group.
Address Dirección IP/nombre DNS al que conectarse. Se admiten macros de usuario.
Port Número de puerto TCP (10051 de forma predeterminada) al que conectarse. Se admiten macros de usuario.
Proxy mode Seleccione el modo del proxy.
Active: el proxy se conectará al server de Zabbix y solicitará datos de configuración.
Passive: el server de Zabbix se conecta al proxy.
Nota: sin comunicaciones cifradas (confidenciales), los datos de configuración del proxy pueden quedar disponibles para las partes que tengan acceso al puerto trapper del server de Zabbix al utilizar un proxy activo. Esto es posible porque cualquiera puede hacerse pasar por un proxy activo y solicitar datos de configuración si no se realiza la autenticación o si las direcciones de los proxies no están limitadas en el campo Proxy address.
Proxy address Si se especifica, las solicitudes del proxy activo solo se aceptan desde esta lista de direcciones IP separadas por comas, opcionalmente en notación CIDR, o de nombres DNS del proxy activo de Zabbix.
Este campo solo está disponible si se selecciona un proxy activo en el campo Proxy mode. No se admiten macros.
Interface Introduzca los detalles de la interfaz para un proxy pasivo.
Este campo solo está disponible si se selecciona un proxy pasivo en el campo Proxy mode.
Address Dirección IP/nombre DNS del proxy pasivo.
Port Número de puerto TCP del proxy pasivo (10051 de forma predeterminada). Se admiten macros de usuario.
Description Introduzca la descripción del proxy.

La pestaña Encryption permite exigir conexiones cifradas con el proxy.

Parámetro Descripción
Connections to proxy Cómo se conecta el server al proxy pasivo: sin cifrado (predeterminado), mediante PSK (clave precompartida) o certificado.
Connections from proxy Seleccione qué tipos de conexiones se permiten desde el proxy activo. Se pueden seleccionar varios tipos de conexión al mismo tiempo (útil para realizar pruebas y cambiar a otro tipo de conexión). El valor predeterminado es "No encryption".
Issuer Emisor permitido del certificado. Primero se valida el certificado con la CA (autoridad certificadora). Si es válido y está firmado por la CA, el campo Issuer puede utilizarse para restringir aún más las CA permitidas. Este campo es opcional y está pensado para utilizarse si la instalación de Zabbix emplea certificados de varias CA.
Subject Asunto permitido del certificado. Primero se valida el certificado con la CA. Si es válido y está firmado por la CA, el campo Subject puede utilizarse para permitir un único valor de la cadena Subject. Si este campo está vacío, se acepta cualquier certificado válido firmado por la CA configurada.
PSK identity Cadena de identidad de la clave precompartida.
No incluya información confidencial en la identidad PSK, ya que se transmite sin cifrar por la red para informar al receptor de qué PSK debe utilizar.
PSK Clave precompartida (cadena hexadecimal). Longitud máxima: 512 dígitos hexadecimales (PSK de 256 bytes) si Zabbix utiliza la biblioteca GnuTLS u OpenSSL; 64 dígitos hexadecimales (PSK de 32 bytes) si Zabbix utiliza la biblioteca mbed TLS (PolarSSL). Ejemplo: 1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

La pestaña APM permite configurar la supervisión del rendimiento de aplicaciones (APM) en el proxy. El proxy puede recopilar datos de telemetría (trazas, métricas y registros) enviados por aplicaciones o recopiladores de OpenTelemetry mediante el protocolo OpenTelemetry (OTLP/gRPC), y escribir los datos en el origen de datos de telemetría.

Parámetro Descripción
Data collection enabled Marque la casilla para habilitar la recopilación de datos de telemetría en el proxy.
Antes de habilitar la recopilación de datos de telemetría, establezca el parámetro StartAPMCollectors en 1 en el archivo de configuración del proxy.
Max messages per second Establezca el número máximo de mensajes por segundo que acepta el proxy:
Unlimited: acepta todos los mensajes entrantes.
Custom: acepta hasta el número especificado de mensajes por segundo.

Un mensaje es una solicitud OTLP enviada por una aplicación, un recopilador de OpenTelemetry u otra fuente de telemetría. Su tamaño depende del remitente; por ejemplo, un recopilador de OpenTelemetry puede agrupar miles de spans en un mensaje, mientras que una aplicación sencilla puede enviar mensajes más pequeños (por ejemplo, uno por traza).

Si se supera el límite, el proxy responde con el código de estado gRPC UNAVAILABLE (error temporal), por lo que el remitente puede volver a intentar enviar el mensaje más tarde, según su configuración.
Add resource attributes Especifique los atributos de recurso que se añadirán a los datos de telemetría entrantes del tipo seleccionado (por ejemplo, para marcar todos los datos recibidos por este proxy con su entorno o región). Después puede utilizar estos atributos para filtrar los datos de telemetría, por ejemplo, en las condiciones de los item de consulta de telemetría.
Name Introduzca el nombre del atributo (por ejemplo, deployment.environment, cloud.region). Debe ser único para el Type seleccionado.
Value Introduzca el valor del atributo (por ejemplo, production, eu-central-1). Puede estar vacío.
Type Seleccione el tipo de datos entrantes al que se aplica el atributo: Traces, Metrics o Logs.

La pestaña Timeouts permite sustituir los tiempos de espera globales para los tipos de item que lo admiten.

Parámetro Descripción
Timeouts for item types Establezca el tiempo de espera del item (según su tipo):
Global: utiliza el tiempo de espera global (mostrado en el campo Timeout atenuado para cada tipo de item);
Override: establece un tiempo de espera personalizado (en el campo Timeout para cada tipo de item). Rango permitido: 1 - 600 s (predeterminado: heredado de los tiempos de espera globales). Se admiten sufijos de tiempo, por ejemplo, 30s y 1m, y macros de usuario.

Al hacer clic en el enlace Global timeouts puede configurar los tiempos de espera globales. Tenga en cuenta que el enlace Global timeouts solo está visible para los usuarios de tipo Super admin con permisos para la sección del frontend Administration > General.

Tenga en cuenta que, aunque los tiempos de espera del nivel del proxy sustituyen a los globales, estos serán sustituidos por los tiempos de espera de cada item si están configurados.

Si la versión principal del proxy no coincide con la versión principal del server, se mostrará el icono junto a Timeouts for item types, con el mensaje al pasar el cursor: "Timeouts disabled because the proxy and server versions do not match". En estos casos, el proxy utilizará el parámetro Timeout del archivo de configuración del proxy.

El formulario de edición de un proxy existente tiene los siguientes botones adicionales:

  • Refresh configuration: actualiza la configuración del proxy;
  • Clone: crea un proxy nuevo basándose en las propiedades del proxy existente;
  • Delete: elimina el proxy.
Configuración de host

Puede especificar que un host individual debe ser monitoreado por un proxy o grupo de proxy en el formulario de configuración de host, usando el campo Monitored by.

La actualización masiva de host es otra forma de especificar que los hosts deben ser monitoreados por un proxy o grupo de proxy.