Está en la página 1de 65

PROYECTO FINAL DE CURSO

IMPLEMENTACIÓN DE UN SISTEMA DE
MONITORIZACIÓN EN TIEMPO REAL DE
EQUIPOS Y SERVICIOS UTILIZANDO NAGIOS
CORE EN UN ENTORNO DE PRODUCCIÓN

Alumno: Eddy Moreno Benavides

Tutor: Jordi Jiménez Vidal

Técnico Superior en Administración de


Sistemas Informáticos en Red

Instituto de Educación Superior El Grao

Martes, 30 de mayo de 2023


Tabla de contenido
Resumen.............................................................................................................................. 4
Introducción ........................................................................................................................ 6
Justificación ......................................................................................................................... 7
Objetivos ............................................................................................................................. 8
Planificación ...................................................................................................................... 10
Desarrollo .......................................................................................................................... 12
¿Qué es Nagios Core? .................................................................................................... 12
Requerimientos del servicio ........................................................................................... 13
Los archivos y directorios de configuración .................................................................... 14
Archivos de configuración principal ............................................................................ 15
Archivo de recursos .................................................................................................... 15
Archivo de configuración CGI...................................................................................... 15
Archivos de definición de objetos ............................................................................... 16
Instalación de Nagios ..................................................................................................... 19
Lidiando con el Core ................................................................................................... 19
Acomodando las CGI’s ................................................................................................ 24
Monitoreo en remoto de un host ................................................................................... 26
Instalación del agente NCPA en el cliente ................................................................... 27
Instalación de Check_NCPA en el servidor .................................................................. 29
Monitoreo de clientes mediante NCPA ....................................................................... 31
Implementación de SNMP .......................................................................................... 35
Gráficos en Nagios ......................................................................................................... 40
Instalación de Grafana + InfluxDB + Nagflux ............................................................... 40
Configuración de Grafana + InfluxDB + Nagflux........................................................... 45
Exportando gráficos mediante Grafana Reporter ........................................................ 51
Notificación de alertas vía Telegram ............................................................................... 54
Línea futura de investigación ............................................................................................. 57
Conclusiones...................................................................................................................... 58
Bibliografía ........................................................................................................................ 60

Página 2 de 65
Página 3 de 65
Resumen

La supervisión en tiempo real de las redes informáticas ha demostrado ser de gran


utilidad para las pequeñas empresas hasta las grandes corporaciones desde que se
hizo público NetSaint en el año 1999 como el primer software considerado como el
estándar de la industria en la seguridad informática.

Debido a problemas de licencia, se tuvo que cambiar el nombre a Nagios y a partir de


entonces, llegó a conocerse como la única solución confiable para garantizar la
estabilidad y la alta disponibilidad de los sistemas informáticos, llegando a ser
catalogado en el año 2007 como la mejor herramienta para administradores de
sistemas, la aplicación de monitoreo de redes del año y la aplicación de código abierto
más importante de todos los tiempos.

Enfocado a tener una arquitectura extensible, y diseñado para contar con suficiente
flexibilidad y escalabilidad, nos provee con un API 1que permite que sus características
puedan ser extendidas a través del diseño y programación de complementos.
Demostrando que su arquitectura ha sido más que un éxito y dando lugar desde hace
años a la creación de miles de complementos que extienden todo lo que es su núcleo.

Implementado como un servicio y escrito en C por razones de rendimiento, Nagios


Core ha sido diseñado para correr nativamente sobre sistemas Linux, Unix y *nix,
siendo este la elección de una gran mayoría de expertos y aficionados alrededor del
mundo debido a su gran comunidad, soporte en foros mantenidos Nagios Enterprises
y el agente multiplataforma tan útil con el que cuenta para poder consultar su API.

Por las razones mencionadas y otras que se darán a conocer, es que Nagios Core hoy
en día sigue siendo líder dentro de la industria, con más de 25 años de existencia y
varios aportes comunitarios en este proyecto que cuenta ya con una gran trayectoria.

1 Application Programming Gateway

Página 4 de 65
Summary

Real-time monitoring of computer networks has proven to be very useful for small
businesses to large corporations since Net Saint was released in 1999 as the first
software considered as the industry standard in computer’s cyber security.

Due to licensing issues, the name changed to Nagios in 2002. Since then, it became
known as the only reliable solution to guarantee stability and high availability of
computer systems. In 2007, SourceForge.net listed Nagios as the best tool for
sysadmins and also by LinuxQuestions.org as the network monitoring app of the year.
In addition, it was rated by eWeek as the most important open source app of all time.

Nagios focuses on an extensible architecture to provide enough flexibility and


scalability. The API allows its features to extend through the design and programming
of plugins. An enormous increase during years in the creation of add-ons
demonstrates that its architecture is more than a success.

Nagios Core is implemented as a service and written in C due to performance reasons.


It runs natively on Linux, Unix and *nix systems. Therefore, it is the choice of a vast
majority of experts and hobbyists around the world. In addition, Nagios Enterprises
maintains the forums, which are supported by a large community and the valuable
multiplatform agent that is able to consult its API.

For those and many more reasons, Nagios Core continues to be a leader within the
industry, with more than 25 years of successful experience and several community
contributions included into its repository.

Página 5 de 65
Introducción

El monitoreo en tiempo real de equipos y servicios se ha convertido en una tarea


crucial en los entornos de producción, lo que permite la identificación y resolución de
problemas antes de que estos afecten la disponibilidad de los sistemas. Por lo tanto,
la implementación de un sistema de monitoreo es vital para garantizar la continuidad
de cualquier negocio y cumplir con los objetivos de satisfacción del usuario.

Durante la realización de este proyecto se aborda la implementación de un sistema de


monitoreo en tiempo real utilizando el software de monitorización de infraestructuras
en red Nagios Core, siendo esta una herramienta de monitoreo que permite la
supervisión y alertas aquellos sucesos de cierta envergadura en lo que respecta a
nuestros proyectos personales, comunitarios o empresariales, a la vez que ofrece una
alta escalabilidad en producción gracias a su gran flexibilidad de uso.

Es importante destacar que Nagios Core cuenta con la licencia GNU GPL v2, lo que
significa que su código fuente es de libre acceso y que cualquier persona tiene el
derecho de modificarlo y distribuirlo. Los beneficios de contar con esta licencia son
muchos, ya que permite la colaboración y la mejora continua del software por parte
de una amplia comunidad de usuarios y desarrolladores, lo que puede resultar en un
software más seguro, estable y funcional. Además, al ser software libre, no se requiere
el pago de licencias costosas, lo que lo hace muy accesible para las PYMES en España.

Este proyecto busca la implementación de Nagios Core para la monitorización de un


entorno en producción. Mi objetivo es lograr una solución empresarial todo en uno
que permita la detección de eventos y la generación de alertas en tiempo real, así como
el acceso a informes de rendimiento y análisis estadísticos que mejoren en gran
medida el proceso de toma de decisiones dentro de cualquier organización.

En resumen, este proyecto tiene como objetivo ofrecer una solución de monitoreo en
tiempo real para los sistemas y servicios de red, utilizando software libre y tecnologías
bastante actuales para garantizar la disponibilidad y continuidad de un negocio.

Página 6 de 65
Justificación

El monitoreo en tiempo real de equipos y servicios es vital para la identificación


temprana de cualquier problema o interrupción de los servicios en un entorno de
producción. Por lo tanto, implementar un sistema de monitoreo se vuelve crítico para
garantizar la disponibilidad y continuidad de las operaciones en la organización.

Este proyecto justifica la integración del SIEM2 Nagios Core, un software que permite
a las organizaciones que lo hayan implementado el poder acceder a una solución todo
en uno para la detección de eventos en tiempo real y la generación de alertas, un
componente integral de la gestión de red proactiva y la toma de decisiones basada en
datos provenientes de las métricas obtenidas de los dispositivos de cualquier negocio.

Al encontrarse operativa esta solución asociada al ámbito de la seguridad informática,


se proporcionará un medio eficiente de monitoreo, lo que aumentará la continuidad
del negocio, así como facilitar todo lo relativo a la gestión y la toma de decisiones.

Lo que me ha motivado a la elección de este sistema de monitorización es la influencia


de mi tutor y mis compañeros de trabajo durante el tiempo en que he realizado mis
prácticas laborales, razón que me ha llevado a investigar en profundidad acerca de un
software que data de los años 90 y que hoy en día sigue siendo altamente utilizado.

2 Sistema de Gestión de Eventos e Información de Seguridad.

Página 7 de 65
Objetivos

1. Monitoreo de equipos en tiempo real: El objetivo principal de este


