Proxy

Descripción general

El proxy de Zabbix es un proceso que puede recopilar datos de monitorización de uno o varios dispositivos monitorizados y enviar la información al server de Zabbix, trabajando esencialmente en nombre del server. Todos los datos recopilados se almacenan temporalmente de forma local y, posteriormente, se transfieren al server de Zabbix al que pertenece el proxy.

La implementación de un proxy es opcional, pero puede ser muy beneficiosa para distribuir la carga de un único server de Zabbix. Si solo los proxies recopilan datos, el procesamiento en el server requiere menos CPU y operaciones de E/S de disco.

Un proxy de Zabbix es la solución ideal para la monitorización centralizada de ubicaciones remotas, sucursales y redes sin administradores locales.

El proxy de Zabbix requiere una base de datos independiente.

Tenga en cuenta que las bases de datos compatibles con el proxy de Zabbix son SQLite, MySQL y PostgreSQL.

Véase también:

Ejecutando proxy

Si se instala como paquete

El proxy de Zabbix se ejecuta como un proceso demonio. El proxy puede iniciarse ejecutando:

systemctl start zabbix-proxy

Esto funcionará en la mayoría de los sistemas GNU/Linux. En otros sistemas puede que necesite ejecutar:

/etc/init.d/zabbix-proxy start

De manera similar, para detener/reiniciar/ver el estado del proxy de Zabbix, utilice los siguientes comandos:

systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
Iniciar manualmente

Si lo anterior no funciona, debe iniciarlo manualmente. Busque la ruta al binario zabbix_proxy y ejecute:

zabbix_proxy

Puede usar los siguientes parámetros de línea de comandos con Zabbix proxy:

Parameter Description
-c --config <config-file> Ruta al archivo de configuración.
-f --foreground Ejecutar Zabbix proxy en primer plano.
-R --runtime-control <option> Realizar funciones administrativas.
-T --test-config Validar el archivo de configuración y salir.
-h --help Mostrar información de ayuda y salir.
-V --version Mostrar el número de versión.

Ejemplos de ejecución de Zabbix proxy con parámetros de línea de comandos:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
Control en tiempo de ejecución

Opciones de control en tiempo de ejecución:

Option Description Target
config_cache_reload Recargar la caché de configuración. Se ignora si la caché se está cargando actualmente.
El proxy activo de Zabbix se conectará al server de Zabbix y solicitará los datos de configuración.
El proxy pasivo de Zabbix solicitará los datos de configuración al server de Zabbix la próxima vez que el server se conecte al proxy.
history_cache_clear=target Vaciar la caché de historial del item especificado por su ID.
Afecta a todos los valores del item, excepto el primero y el último.
target - ID del item.
diaginfo[=<section>] Recopilar información de diagnóstico en el archivo de registro del proxy. historycache - estadísticas de la caché de historial;
preprocessing - estadísticas del gestor de preprocesamiento;
locks - lista de mutexes (está vacía en sistemas BSD).
snmp_cache_reload Recargar la caché SNMP: borrar las propiedades del motor SNMP (engine time, engine boots, engine id, credentials) para todos los hosts. Úselo para forzar un vaciado global de la caché al solucionar problemas de SNMP.
housekeeper_execute Iniciar el procedimiento de housekeeping. Se ignora si el procedimiento de housekeeping está actualmente en curso.
log_level_increase[=<target>] Aumentar el nivel de registro; afecta a todos los procesos si no se especifica target.
No es compatible con sistemas BSD.
process type - todos los procesos del tipo especificado (por ejemplo, poller).
Consulte todos los tipos de procesos del proxy.
process type,N - tipo de proceso y número (por ejemplo, poller,3)
pid - identificador de proceso (1 a 65535). Para valores mayores, especifique target como 'process type,N'.
log_level_decrease[=<target>] Disminuir el nivel de registro; afecta a todos los procesos si no se especifica target.
No es compatible con sistemas BSD.
prof_enable[=<target>] Habilitar el profiling.
Afecta a todos los procesos si no se especifica target.
El profiling habilitado proporciona detalles de todos los rwlocks/mutexes por nombre de función.
process type - todos los procesos del tipo especificado (por ejemplo, history syncer).
Consulte todos los tipos de procesos del proxy.
process type,N - tipo de proceso y número (por ejemplo, history syncer,1).
pid - identificador de proceso (1 a 65535). Para valores mayores, especifique target como 'process type,N'.
scope - rwlock, mutex, processing se pueden usar con el tipo de proceso y número (por ejemplo, history syncer,1,processing) o con todos los procesos de un tipo (por ejemplo, history syncer,rwlock).
prof_disable[=<target>] Deshabilitar el profiling.
Afecta a todos los procesos si no se especifica target.
process type - todos los procesos del tipo especificado (por ejemplo, history syncer).
Consulte todos los tipos de procesos del proxy.
process type,N - tipo de proceso y número (por ejemplo, history syncer,1).
pid - identificador de proceso (1 a 65535). Para valores mayores, especifique target como 'process type,N'.

