Despliega Nagios como contendor Docker | Deploy Nagios as a Docker Container

 

Despliega Nagios como contendor Docker





¿Cómo instalar el núcleo de Nagios en Docker? En este tutorial, aprenderá cómo implementar Nagios como contenedor Docker. Nagios Core es un motor de monitoreo y alerta de infraestructura de TI de código abierto.

Para desplegar Nagios como contenedor Docker, procederemos de la siguiente manera;

Instale Docker en su host Linux

Debe haber instalado el motor Docker en su host Linux antes de poder continuar. 

Crear y construir Nagios Core Docker Image

Podría haber imágenes de Nagios docker que ya hayan sido creadas por la comunidad. Sin embargo, construiremos nuestra propia imagen en esta configuración, solo para aprender sobre todo el proceso.

Por lo tanto, cree un directorio, digamos en /opt, donde puede almacenar todos los archivos necesarios que crearemos con el fin de crear la imagen principal de Docker de Nagios. ¡El nombre del directorio podría ser lo que quieras!

mkdir /opt/nagios-core-docker

Navegue al directorio de arriba;

cd /opt/nagios-core-docker/

Descargar último Nagios Core Archive File. A partir de este escrito, Nagios 4.4.9 es la versión de lanzamiento actual.

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.9.tar.gz

Extraer el archivo fuente;

tar xzf nagios-4.4.9.tar.gz

Descargar último Nagios plugins de monitoreo;

wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.2/nagios-plugins-2.4.2.tar.gz

Extraer los plugins;

tar xzf nagios-plugins-2.4.2.tar.gz

También puede necesitar complementos de NRPE (check_nrpe) en el servidor. Por lo tanto, descargue la última versión de lanzamiento de la página de lanzamientos;

wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz

Extraer el archivo NRPE;

tar xzf nrpe-4.1.0.tar.gz

Ahora debería tener el directorio de origen de Nagios y plugins en el directorio de trabajo actual;

ls -d1 */
nagios-4.4.9/
nagios-plugins-2.4.2/
nrpe-4.1.0/

A continuación, cree la instalación central de Nagios Dockerfile. es un documento de texto que contiene todos los comandos que un usuario podría llamar a la línea de comandos para ensamblar una imagen.Dockerfile

En Dockerfile, necesitamos definir todos los comandos para la instalación y configuración del servidor central de Nagios.

En esta guía, construiremos nuestra imagen de Nagios Core Docker sobre un sistema operativo Ubuntu 22.04. Por lo tanto, el sistema operativo base debe guiar los comandos que usa.

Basaremos nuestros comandos de configuración en nuestra guía de instalación del servidor central de Nagios en Ubuntu 22.04;

Instalar y configurar Nagios en Ubuntu 22.04

Tenga en cuenta que construiremos Nagios Core a partir del código fuente.

vim Dockerfile

Pegue el contenido a continuación;

FROM ubuntu:22.04
RUN apt update -y
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
RUN DEBIAN_FRONTEND=noninteractive 
RUN apt install -y \
	autoconf \
	gcc \
	libc6 \
	make \
	wget \
	unzip \
	apache2 \
	apache2-utils \
	php \
	libapache2-mod-php \
	libgd-dev \
	libssl-dev \
	libmcrypt-dev \
	bc \
	gawk \
	dc \
	build-essential \
	snmp \
	libnet-snmp-perl \
	gettext \
	fping \
        iputils-ping \
	qstat \
	dnsutils \
	smbclient
# Building Nagios Core
COPY nagios-4.4.9 /nagios-4.4.9
WORKDIR /nagios-4.4.9
RUN ./configure --with-httpd-conf=/etc/apache2/sites-enabled && \
    make all && \
    make install-groups-users && \
    usermod -aG nagios www-data && \
    make install && \
    make install-init && \
    make install-daemoninit && \
    make install-commandmode && \
    make install-config && \
    make install-webconf && \
    a2enmod rewrite cgi
# Building Nagios Plugins
COPY nagios-plugins-2.4.2 /nagios-plugins-2.4.2
WORKDIR /nagios-plugins-2.4.2
RUN ./configure --with-nagios-user=nagios --with-nagios-group=nagios && \
    make && \
    make install
# Build and Install NRPE Plugins
COPY nrpe-4.1.0 /nrpe-4.1.0
WORKDIR /nrpe-4.1.0
RUN ./configure && \
    make all && \
    make install-plugin
WORKDIR /root
# Copy the Nagios basic auth credentials set in the env file;
COPY .env /usr/local/nagios/etc/
# Add Nagios and Apache Startup script
ADD start.sh /
RUN chmod +x /start.sh

CMD [ "/start.sh" ]

Lo anterior creará e instalará complementos de Nagios y Nagios, incluidos los complementos check_nrpe en una imagen Ubuntu 22.04.

También copia las credenciales de autenticación básicas de Nagios definidas en las variables de entorno;

vim .env
NAGIOSADMIN_USER=nagiosadmin
NAGIOSADMIN_PASSWORD=password