proyecto es monitorear en tiempo real todos los equipos y servicios deseados.
Para cumplir con este objetivo, se seleccionó Nagios Core como sistema de
monitoreo; permitiendo la supervisión en tiempo real del estado de los
equipos o servicios, a la vez que se pueden inspeccionar las estadísticas
otorgadas para la toma de decisiones fundamentadas.

2. Alertar a los usuarios de cualquier anomalía: Otro de los objetivos


clave de este proyecto es informar a los usuarios sobre cualquier anomalía que
se detecte durante el monitoreo. Para lograr este objetivo, Nagios Core se
configurará para generar alertas personalizadas que resulten relevantes.

La gestión proactiva y la toma de decisiones basada en datos permitirían la


administración proactiva de la red y la mejora de la productividad.

3. Responder de manera efectiva ante desastres: Un tercer objetivo clave


de este proyecto es responder de manera efectiva en caso de desastres. Para
cumplir con este objetivo, se desarrollaría un plan de preparación para
emergencias con el fin de identificar y reducir los riesgos relacionados
mientras se toman las medidas necesarias para restaurar rápidamente el
funcionamiento de los servicios afectados por ellos.

Nagios Core servirá como un activo invaluable para identificar problemas, al


monitorear en tiempo real la disponibilidad de servicios y equipos, además de
alertar sobre posibles fallas; permitiendo a las organizaciones responder
rápidamente ante desastres a la vez que mitiga su impacto en sus operaciones.

Página 8 de 65
4. Generar gráficos en base a las estadísticas recopiladas: Finalmente,
un objetivo importante de este proyecto es la generación de gráficos basados
en estadísticas recolectadas durante el monitoreo de la red. Para cumplir con
este objetivo, Nagios Core almacenará datos del estado de las máquinas y
servicios, mientras que se emplean herramientas de visualización para generar
gráficos de visualización que brinden una clara visibilidad del estado de la red.

En general, los objetivos de este proyecto involucran el monitoreo en tiempo real de


los equipos involucrados, responder de manera efectiva a los desastres, crear gráficos
basados en estadísticas recopiladas y alertar a los usuarios de cualquier anomalía
detectada, con el objetivo de garantizar siempre la alta disponibilidad, mejorando con
ello la eficiencia y productividad de la empresa y sus trabajadores, así como tomar
decisiones bien informadas basadas en hechos y cifras bastante precisas.

Página 9 de 65
Planificación

Consideraciones generales de Nagios Core

1. Investigar y familiarizarse con los conceptos y terminología.

2. Revisar sus características a la hora de monitorizar equipos o servicios.

Instalación de Nagios Core en Ubuntu 22.04

1. Configuración del servidor Ubuntu 22.04 con los requisitos necesarios.

2. Descarga e instalación de Nagios Core en el servidor Ubuntu 22.04.

3. Configuración de Nagios Core en el servidor Ubuntu 22.04.

Instalación del agente multiplataforma NCPA

1. Descarga e instalación del Agente NCPA en las computadoras que usan


sistemas operativos Windows y Linux para ser monitoreados remotamente.

2. Configuración de NCPA para su correcto funcionamiento al monitorear


servicios y recursos en la red que cuenten con el agente instalado.

Inspección de clientes y servicios con el agente NCPA

1. Revisión de datos recopilados por NCPA en equipos monitoreados.

2. Configuración de recursos de monitorización con el agente NCPA.

Página 10 de 65
Supervisión de dispositivos de red con SNMP v3

1. Configuración del protocolo SNMP v3 en los dispositivos a supervisar.

2. Configuración de Nagios Core para monitorear dispositivos vía SNMP.

3. Instalación de complementos de terceros para poder registrar sus estadísticas.

Creación de gráficos con Grafana, Nagflux e InfluxDB

1. Descarga e instalación de Nagflux e InfluxDB en el servidor.

2. Configuración de Nagflux e InfluxDB para la gestión y almacenamiento de datos.

3. Instalación y configuración de Grafana para crear gráficos y paneles.

Generación de reportes por Grafana con Grafana Reporter

1. Descarga e instalación de Grafana Reporter en el servidor.

2. Configuración de Grafana Reporter para generar reportes basados en


recopilación de datos estadísticos de Nagios y gráficos de Grafana.

Notificación de alertas a través de un bot en Telegram

1. Hacer uso de Telegram para crear un bot haciendo uso de @botfather.

2. Configuración de Nagios Core para enviar alertas a través de Telegram.

Este plan de trabajo tiene como fin garantizar un sistema de monitoreo efectivo en
tiempo real utilizando Nagios Core dentro de un entorno que ya se encuentra
completamente operativo. Se recomienda que se respete el orden en el que se
encuentra descrito según se menciona en el desarrollo y el procedimiento en cada uno
de los capítulos para garantizar su correcta implementación y funcionamiento.

Página 11 de 65
Desarrollo

¿Qué es Nagios Core?

Nagios Core es un sistema de monitoreo de equipos, redes e infraestructuras de código


abierto que se ofrece gratuitamente desde la compañía Nagios desde el año 2002. Es
capaz de vigilar minuciosamente ordenadores interconectados, dispositivos de red y
servicios que han sido previamente detallados por el administrador del servicio,
alertando cuando las cosas van mal y cuando estas mejoran. Fue originalmente
diseñado para correr sobre el sistema operativo Linux, aunque hoy en día también se
puede instalar en la mayoría de las variantes de Unix, FreeBSD, Solaris y MacOS X .

Destaca en el mercado por haber sido la primera gran solución completamente


funcional y a medida para aquellas organizaciones que deseaban realizar múltiples
tareas en lo que respecta a la monitorización de sus dispositivos en la red y servicios
activos, convirtiéndose en un estándar en el mercado debido a la licencia GNU GPL
v2 que posee y el lenguaje de programación C con el que se codifica en el repositorio
público de Nagios Enterprises que cuenta ya con más de 3,500 aportaciones.

Entre las características que lo destacan se encuentran las siguientes


funcionalidades:

Definir controladores de eventos que son ejecutados durante notificaciones del


sistema para lograr una resolución de problemas proactiva, establecer jerarquías de
red utilizando clientes de nivel superior, integrar una interfaz web opcional para
vigilar el estado de la red y los problemas que han ocurrido en el pasado, implementar
un diseño de complementos bastante simplificados que permite a los usuarios
desarrollar fácilmente sus propios chequeos, enviar notificaciones vía e-mail u otros
medios de comunicación, brindar soporte para implementar servidores redundantes
de monitoreo, monitorizar los recursos y el rendimiento de cada dispositivo en red,

Página 12 de 65
chequear servicios en paralelo y permitir una rotación automática de los registros que
se almacenan en el sistema.

Requerimientos del servicio

Los requerimientos que deben de cumplirse antes de su instalación son un ordenador


corriendo el sistema operativo Linux, un servidor web Apache, el preprocesador de
hipertexto PHP, la librería GD (para las CGI 3del mapa de estado, el histograma de
alertas y tendencias), SSL para encriptar las comunicaciones entre los clientes y el
servidor de monitorización, y otras librerías de uso muy específico para los CGI’s.

apache2 build-essential curl libapache2-mod-php libcrypt-des-perl


libdigest-hmac-perl libgd-dev libnet-snmp-perl libsnmp-dev libssl-
dev php-gd php snmp snmpd snmp-mibs-downloader openssl ufw unzip vim
wget

El servidor de monitorización no consume tantos recursos como para que no pueda


correr en la amplia variedad de ordenadores que se encuentran ahora en el mercado,
incluyéndose entre estos las muy populares Raspberry y Orange Pi que gozan de bajo
consumo de energía y son tendencia actualmente dentro de los laboratorios en casa.

3
Common Graphic Interface

Página 13 de 65
Los archivos y directorios de configuración

Consideraciones por tomar en cuenta al momento de configurar Nagios:

1. Las líneas que empiezan con almohadilla # son comentarios en bloque y los
que comienzan con doble barra // son comentarios en línea.

2. Los nombres de las variables deben comenzar al inicio de la línea y sin


espacios.

3. Los nombres de las variables son sensibles a mayúsculas.

4. Las rutas en el archivo de configuración principal pueden ser relativas o


absolutas.

5. El directorio principal de los archivos de configuración se encuentra ubicado


en el directorio /usr/local/nagios/etc.

Página 14 de 65
Archivos de configuración principal

Nombrado nagios.cfg, este es el archivo de configuración principal leído por el


servicio y las CGI que se suelen instalar junto a ello. En este archivo se especifican las
condiciones bajo las que funcionará nuestro servicio y se detallan todos aquellos
archivos de configuración que deben de leerse dentro de nuestra propia instalación.

Archivo de recursos

Nombrado resources.cfg, se utiliza para almacenar macros definidas por el


administrador del servicio con el propósito de poderlas ofuscar ante la vista de otros
usuarios que tengan acceso al sistema. Aquí se puede almacenar información sensible.