Cuando se especifica un tipo de proceso como target para el control en tiempo de ejecución, el comando se aplica solo a los procesos en ejecución de ese tipo. Si actualmente no se está ejecutando ningún proceso del tipo especificado, el comando devuelve un error:

zabbix_proxy -R log_level_increase='data sender'
Cannot redirect signal: "data sender" process does not exist

Ejemplo de uso del control en tiempo de ejecución para recargar la caché de configuración del proxy:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload

Ejemplo de uso del control en tiempo de ejecución para vaciar la caché de historial de un item:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243

Ejemplos de uso del control en tiempo de ejecución para recopilar información de diagnóstico:

# Recopilar toda la información de diagnóstico disponible en el archivo de registro del proxy:
zabbix_proxy -R diaginfo

# Recopilar estadísticas de la caché de historial en el archivo de registro del proxy:
zabbix_proxy -R diaginfo=historycache

Ejemplo de uso del control en tiempo de ejecución para recargar la caché SNMP:

zabbix_proxy -R snmp_cache_reload

Cuando una interfaz SNMPv3 se actualiza mediante la interfaz web de Zabbix, Zabbix recargará automáticamente las nuevas credenciales SNMPv3 para esa interfaz en la mayoría de los casos; use -R snmp_cache_reload solo si el sondeo sigue fallando después de cambiar las credenciales (por ejemplo, debido a inconsistencias de engineBoots/engineID o a dispositivos no RFC), o cuando necesite forzar un vaciado global de la caché SNMP para la resolución de problemas.

Ejemplo de uso del control en tiempo de ejecución para activar la ejecución de housekeeper:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute

Ejemplos de uso del control en tiempo de ejecución para cambiar el nivel de registro:

# Aumentar el nivel de registro de todos los procesos:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

# Aumentar el nivel de registro del segundo proceso poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

# Aumentar el nivel de registro del proceso con PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

# Disminuir el nivel de registro de todos los procesos http poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
Procesar usuario

El proxy de Zabbix está diseñado para ejecutarse como un usuario que no sea root. Se ejecutará con el usuario que no sea root con el que se inicie. Por lo tanto, puede ejecutar el proxy con cualquier usuario que no sea root sin ningún problema.

Si intenta ejecutarlo como «root», cambiará al usuario «zabbix» codificado de forma fija, que debe estar presente en su sistema. Solo puede ejecutar el proxy como «root» si modifica adecuadamente el parámetro AllowRoot en el archivo de configuración del proxy.

Archivo de configuración

La ruta predeterminada al archivo de configuración depende del sistema operativo y del método de instalación de Zabbix:

  • Para la instalación desde el código fuente: /usr/local/etc/zabbix_proxy.conf, o según lo establecido por las variables de tiempo de compilación --sysconfdir o --prefix.
  • Para la instalación desde paquetes: /etc/zabbix/zabbix_proxy.conf.

