Table of Contents
NPCD
NPCD (Nagios-Perfdata-C-Daemon) ha sido escrito para facilitar un método asíncrono para el manejo de los datos de rendimiento con nagios
.
Introducción
En grandes instalaciones con nagios, la latencia media de los chequeos puede incrementarse hasta valores no aceptables. Esto quiere decir que Nagios deberá realizar un chequeo en un momento x
pero realmente lo hace y
segundos más tarde.
Si le decimos al core de Nagios que queremos procesar los datos de rendimiento después de cada chequeo, se soportará una cierta cantidad, pero más allá de estos límites empezaremos a tener problemas de latencia.
Para reducir el número de acciones por cada chequeo, podemos usar el Modo Masivo que obtiene datos durante algún tiempo y entonces le dice a Nagios que ejecute el <host|service>_perfdata_file_processing_command
o podemos decirle a Nagios que mueva los perfdata_files
a un directorio de spool.
Esta última acción es muy rápida, por lo que el tiempo de bloqueo de Nagios es mínimo, por lo que puede seguir haciendo lo que debería: ejecutar otros chequeos, envío de notificaciones, etc.
Cómo funciona
Como hemos mencionado anteriormente, el proceso de Nagios termina su trabajo al mover los ficheros de datos de rendimiento, pero con esto no hemos convertido estos datos en ficheros RRD.
Para esta tarea podemos ejecutar npcd
que busca en el directorio de spool y ejecuta una acción por cada fichero que haya encontrado.
Después de que NPCD se ejecuta crea una lista de ficheros encontrados en perfdata_spool_dir
y lanza nuevos hilos de ejecución por cada fichero, ejecutando el comando perfdata_file_run_cmd
con el argumento opcional perfdata_file_run_cmd_arg
.
Ya que los ficheros de perfdata que están en el directorio de spool están en el mismo formato que para el modo masivo, NPCD ejecutará process_perfdata.pl
en Modo Masivo.
Ventajas / Desventajas
Ventajas:
- Mejora del rendimiento de Nagios
- debido al desacoplamiento del core de Nagios respecto del procesado de datos de rendimiento.
- No se pierden datos de rendimiento
- en el momento en que Nagios escribe los ficheros de perfdata en el spool, los datos no se pierden incluso en caso de fallo de NPCD, o si hemos “olvidado” arrancar NPCD después de un reinicio del sistema. NPCD arrancará la próxima vez con el primer fichero que encuentre (están ordenados por la macro $TIME_T$ en orden cronológico) y actualizará los ficheros RRD.
Desventajas:
- no se hace un procesado en tiempo real de los datos de rendimiento
- debido al retraso existente en la escritura de los datos por
Nagios
(service_perfdata_file_processing_interval
) - existe otro retraso debido a que NPCD espera hasta 10 seconds para re-escanar el directorio de spool
Configuración de NPCD
Para controlar NPCD, tiene un fichero de configuración propio del que se suministra un ejemplo, npcd.cfg-sample
.
Renómbrelo a npcd.cfg
para arrancar NPCD de esta forma:
<code_bash>/usr/local/pnp4nagios/bin/npcd -f /usr/local/pnp4nagios/etc/npcd.cfg</code> o <code_bash>/usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg</code> para ejecutarlo como demonio (background).
Truco: Si no renombra el fichero de configuración, éste puede ser sobreescrito por futuras actualizaciones de PNP.
npcd.cfg-sample
Estas son las directivas de configuración esenciales para NPCD:
# Privilege Options user = nagios group = nagios # Logging Options log_type = syslog log_file = /usr/local/pnp4nagios/var/npcd.log max_logfile_size = 10485760 log_level=0 # Processing Options perfdata_spool_dir = /usr/local/pnp4nagios/var/spool/ perfdata_file_run_cmd = /usr/local/pnp4nagios/libexec/process_perfdata.pl perfdata_file_run_cmd_args = -b # Thread Options npcd_max_threads=5 # greedy options use_load_threshold = 0 load_threshold = 10.0 # Process Options pid_file=/var/run/npcd.pid
Directivas
- Opciones de Privilegios
- user <username>
- NPCD tries to drop 'root' privileges to switch to this user.
- default: nagios
- group <groupname>
- NPCD tries to drop 'root' privileges to switch to this group.
- Default: nagios
- Opciones de Log
- log_type <syslog> or <file>
- Log type that is uses by NPCD
- Default: syslog
- log_file </path/to/filename>
- if
log_type = file
this will be the logfile used - Default: /usr/local/pnp4nagios/var/npcd.log
- max_logfile_size <bytes>
- NPCD will rotate the logfile if the filesize of the current log is above this limit
- Default: 10485760 = 10 MByte
- log_level <integer>
- how much to log, possible values:
- 0 = No Log - except errors
- 1 = small Log - some more output
- 2 = more Log (actual ALL log messages)
- -1 = DEBUG Mode - ALL Logs and slower processing for debugging purposes
- Default: 0
- Opciones de procesado
- perfdata_spool_dir </path/to/spool/dir/>
- The directory where the perfdata file should be found
- Default: /usr/local/pnp4nagios/var/spool/
- perfdata_file_run_cmd </path/to/bin/filename>
- This is the script/binary that NPCD will execute
- Default: /usr/local/pnp4nagios/libexec/process_perfdata.pl
- perfdata_file_run_cmd_args <option>
- El argumento que se añade a perfdata_file_run_cmd
- Defecto: “-b”
La linea de comando será como ésta:
<perfdata_file_run_cmd> <perfdata_file_run_cmd_args> <filename_from_perfdata_spool_dir>
- Opciones de hilos de ejecución
- npcd_max_threads <integer value>
- Define cuántos hilos paralelos deberían ejecutarse
- Defecto: 5
- Opciones de Greedy
- use_load_threshold <0 or 1>
- define si NPCD no debería arrancar nuevos hilos de ejecución si la carga del sistema es muy alta
- 0 = disable
- 1 = enable
- Defecto: 0
- load_threshold <float value>
- si
use_load_threshold
se establece a 1 este límite de carga no será excedido - Defecto: 10.0
- Opciones de procesado
- pid_file </path/to/pid.file>
- la ruta al fichero PID
- Defecto: /var/run/npcd.pid