====== 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 [[modes#bulk_mode|Modo Masivo]] que obtiene datos durante algún tiempo y entonces le dice a Nagios que ejecute el ''_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 [[modes#bulk_mode|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: /usr/local/pnp4nagios/bin/npcd -f /usr/local/pnp4nagios/etc/npcd.cfg o /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg 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 * NPCD tries to drop 'root' privileges to switch to this user. * **default:** nagios * group * NPCD tries to drop 'root' privileges to switch to this group. * **Default:** nagios * **Opciones de Log** * log_type or * Log type that is uses by NPCD * **Default:** syslog * log_file * if ''log_type = file'' this will be the logfile used * **Default:** /usr/local/pnp4nagios/var/npcd.log * max_logfile_size * NPCD will rotate the logfile if the filesize of the current log is above this limit * **Default:** 10485760 = 10 MByte * log_level * 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 * The directory where the perfdata file should be found * **Default:** /usr/local/pnp4nagios/var/spool/ * perfdata_file_run_cmd * This is the script/binary that NPCD will execute * **Default:** /usr/local/pnp4nagios/libexec/process_perfdata.pl * perfdata_file_run_cmd_args