Consulte las opciones del archivo de configuración para obtener detalles sobre cómo configurar zabbix_proxy.

Tipos de procesos y subprocesos del proxy

  • agent poller: proceso de sondeo asíncrono para comprobaciones pasivas con un subproceso de trabajo;
  • apm manager: proceso administrador para la monitorización del rendimiento de las aplicaciones (APM);
  • apm worker: proceso para gestionar las tareas de monitorización del rendimiento de las aplicaciones (APM) del apm manager;
  • availability manager: proceso para actualizar la disponibilidad de los hosts;
  • browser poller: proceso de sondeo para comprobaciones de items de navegador;
  • configuration syncer: proceso para gestionar la caché en memoria de los datos de configuración;
  • data sender: proceso de envío de datos del proxy;
  • discovery manager: proceso administrador para el descubrimiento de dispositivos;
  • discovery worker: proceso para gestionar las tareas de descubrimiento del discovery manager;
  • history syncer: proceso de escritura en la base de datos del historial;
  • housekeeper: proceso para eliminar el historial obsoleto de los items;
  • http agent poller: proceso de sondeo asíncrono para comprobaciones HTTP con un subproceso de trabajo;
  • http poller: proceso de sondeo de la monitorización web;
  • icmp pinger: proceso de sondeo para comprobaciones icmpping;
  • internal poller: proceso de sondeo para comprobaciones internas;
  • ipmi manager: administrador del proceso de sondeo IPMI;
  • ipmi poller: proceso de sondeo para comprobaciones IPMI;
  • java poller: proceso de sondeo para comprobaciones Java;
  • odbc poller: proceso de sondeo para comprobaciones ODBC;
  • poller: proceso de sondeo normal para comprobaciones pasivas;
  • preprocessing manager: administrador de tareas de preprocesamiento con subprocesos de trabajo de preprocesamiento;
  • preprocessing worker: subproceso para el preprocesamiento de datos;
  • self-monitoring: proceso para recopilar estadísticas internas del server;
  • snmp poller: proceso de sondeo asíncrono para comprobaciones SNMP con un subproceso de trabajo (solo items walk[OID] y get[OID]);
  • snmp trapper: proceso trapper para traps SNMP;
  • supervisor: coordina el inicio y el apagado de los procesos y subprocesos del server, y supervisa su disponibilidad;
  • task manager: proceso para la ejecución remota de tareas solicitadas por otros componentes (por ejemplo, cerrar un problema, reconocer un problema, comprobar ahora el valor de un item y la funcionalidad de comandos remotos);
  • telemetry query poller: proceso de sondeo para comprobaciones de items de consulta de telemetría;
  • trapper: proceso trapper para comprobaciones activas, traps y comunicación con el proxy;
  • unreachable poller: proceso de sondeo para dispositivos inaccesibles;
  • vmware collector: recopilador de datos de VMware responsable de recopilar datos de los servicios de VMware.

El archivo de registro del proxy se puede utilizar para observar estos tipos de procesos.

El archivo de registro del proxy se crea con permisos de lectura y escritura únicamente para el propietario del archivo. Además, el grupo propietario puede leer el archivo. Se deniegan todos los demás permisos.

Se pueden supervisar varios tipos de procesos del proxy de Zabbix mediante el item interno zabbix[process,<type>,<mode>,<state>].

Estadísticas de transacciones del sincronizador de historial

El título del proceso del sincronizador de historial muestra estadísticas detalladas sobre las transacciones del sincronizador de historial.

205276 ?        S      0:00  zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ?        S      0:00  zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]

Los tiempos, en processed...in N (<timings>) sec, son:

  • Tiempo dedicado a escribir los valores de item en la base de datos.
  • Tiempo dedicado a actualizar los datos del item (estado, errores).
Procedimiento de housekeeping

