Advertising:
Configuracion minima y tunning de Zabbix Server 7.X
EN PROCESO DE ELABORACION
Tipos de procesos e hilos del servidor
FUENTE: https://www.zabbix.com/documentation/current/en/manual/concepts/server#server-process-types-and-threads - agent poller # proceso de sondeo asíncrono para comprobaciones pasivas con un subproceso de trabajo - alert manager # gestor de colas de alertas - alert syncer # escritor de la base de datos de alertas - alerter # proceso para enviar notificaciones - availability manager # proceso para actualizar la disponibilidad del host - configuration syncer # proceso para gestionar la caché en memoria de los datos de configuración - configuration syncer worker # proceso para resolver y sincronizar valores de macros de usuario en nombres de elementos - connector manager # proceso de gestión de conectores - connector worker # proceso para gestionar las solicitudes del gestor de conectores - discovery manager # proceso de gestión para el descubrimiento de dispositivos - discovery worker # proceso para gestionar las tareas de descubrimiento del gestor de descubrimiento - escalator # proceso para escalar acciones - ha manager # proceso para gestionar la alta disponibilidad - history poller # proceso para gestionar comprobaciones calculadas que requieren una conexión a una base de datos - history syncer # escritor de la base de datos del historial - housekeeper # proceso de eliminación de datos históricos antiguos - http agent poller # proceso de poller asíncrono para comprobaciones HTTP con un hilo de trabajo - http poller # poller de monitorización web - icmp pinger # poller para comprobaciones icmpping - ipmi manager # gestor de sondeo IPMI - ipmi poller # poller para comprobaciones IPMI - java poller # poller para comprobaciones Java - lld manager # proceso gestor de tareas de descubrimiento de bajo nivel - lld worker # proceso worker de tareas de descubrimiento de bajo nivel - odbc poller # poller para comprobaciones ODBC - poller # poller normal para comprobaciones pasivas - preprocessing manager # gestor de tareas de preprocesamiento con subprocesos de trabajador de preprocesamiento - preprocessing worker # subproceso para el preprocesamiento de datos - proxy poller # poller para proxies pasivos - proxy group manager # gestor de balanceo de carga de proxy y alta disponibilidad - report manager # gestor de tareas programadas de generación de informes - report writer # proceso de generación de informes programados - self-monitoring # proceso para recopilar estadísticas internas del servidor - service manager # proceso para gestionar servicios recibiendo información sobre problemas, etiquetas de problemas y recuperación de # problemas del sincronizador de historial, gestor de tareas y gestor de alertas - snmp poller # proceso de poller asíncrono para comprobaciones SNMP con un hilo de trabajo (sólo elementos walk[OID] y get[OID]) - snmp trapper # trapper para traps SNMP - task manager # proceso para la ejecución remota de tareas solicitadas por otros componentes (por ejemplo, cerrar problema, # reconocer problema, comprobar valor de elemento ahora, funcionalidad de comando remoto) - timer # temporizador para procesar mantenimientos - trapper # atrapador para comprobaciones activas, trampas, comunicación proxy - trigger housekeeper # proceso para eliminar problemas generados por disparadores que han sido eliminados - unreachable poller # poller para dispositivos inalcanzables - vmware collector # recolector de datos VMware responsable de la recolección de datos de los servicios VMware
Nota: Se pueden monitorizar varios tipos de procesos del servidor Zabbix utilizando el elemento interno zabbix[process,<type>,<mode>,<state>]. [Internal checks]
Tunning de Zabbix Server Conf
FUENTES: https://www.zabbix.com/documentation/current/es/manual/appendix/config/zabbix_server https://www.initmax.cz/wp-content/uploads/2022/06/zabbix_performance_tuning_6.0.pdf # Version 6.X https://www.initmax.cz/wp-content/uploads/2024/02/zabbix-performance-tuning-7.0.pdf # Version 7.X
Configuracion parametros GENERALES
# ListenPort=10051 # El puerto de escucha para el trapper (10051).
# SourceIP= # Dirección IP de origen para salida
# Conexiones salientes al proxy Zabbix y al agente Zabbix;
# Conexiones sin agente (VMware, SSH, JMX, SNMP, Telnet y comprobaciones simples);
# Conexiones de agente HTTP;
# Solicitudes HTTP de JavaScript de elementos de secuencia de comandos;
# Preprocesamiento de solicitudes HTTP de JavaScript;
# Envío de correos electrónicos de notificación (conexiones al servidor SMTP);
# Notificaciones de webhook (conexiones HTTP de JavaScript);
# Conexiones a Vault
LogFile=/var/log/zabbix/zabbix_server.log # El nombre del archivo de registro.
# LogType=file # Tipo de salida del registro
# file - escribe el registro en el archivo especificado por el parámetro LogFile;
# system - escribe el registro en syslog;
# console - escribe el registro en la salida estándar.
LogFileSize=0 # El tamaño máximo del archivo de registro en MB. 0 - desactivar la rotación automática del registro.
# Si se alcanza el límite de tamaño del archivo de registro y falla la rotación de archivos,
# por la razón que sea, el archivo de registro existente se trunca y se inicia de nuevo.
PidFile=/run/zabbix/zabbix_server.pid # Nombre del archivo PID.
SocketDir=/run/zabbix # Directorio para almacenar sockets IPC utilizados por los servicios internos de Zabbix.
# DebugLevel=3 # Especifica el nivel de depuración:
# 0 - información básica sobre el arranque y parada de los procesos de Zabbix.
# 1 - información crítica
# 2 - información de error
# 3 - advertencias
# 4 - para depuración (produce mucha información)
# 5 - depuración extendida (produce aún más información)
Parametros para configurar la conexion con la base de datos
# DBHost=localhost # El nombre del host de la base de datos.
# Con MySQL localhost o cadena vacía resulta en el uso de un socket.
# Con PostgreSQL sólo la cadena vacía da como resultado el intento de utilizar un socket.
# Con Oracle la cadena vacía resulta en el uso del método de conexión Net Service Name;
# en este caso considere el uso de la variable de entorno TNS_ADMIN para especificar el directorio del archivo tnsnames.ora.
DBName=zabbix # El nombre de la base de datos.
DBUser=zabbix # El usuario de la base de datos.
DBPassword=Z4bb1x # La contraseña de la base de datos.
# DBSchema= # Schema name. Used for PostgreSQL.
# DBSocket= # La ruta al archivo de socket MySQL.
# DBPort= # El puerto de la base de datos cuando no se utiliza el socket local.
# AllowUnsupportedDBVersions=0 # Permitir que el servidor trabaje con versiones de bases de datos no compatibles. 0 No permitido - 1 Permitido
Parametros para la configuración de Elasticsearch
# HistoryStorageURL= # La URL HTTP[S] de almacenamiento histórico # HistoryStorageTypes=uint,dbl,str,log,text # Una lista separada por comas de los tipos de valores que se enviarán al almacenamiento del historial. # HistoryStorageDateIndex=0 # Permite el preprocesamiento de los valores históricos en el almacenamiento histórico para almacenar valores en diferentes índices basados en la fecha.
Parametros para la exportacion de valores en tiempo real
# ExportDir= # El directorio para la exportación en tiempo real de eventos, historial y tendencias en formato JSON delimitado por nuevas líneas.
# Si se establece, habilita la exportación en tiempo real.
# ExportFileSize=1G # El tamaño máximo por archivo de exportación en bytes. Se utiliza para la rotación si ExportDir está configurado.
# ExportType=events,history,trends # La lista de tipos de entidad delimitados por comas (eventos, historial, tendencias) para la exportación en tiempo real (todos los tipos por defecto).
# Válido sólo si ExportDir está configurado.
# Tenga en cuenta que si se especifica ExportType, pero no ExportDir, se trata de un error de configuración y el servidor no se iniciará.
Parametros para la configuracion de pollers precargados al iniciar zabbix
# StartPollers=5 # Número de instancias precargadas de pollers.
# StartAgentPollers=1 # Número de instancias precargadas de agentes pollers asíncronos de Zabbix.
# StartHTTPAgentPollers=1 # Número de instancias precargadas de pollers de agentes HTTP asíncronos.
# StartSNMPPollers=1 # Número de instancias precargadas de pollers SNMP asíncronos.
# MaxConcurrentChecksPerPoller=1000 # Número máximo de comprobaciones asíncronas que pueden ser ejecutadas a la vez por cada HTTP agent poller, agent poller o SNMP poller.
# Ver StartHTTPAgentPollers, StartAgentPollers y StartSNMPPollers.
# StartIPMIPollers=0 # Número de instancias precargadas de pollers IPMI.
# StartPreprocessors=3 # Número de instancias precargadas de preprocessing workers.
# StartConnectors=0 # Número de instancias preforked de trabajadores conectores.
# El proceso del gestor de conectores se inicia automáticamente cuando se inicia un worker de conectores.
# StartPollersUnreachable=1 # Número de instancias preforked de pollers para hosts inalcanzables (incluyendo IPMI y Java).
# Al menos un poller para hosts inalcanzables (Unreachable) debe estar en ejecución si se inician pollers normales, IPMI o Java.
# StartHistoryPollers=5 # Número de instancias preforked de history pollers. Solo se requiere para comprobaciones calculadas (calculated checks).
# StartTrappers=5 # Número de instancias preforked de trappers. Los trappers aceptan conexiones entrantes de Zabbix sender, agentes activos y proxies activos.
# StartPingers=1 # Número de instancias preforked de pingers ICMP
# StartDiscoverers=5 # Número de instancias preforked de discovery workers.
# StartHTTPPollers=1 # Número de instancias preforked de pollers HTTP
# StartTimers=1 # Número de instancias preforked de temporizadores. Los temporizadores procesan periodos de mantenimiento.
# StartEscalators=1 # Número de instancias preforzadas de escaleras mecánicas.
# StartAlerters=3 # Número de instancias preforked de alertas
Parametros para la configuracion de JavaGateway
# JavaGateway= # Dirección IP (o nombre de host) de la pasarela Java de Zabbix. Sólo se requiere si se inician los pollers de Java. # JavaGatewayPort=10052 # El puerto en el que escucha la pasarela Java de Zabbix. # StartJavaPollers=0 # Número de instancias preforked de los pollers Java
Parametros para recolectar metricas del VMWare
# StartVMwareCollectors=0
# VMwareFrequency=60
# VMwarePerfFrequency=60
# VMwareCacheSize=8M
# VMwareTimeout=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
# StartSNMPTrapper=0 # Si se establece en 1, se iniciará un proceso SNMP trapper.
# HousekeepingFrequency=1 # Este parámetro determina la frecuencia con la que Zabbix realizará el procedimiento de limpieza en horas.
# MaxHousekeeperDelete=5000 # No se eliminarán más de las filas indicadas por 'MaxHousekeeperDelete' (correspondientes a [nombre de tabla], [campo], [valor]) por tarea en un ciclo de limpieza.
# Si se establece en 0, no hay límite usado en absoluto. En este caso debes saber lo que estás haciendo, para no ¡sobrecargar la base de datos!
# Este parámetro se aplica solo para eliminar el historial. y tendencias de métricas ya eliminadas.
# CacheSize=32M # El tamaño de la caché de tendencias, en bytes. El tamaño de la memoria compartida para almacenar datos de tendencias.
# CacheUpdateFrequency=10 # Frecuencia con la que Zabbix actualizará la caché de configuración, en segundos.
# StartDBSyncers=4 # Número de instancias preforked de DB Syncers.
# Tenga cuidado al cambiar este valor, aumentarlo puede hacer más daño que bien.
# Aproximadamente, el valor predeterminado debería ser suficiente para manejar hasta 4000 NVPS.
# Como regla general, un DBSyncer puede manejar 1.000 Nuevos Valores por Segundo (NVPS),
# siempre y cuando su base de datos pueda mantener el ritmo de escritura I/O.
# Puedes comprobar el estado de tus DBSyncers usando los tipos internos de Zabbix para comprobar
# el estado de cada proceso, y sus tiempos de ocupación.
# HistoryCacheSize=16M # Tamaño de la caché del historial, en bytes. Tamaño de la memoria compartida para almacenar datos históricos.
# HistoryIndexCacheSize=4M # Tamaño de caché índice de historia, en bytes. Tamaño de memoria compartida para caché de historial de indexación.
# TrendCacheSize=4M
# TrendFunctionCacheSize=4M
# ValueCacheSize=8M
Timeout=4
# TrapperTimeout=300
# UnreachablePeriod=45
# UnavailableDelay=60
# UnreachableDelay=15
# AlertScriptsPath=/usr/lib/zabbix/alertscripts
# ExternalScripts=/usr/lib/zabbix/externalscripts
# FpingLocation=/usr/sbin/fping
# Fping6Location=/usr/sbin/fping6
LogSlowQueries=3000
# TmpDir=/tmp
# StartProxyPollers=1
# ProxyConfigFrequency=10
# ProxyDataFrequency=1
# StartLLDProcessors=2
# AllowRoot=0
# SSLCertLocation=${datadir}/zabbix/ssl/certs
# SSLKeyLocation=${datadir}/zabbix/ssl/keys
# SSLCALocation=
StatsAllowedIP=127.0.0.1
####### LOADABLE MODULES #######
# LoadModulePath=${libdir}/modules
# LoadModule=
####### TLS-RELATED PARAMETERS #######
# TLSCAFile=
# TLSCRLFile=
# TLSCertFile=
# TLSKeyFile=
# TLSCipherCert13=
# TLSCipherCert=
# TLSCipherPSK13=
# TLSCipherPSK=
# TLSCipherAll13=
# TLSCipherAll=
# DBTLSConnect=
# DBTLSCAFile=
# DBTLSCertFile=
# DBTLSKeyFile=
# DBTLSCipher=
# Vault=HashiCorp
# VaultToken=
# VaultURL=https://127.0.0.1:8200
# VaultPrefix=
# VaultDBPath=
# VaultTLSCertFile=
# VaultTLSKeyFile=
# StartReportWriters=0
# WebServiceURL=
# ServiceManagerSyncFrequency=60
# ProblemHousekeepingFrequency=60
# StartODBCPollers=1
EnableGlobalScripts=0
# AllowSoftwareUpdateCheck=1
# SMSDevices=
# ListenBacklog=
# HANodeName=
# NodeAddress=localhost:10051
# WebDriverURL=
# StartBrowserPollers=1
Tunning
- Situacion normal # ps ax | grep sync zabbix_server: history syncer #1 [synced 1845 items in 0.257111 sec, syncing history] zabbix_server: history syncer #2 [synced 24 items in 0.060314 sec, idle 4 sec] zabbix_server: history syncer #3 [synced 0 items in 0.000018 sec, idle 4 sec] zabbix_server: history syncer #4 [synced 0 items in 0.000009 sec, syncing history]
- Durante el problema # ps ax | grep sync history syncer #1 [synced 1020 items in 285.198752 sec, syncing history] history syncer #2 [synced 915 items in 285.177799 sec, syncing history] history syncer #3 [synced 3401 items in 284.936376 sec, syncing history] history syncer #4 [synced 1194 items in 285.280719 sec, syncing history]
- Habilitar el modo debug para los procesos # zabbix_server -R log_level_increase=alerter Nota: Buscar en el registro /var/log/zabbix/zabbix_server.log información sobre el problema.
- Identificar mala performance en la base de datos LogSlowQueries=3000 Nota: Buscar en el registro /var/log/zabbix/zabbix_server.log información sobre el problema. grep slow /var/log/zabbix/zabbix_server.log
https://www.zabbix.com/documentation/current/es/manual/appendix/config/zabbix_server#listenport https://www.zabbix.com/documentation/current/en/manual/appendix/config/zabbix_server#javagateway https://www.zabbix.com/documentation/current/en/manual/concepts/server#server-process-types-and-threads https://www.initmax.cz/wp-content/uploads/2024/02/zabbix-performance-tuning-7.0.pdf https://www.zabbix-es.com.es/index.php/Configuracion_minima_y_tunning_de_Zabbix_Server_7.X#Tunning_de_Zabbix_Server_Conf