Archivo de configuración CGI

Nombrado cgi.cfg, contiene una gran cantidad de directivas que afectan el


funcionamiento de las CGI que se encuentran dentro de la instalación. También
realiza una referencia al archivo principal de configuración para que las CGI’s sepan
cómo se encuentra instalado Nagios Core y pueda localizar fácilmente los objetos
definidos dentro de cada uno de nuestros archivos de configuración.

Página 15 de 65
Archivos de definición de objetos

Nagios Core hace de la definición de objetos un aspecto central de su sistema de


monitoreo. Los objetos representan hosts, servicios, comandos, contactos y grupos a
monitorear. Sus características y comportamientos deben especificarse claramente a
través de la definición del objeto. Aquí se definen todas las cosas que se quieren
monitorear, cómo se desea hacer y a qué archivo corresponden cada uno de estos.

La configuración de Nagios Core se puede completar a través de archivos de texto que


definen objetos. Cada archivo de texto corresponde a un tipo de objeto cuyo nombre
puede ser especificado; estos archivos se pueden encontrar en el directorio de
configuración de Nagios, que generalmente se encuentra en
/usr/local/nagios/etc/ dentro de sistemas operativos similares a Unix.

Archivo de configuración de contactos

Nombrado contacts.cfg, se encuentra dentro del directorio objects. Contiene la


información de contacto de los diferentes usuarios y grupos de usuarios que pueden
ser contactados por el servicio de Nagios.

Página 16 de 65
Archivo de plantillas

Nombrado templates.cfg, se encuentra dentro del directorio objects. Provee


configuraciones de ejemplo en lo que respecta la definición de objetos para que pueda
ser fácil el implementar nuevas configuraciones de equipos, servicios y contactos.

Archivo de períodos de tiempo

Nombrado timeperiods.cfg, se encuentra dentro del directorio objects. Archivo


que pone a disposición ejemplos en la definición de períodos de tiempo que se pueden
referir en los clientes, servicios, contactos y la definición de dependencias.

A continuación, se muestra un resumen de todos los objetos que se pueden definir


dentro de Nagios Core:

Hosts: Se refiere a los dispositivos o sistemas que se están monitoreando. Para


configurar un host, especifique su dirección IP o nombre de dominio junto con otras
características como comprobaciones de estado e intervalos de frecuencia.

Servicios: Se definen los servicios como funciones que se ejecutan en hosts que serán
monitoreados. Un servicio podría ser, por ejemplo, monitorear el estado de un
servidor web, una base de datos o un servicio de correo electrónico. Al crear uno, se
debe especificar su host, el comando que lo monitoreará y otros detalles.

Comandos: Son las instrucciones que se ejecutan para monitorear un servicio o host,
como verificar el estado de su base de datos o extraer información referente al host
mediante NCPA o SNMP. Para definir uno con Nagios Core es necesario dar su
nombre, la ruta al script y los argumentos requeridos por el mismo.

Página 17 de 65
Contactos: Los contactos de Nagios Core son individuos o grupos que recibirán
notificaciones en caso de que surja un problema de monitoreo. Al crear contactos,
debe especificar nombre, dirección de correo electrónico, entre otras características.

Grupos: Los grupos son colecciones de hosts o servicios agrupados según alguna
característica común; por ejemplo, un ejemplo podría incluir todos los servidores web
dentro de una organización. Al configurar los grupos de Nagios Core, se deben
especificar sus nombres, así como las listas de hosts o servicios que los componen.

Hay que tener en cuenta la importancia de configurar objetos con precisión en Nagios
Core, ya que cualquier error en la configuración podría crear problemas. Por ello, se
aconseja tener un conocimiento sólido de los tipos de objeto y sus características.

Como se mencionó anteriormente, la definición de objetos en Nagios Core es clave


para el correcto funcionamiento de su sistema de monitoreo. Al especificar varios
tipos de objetos, se pueden describir características y patrones de comportamiento de
hosts, servicios, comandos, contactos y grupos que serán monitoreados.

Página 18 de 65
Instalación de Nagios

Lidiando con el Core

1. Lo primero que tenemos que realizar es la actualización de los repositorios y


descargar todos aquellos paquetes que se encuentren disponibles para poder
mantener nuestro SO al día.

sudo apt-get update && sudo apt-get upgrade

Página 19 de 65
2. A continuación, resulta recomendable reiniciar para garantizar un alto
rendimiento durante el funcionamiento del equipo.

sudo shutdown –-reboot

3. Una vez que el sistema se ha actualizado y reiniciado, necesitaremos instalar


aquellas dependencias necesarias para poder instalar Nagios Core. Estas
mismas se encuentran dentro del apartado Requerimientos del servicio.

4. Próximamente, procedemos con la descarga del código fuente de Nagios Core,


el cual podemos inspeccionar desde el repositorio oficial de Nagios
Enterprises desde github.com/NagiosEnterprises/nagioscore/releases .

La última versión de Nagios Core al momento de escribir este manual es la


4.4.11, la cual se puede obtener desde el repositorio oficial del proyecto en
github.com/NagiosEnterprises/nagioscore/releases/download/nagios-
4.4.11/nagios-4.4.11.tar.gz. Por lo tanto, hay que tomar esto en cuenta al
momento de inspeccionar las instrucciones de instalación y la sugerencia de
instalar siempre la versión más actualizada de este o cualquier otro software
que deseemos en nuestros servidores.

5. Una vez hecho, se debe continuar con la descompresión de nuestra colección


de archivos que se encuentran en el formato gzip mediante nuestra utilidad
tar. Inmediatamente, entramos al directorio que contiene nuestros archivos.

tar -xvzf nagios-4.4.11.tar.gz

cd nagios-4.4.11

Página 20 de 65
6. Y ejecutamos la tarea de configuración base previa, compilando a
continuación.

./configure

make all

7. Creamos el usuario y grupo nagios requeridos para administrar accesos a


nuestra instalación y modificamos la existencia de grupos adicionales en www-
data para asignarlo al recién creado grupo nagios.

sudo make install-groups-users

sudo usermod -aG nagios www-data

8. Instalamos los archivos binarios, CGI’s y archivos HTML.

sudo make install

9. Procedemos con la creación del servicio y también su respectiva configuración.


Este comando creará un archivo service en el directorio del sistema
/lib/systemd/system.

sudo make install-daemoninit

10. Ahora se procede a instalar y configurar los permisos en el directorio que


almacena los comandos externos para su uso con Nagios Core.

sudo make install-commandmode

Página 21 de 65
11. Después de ello, con esta orden creamos los archivos de configuración de
ejemplo que son requeridos por Nagios para poder funcionar en el arranque.

sudo make install-config

12. Para concluir con la instalación del Core, se procede instalar los archivos de
configuración de nuestro servidor web Apache, configurándolo en el proceso.

sudo make install-webconf

sudo a2enmod rewrite cgi

sudo systemctl restart apache2

13. Si lo que nos apetece es darle un toque más contemporáneo a nuestra interfaz,
podemos utilizar este tema sugerido por la comunidad para este propósito.

sudo make install-exfoliation

14. Ahora que ya nuestra instalación de Nagios Core se encuentra totalmente


funcional y accesible desde el directorio /nagios, procedemos a crear las
credenciales del administrador que gestione nuestro servicio a partir de ahora.

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users


nagiosadmin

Página 22 de 65
15. Con esto concluiría la instalación de Nagios Core, pero no es el final de
nuestro trabajo en este ámbito. Lo que sigue ahora es la instalación de los
complementos o CGI’s que le otorgan los músculos necesarios para poder
monitorizar la mayoría de los aspectos de nuestra equipos, red y servicios.

Página 23 de 65
Acomodando las CGI’s

1. Para proceder con la instalación de las CGI’s de Nagios Core, lo primero a


realizar es la descarga de la última versión del código fuente que se encuentra
en la web independiente a Nagios Enterprises y que lleva por nombre nagios-
plugins.org https://nagios-plugins.org/download/

La última versión de Nagios Plugins al momento de escribir este manual es la


2.4.4. Por lo tanto, hay que tomar esto en cuenta al momento de inspeccionar
las instrucciones de instalación y la sugerencia de instalar siempre la versión
más actualizada de este o cualquier otro software que deseemos en nuestros
servidores.

2. Una vez hecho, se debe continuar con la descompresión de nuestra colección


de archivos que se encuentran en el formato gzip mediante nuestra utilidad
tar. Accedemos al directorio que contiene nuestros archivos.

tar xvzf nagios-plugins-2.4.4.tar.gz

Página 24 de 65
cd nagios-plugins-2.4.4

3. Y ejecutamos la tarea de configuración previa a la compilación y al terminar,


copiamos los binarios generados hacia sus carpetas de destino en el sistema.

./configure --with-nagios-user=nagios --with-nagios-