El proxy de Zabbix tiene el proceso housekeeper que elimina el historial y las tendencias obsoletos de los item. Se ejecuta en ciclos, con una frecuencia determinada por HousekeepingFrequency, y el límite de eliminación por ciclo determinado por ProxyLocalBuffer y ProxyOfflineBuffer. A diferencia del procedimiento de housekeeping del server de Zabbix, el proceso housekeeper del proxy no usa la tabla housekeeper; elimina todos los datos obsoletos una vez por cada ciclo de housekeeping.

Plataformas compatibles

Zabbix proxy se ejecuta en la misma lista de plataformas compatibles que Zabbix server.

Buffer de memoria

El buffer de memoria permite almacenar nuevos datos (valores de item, descubrimiento de red, autoregistro de host) en el buffer y cargarlos en el server de Zabbix sin acceder a la base de datos. El buffer de memoria se ha introducido para el proxy en Zabbix 7.0.

En instalaciones anteriores a Zabbix 7.0, los datos recopilados se almacenaban en la base de datos antes de cargarlos en el server de Zabbix. En estas instalaciones, este sigue siendo el comportamiento predeterminado después de actualizar a Zabbix 7.0.

Para un rendimiento optimizado, se recomienda configurar el uso del buffer de memoria en el proxy. Esto es posible modificando el valor de ProxyBufferMode de disk (valor predeterminado codificado para instalaciones existentes) a hybrid (recomendado) o memory. También es necesario establecer el tamaño del buffer de memoria (parámetro ProxyMemoryBufferSize).

En el modo híbrido, el buffer está protegido contra la pérdida de datos vaciando los datos no enviados a la base de datos si el proxy se detiene, el buffer se llena o los datos son demasiado antiguos. Cuando todos los valores se han vaciado en la base de datos, el proxy vuelve a usar el buffer de memoria.

En el modo de memoria, se utilizará el buffer de memoria; sin embargo, no hay protección contra la pérdida de datos. Si el proxy se detiene o la memoria se sobrecarga, los datos no enviados se descartarán.

El modo híbrido (ProxyBufferMode=hybrid) se aplica a todas las instalaciones nuevas desde Zabbix 7.0.

Parámetros adicionales como ProxyMemoryBufferSize y ProxyMemoryBufferAge definen, respectivamente, el tamaño del buffer de memoria y la antigüedad máxima de los datos en el buffer.

Tenga en cuenta que, con una configuración en conflicto, el proxy mostrará un error y no podrá iniciarse, por ejemplo, si:

  • ProxyBufferMode está establecido en hybrid o memory y ProxyMemoryBufferSize es 0.
  • ProxyBufferMode está establecido en hybrid o memory y ProxyLocalBuffer no es 0.

Configuración regional

Tenga en cuenta que el proxy requiere una configuración regional UTF-8 para que algunos items textuales puedan interpretarse correctamente. La mayoría de los sistemas modernos tipo Unix tienen una configuración regional UTF-8 como predeterminada; sin embargo, hay algunos sistemas en los que puede ser necesario establecerla específicamente.

Cálculo de colas durante el mantenimiento

El proxy de Zabbix no tiene conocimiento de los períodos de mantenimiento; consulte Calculation of queues during maintenance para obtener más detalles.

Uso del frontend de Zabbix detrás de un proxy

Si el frontend de Zabbix se ejecuta detrás de un proxy, es necesario reescribir la ruta de las cookies en el archivo de configuración del proxy para que coincida con la ruta a través del proxy inverso. Consulte los ejemplos siguientes. Si no se reescribe la ruta de las cookies, los usuarios pueden experimentar problemas de autorización al intentar iniciar sesión en el frontend de Zabbix.

Ejemplo de configuración para NGINX
# ..
location / {
# ..
proxy_cookie_path /zabbix /;
proxy_pass http://192.168.0.94/zabbix/;
# ..
Ejemplo de configuración para Apache
# ..
ProxyPass "/" http://host/zabbix/
ProxyPassReverse "/" http://host/zabbix/
ProxyPassReverseCookiePath /zabbix /
ProxyPassReverseCookieDomain host zabbix.example.com
# ..