Existe una comunidad y popularidad grandes alrededor de Nagios, pero tenemos la alternativa gratuita de ICINGA con la que realizaremos esta instalación sobre CentOS 8
Comprobamos actualizaciones del sistema operativo para ver si estamos al día:
sudo dnf update
Instalamos desde el repositorio, más de 330 MB:
dnf install https://packages.icinga.com/epel/icinga-rpm-release-6-latest.noarch.rpm
Instalamos dependencias del repositorio EPEL:
dnf install 'dnf-command(config-manager)' dnf config-manager --set-enabled PowerTools dnf install epel-release
Empezamos con el paquete principal, y añadimos en el arranque del sistema:
dnf install icinga2 systemctl enable icinga2 --now
Instalamos todos los plugins compartidos/compatibles de nagios, serán casi 25 MB y comprobamos el estado:
dnf install nagios-plugins-all systemctl status icinga2
Empezamos con la instalación de SELInux requerido para el control de acceso, para una instalación más sencilla en esta demo activaremos el modo permisivo:
dnf install icinga2-selinux sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config sestatus
Para el modulo web necesitaremos instalar la Base de Datos (también es posible en PostgreSQL)
dnf install mariadb-server mariadb systemctl enable mariadb --now
Iniciamos la instalación y definimos las claves del usuario root con el asistente, además de instalar el modulo IDO:
mysql_secure_installation dnf install icinga2-ido-mysql
Creamos la base de datos en blanco con el usuario y contraseña que queramos:
mysql -u root -p CREATE DATABASE icinga; GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'Pass4ever$'; quit
Con la BBDD en blanco importamos el esquema:
mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Según los datos con los que creamos la BBDD indicamos la conexión el fichero
sudo vim /etc/icinga2/features-available/ido-mysql.conf
Habilitamos IDO y reiniciamos:
icinga2 feature enable ido-mysql sudo systemctl restart icinga2
Ahora que ya tenemos la BBDD continuamos con el servidor web Apache, recomendando habilitar HTTPS en lugar de HTTP:
sudo dnf install httpd php-json php-ldap firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT sudo service iptables save
Si no tenemos instalado PHP-FPM para el servicio web, será necesario PHP >= 5.6.0
Ojo porque no todas las versiones de PHP son soportadas en estos momentos, optamos por la 7.2 ya que fuera de la RC no hay soporte para PHP 7.4 y los módulos cURL, gettext, intl, mbstring, OpenSSL y xml
Comprobamos las versiones disponibles en los repositorios:
sudo dnf module list | grep php sudo dnf module install php:7.2 sudo dnf install php php-fpm sudo dnf install php-intl php-gd php-mysqlnd
Ya debería estar instalador, pero comprobamos:
sudo dnf install php-curl php-gettext php-openssl php-mbstring php-xml php-zip php-gd php-dom php-ldap sudo dnf install -y php php-devel php-pear make
No nos olvidemos de Image Magick como requisito:
sudo dnf install ImageMagick-devel sudo dnf install ImageMagick sudo pecl install imagick echo "extension=imagick.so" > /etc/php.d/20-imagick.ini systemctl restart httpd
Comprobamos que aparezca entre los modulos disponibles de PHP y activamos al inicio:
php -m sudo systemctl enable php-fpm.service --now
Revisamos la versión de PHP activa, en nuestro caso 7.2.11 y configuramos el inicio automático y arrancamos el servidor web
php -v systemctl enable httpd --now sudo dnf install icingacli icingaweb2
Para habilitar REST API para el envío de comandos y comunicación:
icinga2 api setup systemctl restart icinga2
Se generan usuario y claves aleatorios en:
vim /etc/icinga2/conf.d/api-users.conf
Llegados a este punto, comprobamos que no tengamos errores antes de continuar:
sudo tail /var/log/icinga2/icinga2.log
Continuamos con la configuración en el servicio web y reiniciamos:
sudo icingacli setup config webserver apache sudo systemctl restart httpd
Necesitaremos un token de autenticación:
sudo icingacli setup token create
Ya podemos acceder via web al asistente de configuración:
http://IP_CENTOS8/icingaweb2/setup
Continuamos la instalación guiados por el asistente hasta finalizar el proceso según nuestras preferencias y requisitos:
Con este último paso ha finalizado por completo la instalación, podemos añadir nuestro primer host, descargamos el agente para el sistema operativo correspondiente (o cualquier dispositivo SNMP, router, switch…) la función básica de PING debemos permitirla a través del firewall del host:
Editamos y añadimos al final del fichero en el servidor:
vim /etc/icinga2/conf.d/hosts.conf
Por ejemplo:
object Host "MISERVIDOR" { address = "10.0.0.200" check_command = "hostalive" }
Reiniciamos el servicio
systemctl restart icinga2.service
Otras opciones y consejos útiles durante el proceso:
Instalación opcional de la sintaxis y edición en Vim o en Nano para facilitar la edición de ficheros de configuración:
sudo dnf install vim-icinga2 sudo dnf install nano-icinga2
Si al intentar ejecutar el modulo setup nos indica que no existe, lo habilitamos:
icingacli module enable setup sudo dnf install icingaweb2-module-setup
Si habíamos generado un token y no lo recordamos:
icingacli setup token show
Para monitorizar y enviar comandos necesitaremos abrir el puerto 5665 en nuestro servidor ICINGA:
firewall-cmd --zone=public --permanent --add-port 5665/tcp iptables -A INPUT -p tcp -m tcp --dport 5665 -j ACCEPT firewall-cmd --reload