Para usar diferentes credenciales, actualice el archivo anterior en consecuencia. Tenga en cuenta que nagiosadmin es el usuario administrador predeterminado para acceder a la interfaz web de Nagios (como se especifica en cgi.cfg). Puede crear o utilizar cualquier otro nombre de usuario y este se actualizará en el /usr/local/nagios/etc/cgi.cfg archivo de configuración por comandos definidos en el start.sh archivo a continuación.

Cuando cree y ejecute el contenedor de Nagios Docker utilizando la imagen que crearemos, las credenciales se actualizarán automáticamente en función de los valores de las variables de entorno anteriores.

También lo hemos hecho de tal manera que puede anular las credenciales de Nagios utilizando el NAGIOSADMIN_USER_OVERRIDE y NAGIOSADMIN_PASSWORD_OVERRIDE durante el tiempo de ejecución utilizando el docker run comando.

Al final del Dockerfile, hay un script de inicio de Nagios y Apache llamado start.sh.

El script se encuentra en el directorio de trabajo actual y el siguiente es su contenido.

cat start.sh

#!/bin/bash
# Load the credentials variables
source /usr/local/nagios/etc/.env

# Override the environment variables if passed as arguments during docker run
if [ -n "$NAGIOSADMIN_USER_OVERRIDE" ]; then
    export NAGIOSADMIN_USER="$NAGIOSADMIN_USER_OVERRIDE"
fi

if [ -n "$NAGIOSADMIN_PASSWORD_OVERRIDE" ]; then
    export NAGIOSADMIN_PASSWORD="$NAGIOSADMIN_PASSWORD_OVERRIDE"
fi

# Update configuration files with the variable values, considering overrides
htpasswd -b -c /usr/local/nagios/etc/htpasswd.users "${NAGIOSADMIN_USER_OVERRIDE:-$NAGIOSADMIN_USER}" "${NAGIOSADMIN_PASSWORD_OVERRIDE:-$NAGIOSADMIN_PASSWORD}"
sed -i "s/nagiosadmin/${NAGIOSADMIN_USER_OVERRIDE:-$NAGIOSADMIN_USER}/g" /usr/local/nagios/etc/cgi.cfg

# Redirect root URL (/) to /nagios
echo 'RedirectMatch ^/$ /nagios' >> /etc/apache2/apache2.conf

# Start Nagios
/etc/init.d/nagios start

#Start Apache
a2dissite 000-default default-ssl
rm -rf /run/apache2/apache2.pid
. /etc/apache2/envvars
. /etc/default/apache-htcacheclean
/usr/sbin/apache2 -DFOREGROUND

Con eso en su lugar, ahora puede construir su imagen de acoplador Nagios core 4.4.9;

docker build -t nagios-core:4.4.9 .

Después de un corto tiempo, su imagen de Nagios core Docker debe construirse.

docker images

Salida de muestra;

REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
nagios-core          4.4.9     7c4a7e95a2b0   9 minutes ago   753MB
ubuntu               22.04     6b7dfa7e8fdb   4 weeks ago     77.8MB

¡Su imagen ahora está lista para usar!

Despliegue Nagios como contenedor Docker

Para confirmar si nuestra imagen funciona bien, cree y ejecute el contenedor de base de Nagios basado en la imagen de Nagios creada anteriormente para la prueba.

docker run --name nagios-core-4.4.9 -dp 80:80 nagios-core:4.4.9

Para anular las credenciales definidas en el archivo .env, use el comando;

docker run \
-e NAGIOSADMIN_USER_OVERRIDE=monadmin \
-e NAGIOSADMIN_PASSWORD_OVERRIDE=password \
--name nagios-core-4.4.9 -dp 80:80 nagios-core:4.4.9

Verifique los contenedores creados a partir de entonces;

docker container ls
CONTAINER ID   IMAGE               COMMAND       CREATED         STATUS         PORTS                               NAMES
afc2c2cacb9f   nagios-core:4.4.9   "/start.sh"   5 seconds ago   Up 5 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nagios-core-4.4.9

Como puedes ver, ¡todo está bien!

Puede verificar los registros si hay algún problema;

docker logs --tail 200 <container name>

p.ej;

docker logs --tail 200 nagios-core-4.4.9

O simplemente verifique los registros de /var/lib/docker/containers/ carpeta.

tail -f /var/lib/docker/containers/<container-ID>/<container-ID>.log

¡Reemplace la ID del contenedor con su ID de contenedor!

Acceso a la Interfaz Web de Nagios Core

Para verificar si todo está bien, ahora puede acceder a la interfaz web de Nagios Core;

http://docker-host-IP-or-hostname/nagios/

Cuando se le solicite, ingrese el nombre de usuario y la contraseña definidos en las variables de entorno.



Panel de control predeterminado de Nagios



¡Y voila! Parece estar funcionando.

Verifique el estado del host y los servicios; estado del host (mostrando el estado del contenedor docker en sí!)





Estado del servicio;



Está casi funcionando, ¿verdad? -:)

Configure Nagios Docker Container para Monitorear su Infraestructura

Con la configuración predeterminada, está listo para comenzar. Pero hagamos que sea fácil configurar el contenedor Nagios Docker para el monitoreo.