group=nagios

make

sudo make install

4. Como buena práctica se sugiere deshabilitar y eliminar aquellos sitios webs


existentes en nuestro servidor. Uno de ellos es el ejemplo de sitio web seguro
que viene por defecto en Apache, así que procedemos con la purga de ello y el
reinicio del servicio para ver los cambios.

sudo a2dissite 000-default.conf

sudo rm /etc/apache2/sites-available/000-default.conf

sudo systemctl enable --now nagios.service

sudo systemctl restart apache2

5. Con esto concluiría la instalación de los complementos de Nagios, un


repositorio mantenido independientemente por la comunidad de software
libre interesada en la implementación gratuita de Nagios.

Página 25 de 65
Monitoreo en remoto de un host

NCPA (Nagios Cross-Platform Agent) se ha convertido en una de las soluciones más


populares en los últimos años para monitorear hosts remotos con Nagios al brindar a
los administradores de sistemas una forma segura y confiable de administrar hosts de
forma remota. Esta herramienta ofrece una interfaz de monitoreo multiplataforma
unificada, lo que la hace adecuada para monitorear hosts en los sistemas operativos
Windows, Linux y macOS.

Combinado con Nagios Core, este agente brinda varias ventajas distintivas, como una
mayor flexibilidad de configuración y monitoreo, medidas de seguridad mejoradas,
mayor capacidad de automatización de tareas y un tiempo de respuesta de alerta más
rápido. Los administradores de sistemas que usan NCPA pueden monitorear los
factores de carga del sistema, como la utilización del espacio en disco, el uso de la
memoria RAM o el estado del servicio, entre otras métricas críticas del sistema.

Página 26 de 65
Como tal, este trabajo de investigación busca explorar y describir NCPA con Nagios
para el monitoreo remoto de hosts examinando sus posibles escenarios de
implementación para monitorear hosts en los sistemas operativos Windows y Linux.

Instalación del agente NCPA en el cliente

1. Para llevar a cabo la instalación del agente NCPA (Nagios Cross-Platform


Agent), lo primero a realizar es la descarga de la última versión del paquete
correspondiente al sistema operativo de destino en su última versión que se
encuentra en la web https://assets.nagios.com/downloads/ncpa .

Hay que tomar en cuenta la versión que se instala al momento de inspeccionar


las instrucciones y seguir siempre la sugerencia de usar la versión más
actualizada del software que deseemos implementar en nuestros clientes.

2. Procedemos con la instalación del agente dentro de nuestro SO.

1. En clientes utilizando el sistema operativo Ubuntu Linux:

sudo dpkg -i ncpa-x.x.x.xx.xxxxx.deb

2. En clientes utilizando el sistema operativo Windows 11:

Abrir el archivo -> Permitir al software realizar


cambios -> Aceptar los términos de uso -> Instalar
para cualquier usuario utilizando este ordenador
-> Instalar.

3. Ahora se tiene que permitir el tráfico de NCPA a través del puerto 5693.

En clientes utilizando el sistema operativo Ubuntu Linux:

Página 27 de 65
sudo ufw allow 5693/tcp
sudo ufw reload

En clientes utilizando el sistema operativo Windows 11:

Abrir Windows Defender Firewall con seguridad


avanzada -> Haga clic en Reglas de entrada
-> Haga clic en Acción -> Haga clic en Nueva
Regla -> Haga clic en Puerto -> Haga clic
en TCP y especifique el puerto 5693
-> Seleccione Permitir la conexión ->
Seleccione los tipos de ubicación de red a
los que se aplica esta regla -> Escriba un
nombre y una descripción para la regla ->
Haga clic en Finalizar.

4. Para finalizar, tenemos que habilitar el inicio automático del agente.

En clientes utilizando el sistema operativo Ubuntu Linux:

sudo systemctl enable –-now ncpa_listener

En clientes utilizando el sistema operativo Windows 11:

Abrir Inicio -> Busque Servicios y haga clic


para abrir la aplicación -> Haga doble clic en
el servicio para habilitarlo -> Seleccione la
opción Automático para iniciar el servicio
durante el inicio -> Haga clic en Aplicar.

Página 28 de 65
Instalación de Check_NCPA en el servidor

1. Para llevar a cabo la instalación del complemento check_ncpa.py, lo primero


a realizar es la descarga de la última versión del paquete correspondiente al
sistema operativo de destino en su última versión que se encuentra en la web
https://assets.nagios.com/downloads/ncpa .

Hay que tomar en cuenta la versión que se instala al momento de inspeccionar


las instrucciones y seguir siempre la sugerencia de usar la versión más
actualizada del software que deseemos implementar en nuestros servidores.

1. Procedemos con la descompresión de nuestro archivo que se


encuentran en el formato gzip mediante nuestra utilidad tar y
accedemos al directorio que se acaba de crear.

tar -xvzf check_ncpa.tar.gz

cd check_ncpa/

2. Una vez hecho esto, se puede comprobar el funcionamiento del archivo


haciendo uso del siguiente comando, respetando siempre la sintaxis.

python3 check_ncpa.py -H ip-del-cliente -T 60 -M


"memory/virtual/used" -u G

3. A continuación, otorgamos permisos de ejecución al archivo, y le


entregamos la pertenencia de este al usuario que hará uso de ello.

sudo chmod +x check_ncpa.py

sudo chown nagios:nagios check_ncpa.py

Página 29 de 65
4. Para concluir, movemos el archivo hacia el directorio en donde se
encuentran el resto de ejecutables que corre Nagios para su correcto
funcionamiento.

sudo mv check_ncpa.py /usr/local/nagios/libexec/

Página 30 de 65
Monitoreo de clientes mediante NCPA

En el archivo /usr/local/nagios/etc/object/commands.cfg debemos de


configurar los siguientes comandos que utilizaremos para la llamada de inspección de
servicios desde los archivos de configuración de hosts con la siguiente estructura:

