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