Para facilitar la configuración del contenedor de Nagios Docker para monitorear sus puntos finales, copiaremos los principales archivos de configuración de Nagios que se enumeran a continuación en el host;

  • cgi.cfg
  • nagios.cfg
  • objetos
  • recurso.cfg

A continuación, copie las configuraciones anteriores desde el contenedor Nagios docker recién creado en el directorio con los archivos del contenedor Nagios docker;

Puede copiar archivos desde el contenedor Docker al host utilizando cp docker comando.

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

p.ej;

docker cp nagios-core-4.4.9:/usr/local/nagios/etc /opt/nagios-core-docker/

Ahora debería tener los archivos/directorios de configuración anteriores en el host docker.

ls -1 etc/

Salida de muestra;

cgi.cfg
htpasswd.users
nagios.cfg
objects
resource.cfg

Para comenzar la configuración, permite deshabilitar las comprobaciones del servicio SSH para el localhost comentando la definición del servicio SSH;

vim /opt/nagios-core-docker/etc/objects/localhost.cfg
#define service {
#
#    use                     local-service           ; Name of service template to use
#    host_name               localhost
#    service_description     SSH
#    check_command           check_ssh
#    notifications_enabled   0
#}

Guarde y salga del archivo.

Para usar estas configuraciones en el contenedor, debe montarlas utilizando el -v/--volume opción a docker run comando.

docker run --help
-v, --volume list                    Bind mount a volume

Entonces, para usar nuestras nuevas configuraciones, elimine el contenedor antiguo e inicie uno nuevo con las nuevas configuraciones;

docker container rm -f nagios-core-4.4.9

Compruebe la configuración del contenedor Docker central de Nagios en busca de errores antes de poder iniciar el contenedor;

docker run --rm -v "/opt/nagios-core-docker/etc:/usr/local/nagios/etc" \
-ti nagios-core:4.4.9 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Salida de comprobación de configuración de muestra;

Nagios Core 4.4.9
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2022-11-16
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
	Checked 7 services.
	Checked 1 hosts.
	Checked 1 host groups.
	Checked 0 service groups.
	Checked 1 contacts.
	Checked 1 contact groups.
	Checked 24 commands.
	Checked 5 time periods.
	Checked 0 host escalations.
	Checked 0 service escalations.
Checking for circular paths...
	Checked 1 hosts
	Checked 0 service dependencies
	Checked 0 host dependencies
	Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

¡Inicia un nuevo contenedor con nuevas configuraciones montadas!

docker run --name nagios-core-4.4.9 -dp 80:80 \
-v "/opt/nagios-core-docker/etc:/usr/local/nagios/etc" \
nagios-core:4.4.9

También puede habilitar el contenedor para reiniciar en el bloqueo o reiniciar el sistema utilizando la opción --restart unless-stopped;

docker run --name nagios-core-4.4.9 --restart unless-stopped \
-dp 80:80 \
-v "/opt/nagios-core-docker/etc:/usr/local/nagios/etc" \
nagios-core:4.4.9

Agregar Hosts a Monitor

Agregar hosts, crear plantillas de definición de host y servicio en el contenedor base de Nagios es lo mismo que lo haría con Nagios instalado en un servidor, excepto eso, estamos controlando las configuraciones a través de montajes de enlace en esta guía.

Así que tomemos, por ejemplo, quiero agregar otro host accesible a través de la IP 192.168.56.146 a Nagios Core para el monitoreo, podría crear un directorio de configuraciones personalizado en el directorio de objetos;

mkdir /opt/nagios-core-docker/etc/objects/kifarunix

Si está utilizando un directorio de configuración personalizado, ¡haga que Nagios sepa lo mismo!

sed -i '/OBJECT CACHE FILE/i cfg_dir=/usr/local/nagios/etc/objects/kifarunix\n' /opt/nagios-core-docker/etc/nagios.cfg

Cree su archivo de configuración de definición de hosts y hostgroups.

vim /opt/nagios-core-docker/etc/objects/kifarunix/host-hostgroups.cfg
define host {
    use                     linux-server   
    host_name               elk-stack
    alias                   ELK-STACK-NODE
    address                 192.168.56.146
}

Tenga en cuenta que usamos una plantilla de definición de host predeterminada anterior. ¡Puedes crear el tuyo!

Guarde y salga del archivo de configuración.

¡Compruebe la configuración para detectar errores nuevamente!

docker run --rm -v "/opt/nagios-core-docker/etc:/usr/local/nagios/etc" \
-ti nagios-core:4.4.9 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Retire e inicie un nuevo contenedor;

docker container rm -f nagios-core-4.4.9
docker run --name nagios-core-4.4.9 -dp 80:80 -v "/opt/nagios-core-docker/etc:/usr/local/nagios/etc" nagios-core:4.4.9

¡Cuando comprueba en la interfaz web de Nagios, ahora debe agregar su host!

añadir hosts para monitorear


¡Y ahí tienes!

Video  Nagios como contendor Docker




Fuente: https://kifarunix.com/deploy-nagios-as-a-docker-container/?expand_article=1

Comentarios