define command {

command_name nombre_del_comando

command_line $USER1$/comando_a_invocar

Nota:

$USER1$ es una variable que procede desde el archivo de configuración resources.cfg


y contiene la ruta del directorio /usr/local/nagios/libexec/ en donde se contienen
todos los archivos ejecutables que invoca exclusivamente Nagios Core.

Comandos por definir en el archivo commands.cfg


Nombre del Comando por invocar
comando
check_ncpa python3 $USER1$/check_ncpa.py -H $HOSTADDRESS$ $ARG1$

A continuación, se debe habilitar el uso de los archivos de configuración de clientes


desde el archivo de configuración principal nagios.cfg ubicado en
/usr/local/nagios/etc/object/ agregando la siguiente línea:

cfg_file=/usr/local/nagios/etc/objects/mis-hosts.cfg

Página 31 de 65
Como siguiente paso, creamos el archivo mis-hosts.cfg en el directorio
/usr/local/nagios/etc/objects/ y agregamos nuestros clientes deseados con la
siguiente estructura:

define hostgroup {

hostgroup_name nombre_del_grupo_de_clientes

alias nombre_largo_del_grupo_de_clientes

members miembros_del_grupo_de_clientes

define host {

use [linux-host] [windows-server] [generic-host]

host_name nombre_del_cliente

alias nombre_largo_del_cliente

parents dispositivo_a_nivel_superior_jerarquico

hostgroups grupo_de_hosts_al_que_pertenece_el_host

address dirección_ip_del_cliente

contacts nombre_de_contacto (default= nagiosadmin)

contact_groups grupo_de_contacto (default= nagios)

notification_interval intervalo_de_notificaciones (default = 60)

notification_period período_de_notificaciones (default = 24x7)

Página 32 de 65
Para proceder a inspeccionar los servicios de cada cliente, estos tienen que ser
especificados mediante la siguiente estructura, respetando cada uno de sus campos:

define service {

host_name nombre_del_cliente

service_description nombre_del_servicio

check_command comando_a_invocar

max_check_attempts máxima_cantidad_de_chequeos

check_interval intervalo_de_chequeos_regulares

retry_interval intervalo_de_reintentos_de_un_chequeo

check_period período_de_chequeos (default = 24x7)

notification_interval intervalo_de_notificacion

notification_period período_de_notificaciones

contacts nombre_de_contacto (default= nagiosadmin)

contact_groups grupo_de_contacto (default= nagios)

Nota:

Las definiciones de objeto check_interval, retry_interval,


notification_interval y notification_period se evalúan en minutos.

Página 33 de 65
A continuación, se dará una lista de los comandos que se pueden especificar en la
directiva check_command para hacer mucho más clara y concisa la explicación de
cada uno de los resultados que se pueden obtener mediante el agente de NCPA.

Comandos por definir en el archivo mis-hosts.cfg


Función Comando por especificar en la directiva
check_command
Vigilar la versión del check_ncpa! -P 5693 -M system/agent_version
agente instalado
Vigila el tiempo que ha check_ncpa!-t 'mytoken' -P 5693 -M 'system/uptime'
pasado activo el host
Vigila el uso promedio check_ncpa!-t 'mytoken' -P 5693 -M cpu/percent -w 75 -c
del CPU 85 -q 'aggregate=avg'
Vigila el consumo de check_ncpa!-t 'mytoken' -P 5693 -M memory/virtual -w
memoria RAM 80 -c 90 -u G
Vigila el uso del disco check_ncpa!-t 'mytoken' -P 5693 -M
duro 'disk/logical/nombre_de_la_partición|' -w 90 -c 95
check_ncpa!-t 'mytoken' -P 5693 -M
'interface/nombre_de_la_interfaz/bytes_recv' -w 90
Vigilar el tráfico de la red -c 95
de una interfaz check_ncpa!-t 'mytoken' -P 5693 -M
'interface/nombre_de_la_interfaz /bytes_sent' -w 90
-c 95

Vigilar la cantidad de check_ncpa!-t 'mytoken' -P 5693 -M processes -w 300 -c


procesos corriendo 400

Vigilar el estado de un check_ncpa!-t 'mytoken' -P 5693 -M 'services' -q


servicio en concreto 'service=nombre_del_servicio_a_vigilar,
status=running'

Para comprobar si la configuración es correcta se debe de utilizar el comando sudo


/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg .

Página 34 de 65
Implementación de SNMP

Nagios es una herramienta de monitoreo de red ampliamente utilizada en el mundo


de TI, utilizada para rastrear de cerca el estado de los equipos y servicios en tiempo
real. Una de sus funciones principales es monitorear los dispositivos en la red; esto
permite a los administradores del sistema vigilar todos los servicios relevantes
disponibles constantemente para los usuarios.

Nagios utiliza el protocolo SNMP, un estándar de la industria IT utilizado para


supervisar dispositivos en red y recopilar información de forma remota. SNMP se creó
específicamente para dispositivos como conmutadores, enrutadores y cortafuegos; su
última iteración SNMPv3 ofrece una mayor privacidad en la transferencia de datos
debido a los controles de autenticación, encriptación y autorización de usuarios que
hacen que la transmisión de información sea mucho más segura.

En este proyecto de investigación, se explorará la implementación de Nagios SNMP 4


v3 para monitorear dispositivos en la red. Su objetivo principal es mejorar la
seguridad y la confidencialidad durante la transmisión de información, así como
afinar la precisión y la calidad de los datos recopilados. SNMPv3 brindaría a los
administradores de sistemas una imagen más completa de cómo funcionan sus
dispositivos para que puedan tomar decisiones informadas de manera más rápida.

• Lo primero que debemos de hacer es permitir el tráfico a través del


protocolo SNMP hacia y desde nuestro servidor

sudo ufw allow snmp

sudo ufw reload

• A continuación, procedemos a habilitar el servicio

sudo systemctl enable --now snmpd.service

4
Simple Network Management Protocol

Página 35 de 65
• Ahora podemos inspeccionar todos aquellos elementos a través de una
caminata SNMP haciendo uso de las credenciales que hemos habilitado
para el protocolo SNMPv3. En este comando utilizamos una base de datos
libre para el manejo de la información otorgada para tener una salida
mucho más legible de los mismos OID que nos devuelva esta consulta.

snmpwalk -v3 -l authPriv -a SHA -A password -x AES


-X password -u username dirección_ip -m ALL .1

• Sin embargo, no haremos uso de los elementos informativos de forma


manual. Se ha optado continuar con complementos creados por la
comunidad para ahorrarnos tiempo y trabajo que otros ya han realizado
para satisfacer sus propias necesidades. Estos complementos se
encuentran públicos en repositorios de código en donde cualquiera puede
hacer uso de ellos en base a la licencia con que han sido compartidos.

printf ' https://github.com/Sysnove/shinken-


plugins/blob/master/check_netint.pl \n

https://raw.githubusercontent.com/SteScho/manubulo
n-snmp/master/plugins/check_snmp_mem.pl \n

https://github.com/willixix/WL-
NagiosPlugins/blob/master/check_uptime.pl ' >
complementos_snmp

wget --input-file=complementos_snmp

• Procederiamos a modificar el archivo commands.cfg ubicado en


/usr/local/nagios/etc/object/ para agregar los siguientes comandos
que utilizaremos para la inspección de servicios desde el archivo de hosts.
Esto lo realizaremos utilizando la estructura planteada en el capítulo
anterior.

Página 36 de 65
Comandos por definir en el archivo commands.cfg
Nombre del Comando por invocar
comando
Vigila $USER1$/check_snmp -H $HOSTADDRESS$ -P 3 -U $USER2$
cualquier -L authPriv -a SHA -A $USER3$ -x AES -X $USER3$ -o $ARG1$
OID
Vigilar el perl $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -n
tráfico de la $ARG1$ -l $USER2$ -x $USER3$ -X $USER3$ -L "$ARG2$" -B -
red de una Y -k -d 120 -w 0,0 -c 0,0 --label
interfaz
Vigila el perl $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -l
consumo de $USER2$ -X $USER3$ -L $ARG1$ -x $USER3$ -f -T $ARG1$ -w
la memoria $ARG2$ -c $ARG3$
RAM
Vigila el perl $USER1$/check_uptime.pl -f -w -H $HOSTADDRESS$ -l
tiempo que $USER2$ -x $USER3$ -X $USER3$ -L $ARG1$ -P
ha pasado "$SERVICEPERFDATA$"
activo el host

Nota:

$USER2$ y $USER3$ son variables que proceden desde el archivo de configuración


resources.cfg y contiene las credenciales con las que se identifica nuestro servidor
con el dispositivo mediante el protocolo SNMP del cual se leen los datos deseados.

$USER2$ = user

$USER3$ = password

Página 37 de 65
• Podemos comprobar el funcionamiento de estos complementos al
ejecutarlos manualmente dentro de la carpeta que los contiene.

./check_snmp -H dirección_ip -P 3 -U username -L


authPriv -a SHA -A password -x AES -X password -o
sysUpTime.0

./check_snmp_netint.pl -H dirección_ip -l username


-x password -X password -L sha,des -n
nombre_de_la_interfaz_del_dispositivo -M -k -w
200,400 -c 0,600 -s --label

perl check_snmp_mem.pl -H dirección_ip-l f0rbidden-


Us3r -x username -X password -L sha,des -f -w 0,0 -
c 0,0

perl check_uptime.pl -f -w -H 192.168.5.1 -l


username -x password -X password -L sha,des -P
"$SERVICEPERFDATA$"

• A continuación, movemos los archivos hacia el directorio de destino, les


otorgamos los permisos de ejecución a cada uno, y entregamos la
pertenencia de estos al usuario y al grupo que les darán el uso adecuado.

sudo chmod +x check_snmp_netint.pl

sudo chmod +x check_snmp_mem.pl

sudo chmod +x check_uptime.pl

sudo chown nagios:nagios check_snmp_netint.pl

sudo chown nagios:nagios check_snmp_mem.pl

sudo chown nagios:nagios check_uptime.pl

Página 38 de 65
• Debido a la creación de registros en el directorio /tmp/ desde el
complemento check_snmp_netint.pl, tendremos que otorgar la
propiedad de un fichero al usuario nagios para que pueda funcionar.

sudo chown nagios:nagios


/tmp/tmp_Nagios_int.dirección_ip_del_dispositivo_a
_monitorizar>.<interfaz_de_red_monitorizada>

• Para finalizar, lo que tenemos que hacer es agregar los servicios que
queremos monitorizar desde Nagios haciendo uso de nuestro protocolo
SNMP, esto lo realizaremos haciendo uso de la estructura planteada en el
punto anterior.

Comandos por definir en el archivo mis-hosts.cfg


Función Comando por especificar en la directiva
check_command
Vigila cualquier OID check_snmp!sysUpTime.0

Vigilar el tráfico de la check_snmp_netint!External!sha,des


red de una interfaz
Vigila el consumo de la check_snmp_mem!sha,des!0,0!0,0
memoria RAM
Vigila el tiempo que ha check_uptime!sha,des
pasado activo el host

Página 39 de 65
Gráficos en Nagios

Instalación de Grafana + InfluxDB + Nagflux

Un monitoreo eficiente es esencial para garantizar un rendimiento óptimo y una


disponibilidad constante en entornos de producción. Nagios nos ofrece una amplia
gama de funciones para gestionar los componentes críticos de la infraestructura. Sin
embargo, para aprovechar su máximo potencial, es necesario contar con una
plataforma de visualización que permita analizar los datos de manera clara y concisa.

En este contexto, la combinación de Grafana, InfluxDB y Nagflux se ha convertido en


una solución ampliamente adoptada para integrar el monitoreo de Nagios con una
plataforma de visualización potente y flexible. Grafana, siendo un software libre
licenciado bajo AGPL5 v3, nos habilita la visualización y análisis a detalle,
permitiéndonos crear paneles personalizados y gráficos interactivos que facilitan la
comprensión de los datos de monitoreo. Por su parte, InfluxDB, una base de datos

5
Affero General Public License

Página 40 de 65
libre de alto rendimiento, utilizado para almacenar y gestionar los datos recopilados
por Nagios con estampas de tiempo. Entre ellos se contará con un conector que
almacene todos los datos de Nagios en esta base de datos, siendo este mismo Nagflux.

En pocas palabras, la combinación de Grafana, InfluxDB y Nagflux nos proporciona


una solución integral para el monitoreo de Nagios. Al instalar y configurar
adecuadamente estas herramientas, los administradores y equipos de monitoreo
pueden obtener una visión más completa y detallada de sus sistemas, contar con una
mayor flexibilidad en la personalización de los gráficos, y se les permite identificar a
tiempo problemas y tomar en base a estas estadísticas medidas correctivas efectivas.

1. Para proceder con la instalación, en primer lugar, tendremos que actualizar los
repositorios del sistema y proceder a instalar las siguientes dependencias.

sudo apt-get update


sudo apt-get install apt-transport-https golang golang-
github-influxdb-usage-client-dev git -y

2. A continuación, procederíamos con la instalación de InfluxDB, una base de datos


optimizada para almacenar datos con marcas de tiempo o TSBD.

a. Lo primero a realizar es agregar los repositorios de InfluxData a nuestra


lista de repositorios locales.

curl -s https://repos.influxdata.com/influxdata-
archive_compat.key > influxdata-archive_compat.key

echo
'393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16
e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c
&& cat influxdata-archive_compat.key | gpg --dearmor |
sudo tee /etc/apt/trusted.gpg.d/influxdata-
archive_compat.gpg > /dev/null

Página 41 de 65
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-
archive_compat.gpg] https://repos.influxdata.com/debian
stable main' | sudo tee
/etc/apt/sources.list.d/influxdata.list

b. Por último, lo que tenemos que hacer es instalar e iniciar el servicio.

sudo apt-get update && sudo apt-get install influxdb

sudo service enable --now influxdb

3. Al terminar con InfluxDB, lo siguiente será proceder con Nagflux.

a. Lo primero que realizaremos es crear una variable de entorno que apunte


hacía el directorio en donde se encuentra presente GoLang.

echo "export GOPATH=$HOME/gorepo" >> ~/.bashrc


source ~/.bashrc
mkdir $GOPATH

b. A continuación, lo que haremos es obtener el código del proyecto desde el


repositorio alojado en github.com/griesbacher/nagflux

go get -v -u github.com/griesbacher/nagflux
go env -w GO111MODULE=off
go build github.com/griesbacher/nagflux

Página 42 de 65
c. Creamos el directorio en el que alojaremos el servicio, enviamos los
archivos que le son propios y otorgamos a Nagios la pertenencia de los
directorios en los que se almacenarán los datos de rendimiento.

sudo mkdir -p /opt/nagflux


sudo cp $GOPATH/bin/nagflux /opt/nagflux/
sudo mkdir -p
/usr/local/nagios/var/spool/nagfluxperfdata
sudo chown nagios:nagios
/usr/local/nagios/var/spool/nagfluxperfdata

d. Una vez realizada la configuración de Nagflux, crearemos el


servicio y haremos que se inicie durante el arranque.

sudo cp
$GOPATH/src/github.com/griesbacher/nagflux/nagflux.servi
ce /lib/systemd/system/

sudo chmod +x /lib/systemd/system/nagflux.service

sudo systemctl daemon-reload

sudo systemctl enable nagflux.service

Nota:

No será necesario iniciar el servicio Nagflux de inmediato, debido a que falta


este mismo debe ser configurado antes de ejecutarse.

Página 43 de 65
4. Para concluir con la instalación del software para los gráficos, procederíamos con
la instalación de Grafana, la herramienta de representación de los datos.

a. Lo primero a realizar es descargar la clave de firma del repositorio.

sudo wget -q -O /usr/share/keyrings/grafana.key


https://apt.grafana.com/gpg.key

b. A continuación, agregamos el repositorio de software Grafana.

echo "deb [signed-by=/usr/share/keyrings/grafana.key]


https://apt.grafana.com stable main" | sudo tee -a
/etc/apt/sources.list.d/grafana.list

5. Para concluir con todo ello, solo quedaría actualizar nuestros repositorios y proceder con
la instalación del software.

sudo apt-get update

sudo apt-get install grafana

Página 44 de 65
Configuración de Grafana + InfluxDB + Nagflux

Ahora que contamos con las aplicaciones instaladas para poder graficar, tendremos
que proceder con la configuración, siendo esto necesario para Nagflux y Nagios.

1. Para empezar, tendremos que conectar Nagflux con InfluxDB mediante los
siguientes parámetros de configuración que crearemos con esta sentencia.

echo '[main]

NagiosSpoolfileFolder =
"/usr/local/nagios/var/spool/nagfluxperfdata"

NagiosSpoolfileWorker = 1

InfluxWorker = 2

MaxInfluxWorker = 5

DumpFile = "nagflux.dump"

NagfluxSpoolfileFolder =
"/usr/local/nagios/var/nagflux"

FieldSeparator = "&"

Página 45 de 65
BufferSize = 10000

FileBufferSize = 65536

DefaultTarget = "all"

[Log]

LogFile = ""

MinSeverity = "INFO"

[InfluxDBGlobal]

CreateDatabaseIfNotExists = true

NastyString = ""

NastyStringToReplace = ""

HostcheckAlias = "hostcheck"

[InfluxDB "nagflux"]

Enabled = true

Version = 1.0

Address = "http://127.0.0.1:8086"

Arguments =
"precision=ms&u=root&p=root&db=nagflux"

StopPullingDataIfDown = true

[InfluxDB "fast"]

StopPullingDataIfDown = false' | sudo tee


config.gcfg

2. Una vez creado, tendremos que iniciar el servicio.

sudo systemctl start nagflux.service

Página 46 de 65
3. Y verificamos que nuestro conector interactúe correctamente con InfluxDB.

curl -G "http://localhost:8086/query?pretty=true" --
data-urlencode "q=show databases"

4. Nagios por defecto no procesa datos de rendimiento. Por lo


tanto, se debe indicarle que lo haga y adaptar su configuración
en consecuencia. Esto se realiza en el archivo nagios.cfg.

sudo sh -c "sed -i
's/^process_performance_data=0/process_performance_data=
1/g' /usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#host_perfdata_file=/host_perfdata_file=/g'
/usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#host_perfdata_file_template=.*/host_perfdata_file_t
emplate=DATATYPE::HOSTPERFDATA\\\\tTIMET::\$TIMET\$\\\\t
HOSTNAME::\$HOSTNAME\$\\\\tHOSTPERFDATA::\$HOSTPERFDATA\
$\\\\tHOSTCHECKCOMMAND::\$HOSTCHECKCOMMAND\$/g'
/usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#host_perfdata_file_mode=/host_perfdata_file_mode=/g
' /usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#host_perfdata_file_processing_interval=.*/host_perf
data_file_processing_interval=15/g'
/usr/local/nagios/etc/nagios.cfg"

Página 47 de 65
sudo sh -c "sed -i
's/^#host_perfdata_file_processing_command=.*/host_perfd
ata_file_processing_command=process-host-perfdata-file-
nagflux/g' /usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#service_perfdata_file=/service_perfdata_file=/g'
/usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#service_perfdata_file_template=.*/service_perfdata_
file_template=DATATYPE::SERVICEPERFDATA\\\\tTIMET::\$TIM
ET\$\\\\tHOSTNAME::\$HOSTNAME\$\\\\tSERVICEDESC::\$SERVI
CEDESC\$\\\\tSERVICEPERFDATA::\$SERVICEPERFDATA\$\\\\tSE
RVICECHECKCOMMAND::\$SERVICECHECKCOMMAND\$/g'
/usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#service_perfdata_file_mode=/service_perfdata_file_m
ode=/g' /usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#service_perfdata_file_processing_interval=.*/servic
e_perfdata_file_processing_interval=15/g'
/usr/local/nagios/etc/nagios.cfg"

sudo sh -c "sed -i
's/^#service_perfdata_file_processing_command=.*/service
_perfdata_file_processing_command=process-service-
perfdata-file-nagflux/g'
/usr/local/nagios/etc/nagios.cfg"

Página 48 de 65
5. Después de esto, lo único que quedaría es reemplazar los comandos de
rendimiento en el archivo commands.cfg de Nagios.

define command {

command_name process-host-perfdata-file-nagflux

command_line /bin/mv /usr/local/nagios/var/host-


perfdata
/usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perf
data.host

define command {

command_name process-service-perfdata-file-nagflux

command_line /bin/mv
/usr/local/nagios/var/service-perfdata
/usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perf
data.service

6. Luego, después de reiniciar el servicio, podremos comprobar que Nagflux está


recuperando datos. Esto puede tardar unos minutos.

sudo systemctl restart nagios

curl -G
"http://localhost:8086/query?db=nagflux&pretty=true"
--data-urlencode "q=show series"

Página 49 de 65
7. No hay que olvidarnos de permitir el acceso al puerto 3000 a
las conexiones entrantes a nuestro servidor mediante UFW.

sudo ufw allow 3000/tcp

sudo ufw reload

8. Nos conectamos con el nombre de usuario y la contraseña “admin”.

9. Para concluir, agregaremos nuestra base de datos InfluxDB seleccionando


"Agregar fuente de datos". Sustituimos el nombre de la conexión por “nagflux”,
rellenamos el campo “URL” con lo propuesto y el campo “Base de datos” con
“nagflux”. Luego validamos a través del botón "Guardar y probar".

10. Esto sería todo para poder consultar datos de nuestra base de datos InfluxDB
que contiene a este momento la información que nos entrega Nagios Core.

Página 50 de 65
Exportando gráficos mediante Grafana Reporter

La exportación de gráficos es una funcionalidad esencial en el monitoreo y análisis de


datos, ya que permite generar informes y compartir visualizaciones con las partes
interesadas. En este contexto, Grafana Reporter desempeña un papel clave al
proporcionar una solución eficiente para exportar gráficos generados en Grafana. Al
utilizar Grafana Reporter, los usuarios pueden generar archivos PDF o PNG de alta
calidad que contengan gráficos, paneles y tableros. Esto facilita la creación de
informes personalizados, presentaciones y análisis detallados basados en los datos
visualizados. Con la capacidad de automatizar la exportación de gráficos, Grafana

Página 51 de 65
Reporter se convierte en una herramienta invaluable para compartir información de
manera efectiva y brindar una mayor visibilidad a los resultados del análisis.

1. Lo primero es instalar las dependencias necesarias para Grafana Reporter.

sudo apt-get install alsa-topology-conf alsa-ucm-conf


fonts-liberation libasound2 libasound2-data libxss1
libgbm1 libwayland-server0 texlive-latex-base

2. A continuación, procedemos a instalar desde Grafana el complemento


indicado para la renderización de imágenes desde el servidor.

sudo grafana-cli plugins install grafana-image-renderer

3. A continuación, tendremos que reiniciar el servidor de Grafana.

sudo systemctl restart grafana-server

4. Procedemos con la instalación del complemento de Grafana Reporter.

go get github.com/IzakMarais/reporter/...

export GO111MODULE=on

sudo go install
github.com/IzakMarais/reporter/cmd/grafana-
reporter@latest

5. Abrimos los puertos necesarios para el servicio.

sudo ufw allow 8686/tcp

Página 52 de 65
sudo ufw reload

6. Solicitamos el token de acceso al API de Grafana.

curl -X POST
http://admin:admin@localhost:3000/api/user/using/1

curl -X POST -H "Content-Type: application/json" -d


'{"name":"apikeycurl", "role": "Admin"}'
http://admin:admin@localhost:3000/api/auth/keys

7. Y corremos el servicio con el que podremos exponer una dirección IP para


que los demás puedan acceder al reporte.

sudo /root/go/bin/grafana-reporter &

curl -L -o reporte.pdf
http://192.168.5.32:8686/api/v5/report/civired-
5?apitoken=ApiToken

8. Sino, simplemente podemos ejecutar el archivo binario y obtener el reporte


desde el mismísimo servidor.

sudo ./gorepo/bin/grafana-reporter -cmd_enable=1 -


cmd_apiKey ApiToken -ip localhost:3000 -cmd_dashboard
civired-5 -cmd_ts from=now-1y -cmd_o reporte.pdf -grid-
layout

Página 53 de 65
Notificación de alertas vía Telegram

En el ámbito del monitoreo de sistemas y servicios, contar con un sistema de


notificaciones es esencial para garantizar una respuesta rápida ante cualquier
anomalía. En este capítulo, exploraremos la integración de Nagios, una poderosa
herramienta de monitoreo, con la popular plataforma de mensajería Telegram. Esta
integración ofrece una solución eficiente para recibir notificaciones en tiempo real, lo
que permite a los administradores estar al tanto de cualquier incidencia.

La elección de Telegram presenta numerosas ventajas. Empezando con que es una


plataforma de instantánea ampliamente utilizada y disponible en múltiples
plataformas, garantizando la accesibilidad a las notificaciones en cualquier momento
y lugar, lo que resulta especialmente útil para los administradores que necesitan estar
informados sobre el estado de los sistemas en todo momento. Además, ofrece un alto
nivel de seguridad mediante el cifrado de extremo a extremo.

Para integrar Nagios con Telegram, se requiere una configuración adecuada.

1. En primer lugar, es necesario crear un bot de Telegram a través de la


plataforma BotFather. El bot actuará como intermediario entre Nagios y
Telegram, recibiendo y enviando las notificaciones.

Se procede a enviar el comando /newbot a @BotFather

2. A continuación, se debe de asignar un nombre al bot.

Página 54 de 65
3. Una vez que se le ha asignado un nombre, se generará automáticamente un
token de acceso que se podrá utilizar en la configuración de Nagios.

4. Próximamente, creamos un grupo de Telegram y agregamos al bot a este


mismo.

5. Accedemos a https://api.telegram.org/botTokenDeAcceso/getUpdates
para activarlo y darle uso a continuación.

6. Agregamos los siguientes comandos al archivo commands.cfg ubicado en el


directorio /usr/local/nagios/etc/objects/commands.cfg para enviar
notificaciones:

define command

command_name notify-host-by-telegram

command_line curl -k -L --data chat_id=groupId --data


parse_mode="markdown" --data "text=%60$HOSTNAME$%60
%0A%0ANotification Type: %60$NOTIFICATIONTYPE$%60%0AState:
%60$HOSTSTATE$%60%0AAddress: %60$HOSTADDRESS$%60%0AInfo:
%60$HOSTOUTPUT$%60%0ADate/Time: %60$LONGDATETIME$%60"
"https://api.telegram.org/botTokenDeAcceso/sendMessage"

Página 55 de 65
define command {

command_name notify-service-by-telegram

command_line curl -k -L --data chat_id=groupId --data


parse_mode="markdown" --data "text=%60$HOSTNAME$%60
%0A%0ANotification Type: %60$NOTIFICATIONTYPE$%60%0AService:
%60$SERVICEDESC$%60%0AHost: %60$HOSTALIAS$%60 %0AState:
%60$SERVICESTATE$%60 %0ADate/Time: %60$LONGDATETIME$%60
%0AAdditional Info: %60$SERVICEOUTPUT$"%60
"https://api.telegram.org/botTokenDeAcceso/sendMessage"

7. Reinicia el servicio de Nagios

8. Ya tendrás el bot de telegram funcionando en la privacidad del grupo que le


has especificado.

La integración de Nagios con Telegram permite personalizar las notificaciones según


las preferencias y necesidades de cada usuario. Es posible definir el formato de las
alertas, incluyendo información relevante como el nombre del host o servicio
afectado, el estado de la alerta y detalles adicionales que ayuden a comprender el
problema. Además, se pueden establecer niveles de prioridad y filtros para determinar
qué tipos de alertas se enviarán a Telegram, lo que permite una gestión más eficiente
de las notificaciones y evita la sobrecarga de información innecesaria.

Página 56 de 65
Línea futura de investigación

Los planes de investigación futuros apuntan a explorar cuatro aspectos cruciales que
podrían mejorar la implementación de este sistema de monitoreo en tiempo real que
implementa Nagios Core dentro de un entorno de un ambiente real de trabajo.

Los aspectos que se abarcan hacen referencia a lo que es extender sus capacidades de
descubrimiento y monitorización, referentes a la configuración o respuesta a eventos:

1. PHPIpam, un escáner y registro de red automático, herramienta que puede ser


invaluable cuando se usa para administrar direcciones IP o identificar dispositivos
conectados a una red, que al integrarse con Nagios Core podría aumentar la
detección de dispositivos y mejorar la administración de la infraestructura.

2. NagioSQL permite la administración centralizada de los archivos de


configuración de Nagios Core, lo que simplifica el mantenimiento y la
administración del sistema, además de reducir sus tiempos de inactividad.

3. Monitorización de servicios en la nube, de los que en la actualidad se


depende en gran medida para alojar aplicaciones y servicios, por lo que
monitorear dichos servicios es fundamental para garantizar la productividad.

4. El manejo de eventos, al momento de surgir una variedad de alertas que


requieren respuestas rápidas y efectivas. A este respecto es útil automatizar las
respuestas ante incidentes para facilitar el análisis posterior de sus resultados.

En última instancia, esta futura línea de investigación tiene como objetivo mejorar la
implementación del sistema de monitoreo en tiempo real para equipos y servicios. Al
investigar y aplicar los aspectos mencionados anteriormente, la eficiencia, la

Página 57 de 65
disponibilidad y el rendimiento se pueden mejorar aún más, lo que lleva a una mejor
experiencia de servicio al usuario, así como un aumento de la productividad.

Conclusiones

Después de realizar esta extensa investigación e implementar Nagios Core como


sistema de monitoreo en la empresa en la que actualmente me encuentro realizando
labores, puedo asegurar que resulta una herramienta invaluable para la
administración de redes en tiempo real, siendo bastante útil por su bajo consumo de
recursos y la gran flexibilidad que ofrece al configurarse a medida para cada negocio.

Este software nos facilita la definición de objetos, servicios y comandos al


proporcionarnos siempre de las plantillas necesarias para especificar los detalles
referentes a estos; llegando al punto de poder definir mediante varias directivas el
nivel de severidad de los problemas y las alertas correspondientes a estos casos.

Como parte de su sistema de monitoreo en tiempo real de equipos y servicios, NCPA


nos abre las puertas a gestionar (siempre y cuando sea bajo las plataformas
soportadas) lo que queramos de los ordenadores en los que se encuentra instalado,
siendo un agente muy fácil de instalar y configurar; además de permitirnos
monitorear un amplio espectro de métricas y la basta variedad de servicios existentes.

Además de lo anterior, Nagios Core nos ofrece poder ampliar sus capacidades con
herramientas como Grafana para poder graficar datos de rendimiento en tiempo real,
generar alertas en base a umbrales y tomar sabias decisiones basadas en estadísticas.
Siguiendo esta misma línea, la funcionalidad de exportar todos estos gráficos
previamente generados mediante Grafana Reporter desde un servicio tan actual como
Grafana, a diferencia de Nagios, aporta un gran valor a la organización que desee
hacer uso o compartir estos mismos ficheros a otras empresas, denotando que se
utilizan herramientas las mejores herramientas para cumplir los objetivos impuestos.

En lo que a las alertas respecta, los bots de Telegram han resultado ser una parte
sencilla de implementar, permitiendo a los equipos de respuesta estar informados

Página 58 de 65
rápidamente de los malos funcionamientos en los dispositivos que se encuentren
monitorizados, para que estos equipos sean siempre capaz de solucionar estas
incidencias lo antes posible, pensando a cada momento en la salud de cualquier host.

En conclusión, Nagios Core es una solución de monitoreo invaluable y muy eficiente


en cualquier sitio en el que se vaya a implementar. Su flexibilidad y adaptabilidad a
entornos de producción específicos lo convierten en una opción popular entre las
organizaciones que buscan soluciones confiables y muy escalables; siendo una gran
recomendación el montar un sistema así en cualquier ámbito tecnológico existente.

Página 59 de 65
Bibliografía

1. ¿Qué es Nagios Core?

Nagios Features - Nagios. (s. f.). Nagios.


https://www.nagios.org/about/features/

2. Requerimientos del servicio

Nagios Core - Installing Nagios Core From Source. (2022).


https://support.nagios.com/kb/article/nagios-core-installing-
nagios-core-from-source-96.html#Ubuntu

3. Los archivos y directorios de configuración

Object Definitions. (s. f.).


https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3
/en/objectdefinitions.html

Nagios - Configuration. (s. f.).


https://www.tutorialspoint.com/nagios/nagios_configuration.htm

4. Instalación de Nagios

Nagios Core - Installing Nagios Core From Source. (2022).


https://support.nagios.com/kb/article/nagios-core-installing-
nagios-core-from-source-96.html#Ubuntu

Página 60 de 65
5. Monitoreo en remoto de un host

a. Instalación del agente NCPA en el cliente

Lizana, J. A. (2022). Cómo ejecutar un programa al iniciar


Windows 11 Genbeta. https://www.genbeta.com/paso-a-
paso/como-ejecutar-programa-al-iniciar-windows-11

b. Instalación de Check_NCPA en el servidor

Creating a new network host. (s. f.). packtpub.com


https://subscription.packtpub.com/book/web-
development/9781849515566/1/ch01lvl1sec09/creating-a-
new-network-host

Victor. (2020). Capturar host remoto en Nagios. sysadm.es.


https://sysadm.es/capturar-host-remoto-en-
nagios/https://support.nagios.com/kb/article/ncpa-service-
and-process-changes-to-api-endpoint-813.html

c. Monitoreo de clientes mediante NCPA

Sv, L. (2021, 13 mayo). Install Nagios NCPA on Linux and


Windows. Bobcares. https://bobcares.com/blog/install-
nagios-ncpa-on-linux-and-windows/

McClay, J. (2022, 14 febrero). Nagios Core - NCPA Agent on


Ubuntu and Rocky Linux - Question Computer. Question
Computer. https://www.questioncomputer.com/nagios-core-
ncpa-agent-on-ubuntu-and-rocky-linux/

Página 61 de 65
Installing NCPA. (s. f.). nagios.com.
https://assets.nagios.com/downloads/ncpa/docs/Installing-
NCPA.pdf

d. Implementación de SNMP

Monitoring Routers and Switches · Nagios Core


Documentation. (s. f.).
https://assets.nagios.com/downloads/nagioscore/docs/nagio
score/4/en/monitoring-routers.html

Juangranados. (s. f.). GitHub - juangranados/nagios-plugins:


Several Nagios/Icinga Plugins. GitHub.
https://github.com/juangranados/nagios-plugins

6. Gráficos en Nagios

a. Instalación de Grafana + InfluxDB + Nagflux

b. Configuración de Grafana + InfluxDB + Nagflux

Anup. (2019). De Nagios vers Grafana sous Ubuntu 18.04.


Scrample. https://www.scrample.xyz/de-nagios-vers-grafana-
sous-ubuntu-18-04/

Install InfluxDB OSS | InfluxDB OSS 1.8 Documentation. (s. f.).


InfluxData Inc.
https://docs.influxdata.com/influxdb/v1.8/introduction/insta
ll/?t=curl

Página 62 de 65
Go build: «Cannot find package» (even though GOPATH is set).
(s. f.). Stack Overflow.
https://stackoverflow.com/questions/13214029/go-build-
cannot-find-package-even-though-gopath-is-set

c. Exportando gráficos mediante Grafana Reporter

How to update the Go version. (s. f.). Gist.


https://gist.github.com/nikhita/432436d570b89cab172dcf28
94465753

API Tutorial: Create API tokens and dashboards for an


organization | Grafana documentation. (s. f.). Grafana Labs.
https://grafana.com/docs/grafana/latest/developers/http_ap
i/create-api-tokens-for-org/

IzakMarais. (s. f.). GitHub - IzakMarais/reporter: Service that


generates a PDF report from a Grafana dashboard. GitHub.
https://github.com/IzakMarais/reporter

Sushruthan. (2022). Export Grafana Dashboard as PDF -

Sushruthan – Medium.

https://sushruthan.medium.com/export-grafana-dashboard-

as-pdf-e04550b0b64e

Reporter module - github.com/izakmarais/reporter - Go


Packages. (s. f.).
https://pkg.go.dev/github.com/izakmarais/reporter#section-
readme

Página 63 de 65
Grafana Reports | Grafana Labs. (s. f.). Grafana Labs.

https://grafana.com/grafana/dashboards/11365-grafana-

reports/

Magnifico, G. (2022). Retrieve a scheduled report of your


Grafana dashboards via mail.
https://giuliomagnifico.blog/networking/2022/12/19/grafana
-reporting.html

Herrero, H., & Herrero, H. (2018). Generando informes con


Grafana y programar su envio | Blog Bujarra.com. Blog
Bujarra.com | Hector Herrero IT Blog.
https://www.bujarra.com/generando-informes-con-grafana-
y-programar-su-envio/?lang=en

Go build: «Cannot find package» (even though GOPATH is set).


(s. f.). Stack Overflow.
https://stackoverflow.com/questions/13214029/go-build-
cannot-find-package-even-though-gopath-is-set

7. Notificación de alertas vía Telegram

Mglantz. (s. f.). GitHub - mglantz/nagios-telegram-notification:


Nagios host and service notifications via Telegram bot. GitHub.
https://github.com/mglantz/nagios-telegram-notification

Página 64 de 65
Página 65 de 65

También podría gustarte