Cómo instalar la herramienta de monitorización Icinga 2 en CentOS 8
La monitorización es uno de los componentes más importantes de la infraestructura del servidor y del centro de datos. Te ayudará a detectar los problemas y las incidencias que se produzcan en tus servidores para que puedas resolverlos más rápidamente. Existen algunas herramientas de monitorización de código abierto, y una de las más populares es«Icinga 2«.
Icinga se creó como un fork de la popular herramienta de monitorización Nagios y ahora se ha reescrito desde cero en C++. Como fork del proyecto Nagios, Icinga ha venido con herramientas y características adicionales, como el director icinga, los módulos icinga y los plugins icinga. Además, tiene soporte para la monitorización distribuida, que te permite gestionar varias instancias de Icinga desde un solo panel.
En este tutorial, te mostraremos paso a paso cómo instalar y configurar Icinga2 con Apache2 y MariaDB en un servidor CentOS 8.
Requisitos previos
- Un servidor CentOS 8. Asegúrate de que está actualizado a la última versión.
- Al menos 2GB de RAM y 2 núcleos. Si tienes más, será mejor.
- Un usuario con privilegios Sudo.
Configurar los repositorios
En primer lugar, tienes que añadir el repositorio de epel, remi e icinga al sistema centos 8. Luego tienes que instalar la herramienta dnf `config-manager` y habilitar el repositorio `PowerTools` utilizando esa herramienta.
1. Añade el repositorio epel y remi para los servidores centos 8 ejecutando los siguientes comandos.
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
2. Ahora ejecuta el siguiente comando para descargar y añadir el repositorio Icinga para el sistema centos 8.
sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm
3. Después, ejecuta los siguientes comandos para instalar la herramienta dnf config-manager y habilitar el repositorio PowerTools.
sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools
4. Una vez completado todo el proceso, verifica todos los repositorios habilitados en tu sistema utilizando el siguiente comando.
sudo dnf repolist
Verás una salida similar a la de abajo, y asegúrate de que los repositorios epel, remi, icinga-* y powertools están en la lista.
repo id repo name appstream CentOS Linux 8 - AppStream baseos CentOS Linux 8 - BaseOS epel Extra Packages for Enterprise Linux 8 - x86_64 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 extras CentOS Linux 8 - Extras icinga-stable-release ICINGA (stable release for epel) powertools CentOS Linux 8 - PowerTools remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64
Instalación y configuración de la pila LAMP
La herramienta de monitorización de Icinga tiene dos componentes principales,«icinga2«, que se encarga de todos los trabajos de monitorización, y«icingaweb2«, que es una potente, limpia y rápida aplicación web basada en PHP que te permite gestionar tu pila Icinga desde un navegador web. Ahora vas a instalar y configurar la pila LAMP básica en el sistema centos 8.
1. Habilita el módulo remi para PHP 7.4 utilizando el siguiente comando.
sudo dnf module enable -y php:remi-7.4
2. A continuación, ejecuta el siguiente comando para instalar los paquetes básicos de LAMP Stack.
sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel
2. Ahora inicia los servicios de apache (httpd en centos) y mariadb y permite que ambos se inicien al arrancar el sistema.
sudo systemctl enable --now httpd
sudo systemctl enable --now mariadb
Y verás una salida similar a la siguiente, los servicios apache y mariadb iniciados y habilitados.
# Apache started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. # MariaDB started and enabled Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
2. Después, ejecuta el siguiente comando para configurar la contraseña de mariadb como root y, por razones de seguridad, eliminarás el usuario anónimo y de prueba de la base de datos por defecto, deshabilitando también el inicio de sesión remoto para el usuario root.
sudo mysql_secure_installation
A continuación se muestra la salida similar que obtendrás, y asegúrate de escribir una nueva contraseña fuerte para el usuario root de mariadb y escribe«Y» para confirmar todas las acciones.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! To log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): PRESS ENTER OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y New password: TYPE STRONG PASSWORD Re-enter new password: TYPE STRONG PASSWORD Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Instalación y configuración de Icinga2
Ahora vas a instalar y configurar el componente principal de Icinga en sí. Esta etapa cubrirá la instalación de los paquetes de icinga2, la creación de la nueva base de datos y el usuario, la importación del esquema de la base de datos y la configuración de la API REST de Icinga.
1. Ejecuta el siguiente comando para instalar los paquetes de la herramienta de monitorización de Icinga.
sudo dnf install -y icinga2 nagios-plugins-all
Después, inicia y habilita el servicio icinga2, y verifica el estado del servicio Icinga.
sudo systemctl enable --now icinga2
sudo systemctl status icinga2
Si ves una salida similar a la siguiente, el servicio Icinga está funcionando.
# Icinga2 started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service → /usr/lib/systemd/system/icinga2.service. # Icinga2 status running ? icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) Main PID: 31298 (icinga2) Tasks: 13 (limit: 4964) Memory: 20.9M CGroup: /system.slice/icinga2.service ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
2. A continuación, si tienes el SELinux en funcionamiento en el sistema centos 8, tienes que instalar el paquete‘icinga2-selinux‘. Pero si el SELinux está desactivado, sáltate esta parte.
Ejecuta el siguiente comando para comprobar el estado de SELinux.
sudo sestatus
Si obtienes una salida similar a la siguiente, entonces tu SELinux está‘activado‘. En caso contrario, obtendrás la salida‘disabled’, lo que significa que puedes saltarte la parte de SELinux.
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 32
Ahora instala el paquete icinga2-selinux utilizando el comando que aparece a continuación.
sudo dnf install -y icinga2-selinux
A continuación, aplica la nueva configuración reiniciando el servicio icinga2 y comprueba que Icinga está en funcionamiento bajo el contexto SELinux.
sudo systemctl restart icinga2
ps -eZ | grep icinga2
A continuación se muestra la salida similar que obtendrás.
system_u:system_r:icinga2_t:s0 33479 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33499 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33504 ? 00:00:00 icinga2
3. A continuación, instala el backend IDO MySQL para el icinga2 utilizando el siguiente comando.
sudo dnf install -y icinga2-ido-mysql
4. Ahora ejecuta el siguiente comando para entrar en el shell de MySQL y escribe tu contraseña de root.
sudo mysql -u root -p
4. Crea una nueva base de datos y un nuevo usuario para el servicio icinga2 utilizando las consultas mysql que aparecen a continuación.
MariaDB [(none)]> CREATE DATABASE icinga;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
Ahora ejecuta el comando mysql de abajo para importar el esquema de la base de datos icinga2-ido-mysql a la base de datos icinga, y escribe la contraseña de tu contraseña de root de mariadb.
sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Después, activa la función icinga2-ido-mysql y reinicia el servicio icinga2 para aplicar la nueva configuración mediante los comandos que aparecen a continuación.
sudo icinga2 feature enable ido-mysql
sudo systemctl restart icinga2
Y verás una salida similar a la de la imagen de abajo.
4. A continuación, tienes que generar la configuración de la API REST de icinga2 y los certificados. El icingaweb2 necesita la API REST para enviar acciones relacionadas con los trabajos de monitorización, como la reprogramación de los controles, la consulta de los detalles de los objetos, etc.
Ejecuta el siguiente comando de icinga2 para generar un nuevo usuario de la API, la configuración y los certificados TLS.
sudo icinga2 api setup
Y verás una salida similar a la siguiente, el nuevo usuario root con contraseña está disponible en el archivo de configuración /etc/icinga2/conf.d/api-users.conf, y los certificados TLS están disponibles en el directorio /var/lib/icinga2/certs/.
information/cli: Generating new CA. information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'. information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'. information/cli: Generating new CSR in '/var/lib/icinga2/certs//centos8.csr'. information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'. information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'. information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'. information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.crt'. information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'. information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'. information/cli: Reading '/etc/icinga2/icinga2.conf'. information/cli: Enabling the 'api' feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'. information/cli: Created backup file '/etc/icinga2/constants.conf.orig'. information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'. information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup. Done. Now restart your Icinga 2 daemon to finish the installation!
Opcionalmente, para añadir el nuevo usuario de la API manualmente, edita la configuración /etc/icinga2/conf.d/api-users.conf utilizando el comando editor nano como se indica a continuación.
sudo nano /etc/icinga2/conf.d/api-users.conf
Pega la siguiente configuración de ejemplo como se indica a continuación, y asegúrate de definir el usuario de la API, la contraseña y definir el permiso como necesites.
object ApiUser "icingaweb2" { password = "Wijsn8Z9eRs5E25d" permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ] }
Por último, aplica la nueva configuración reiniciando el servicio icinga2 con el siguiente comando.
sudo systemctl restart icinga2
Instalación y configuración de Icingaweb2
En esta fase, instalarás y configurarás la aplicación web icingaweb2, incluyendo la configuración de la base de datos y la generación del token de instalación.
1. Ejecuta el siguiente comando para instalar los paquetes de icingaweb2.
sudo dnf install -y icingaweb2 icingacli
Durante la instalación, se generará la nueva configuración de apache para icingaweb2. Verifica la nueva configuración con el siguiente comando.
cat /etc/httpd/conf.d/icingaweb2.conf
A continuación se muestra la configuración que verás.
Alias /icingaweb2 "/usr/share/icingaweb2/public" # Remove comments if you want to use PHP FPM and your Apache version is older than 2.4 #<IfVersion < 2.4> # # Forward PHP requests to FPM # SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 # <LocationMatch "^{urlPath}/(.*\.php)$"> # ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1" # </LocationMatch> #</IfVersion> <Directory "/usr/share/icingaweb2/public"> Options SymLinksIfOwnerMatch AllowOverride None .......
Para aplicar la nueva configuración, reinicia el servicio apache/httpd utilizando el siguiente comando.
sudo systemctl restart httpd
2. A continuación, escribe el siguiente comando para entrar en el shell de mysql.
sudo mysql -u root -p
Ejecuta algunas consultas mysql que aparecen a continuación para crear una nueva base de datos y un nuevo usuario para el icingaweb2.
MariaDB [(none)]> CREATE DATABASE icingaweb2;
MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO icingaweb2@localhost IDENTIFIED BY 'icingaweb2passdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
3. Después de eso, genera el token de configuración de icingaweb2 para la instalación en la siguiente etapa utilizando el siguiente comando.
sudo icingacli setup token create
sudo icingacli setup token show
Se te mostrará la siguiente salida. Asegúrate de copiar el token de instalación de icinga2 en tu nota.
# Generated setup token The newly generated setup token is: 41e33db4cf0c5617 # Show generated token The current setup token is: 41e33db4cf0c5617
Configurar Icinga Web 2 a través de la interfaz web
Ahora, abre tu navegador web y la URL http://SERVER-IP/icingaweb2/setupy obtendrás la página de instalación de icinga2.
1. Pega el token de instalación de icingaweb2 en la casilla y haz clic en Siguiente.
2. Aquí, deja los módulos de Icinga por defecto y haz clic en Siguiente.
3. Ahora asegúrate de que todos los requisitos del sistema icingaweb2 tienen colores `verdes`, luego haz clic en el botón Siguiente.
4. Deja la autenticación del backend como«Base de datos» por defecto y haz clic en Siguiente.
5. Escribe el nombre de la base de datos, el nombre de usuario y la contraseña para el icingaweb2 y vuelve a hacer clic en Siguiente.
6. Deja el nombre del backend de autenticación como«icingaweb2» por defecto y haz clic en Siguiente.
7. Ahora escribe el nuevo usuario y la contraseña de administración, y haz clic en Siguiente.
8. Deja la configuración de la aplicación y del registro por defecto, y haz clic en Siguiente.
9. Vuelve a comprobar todas las configuraciones, y luego haz clic en Siguiente para continuar.
10. Ahora haz clic en Siguiente para configurar los módulos de monitorización de icinga2.
11. Escribe el nombre de la base de datos, el nombre de usuario y la contraseña para el icinga2-ido-mysql, y luego haz clic en el botón Validar configuración.
Si tienes un error como‘Actualmente no hay ninguna instancia de icinga escribiendo en el IDO. Asegúrate de que hay una instancia de icinga configurada y capaz de escribir en el IDO’, vuelve a tu terminal y edita la configuración manualmente.
Ejecuta el siguiente comando para editar la configuración del IDO.
sudo nano /etc/icinga2/features-available/ido-mysql.conf
Copia y pega la configuración de ido mysql como se indica a continuación.
object IdoMysqlConnection "ido-mysql" {
user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }
Ahora pulsa Ctrl+x y luego y para guardar el archivo.
A continuación, reinicia el servicio Icinga2 con el siguiente comando.
sudo systemctl restart icinga2
Ahora vuelve al navegador web y activa la opción Omitir validación, y vuelve a pulsar Siguiente.
12. Ahora elige el tipo de transporte«Archivo de comando local» y haz clic en Siguiente.
13. Deja la configuración de seguridad de la monitorización por defecto y haz clic en Siguiente.
14. Vuelve a comprobar la configuración de la instalación de Icinga y haz clic en Finalizar para continuar.
15. Cuando la instalación se realice con éxito, obtendrás la salida que aparece en la imagen siguiente. A continuación, haz clic en el botón Iniciar sesión en Icinga Web 2.
Verificar la instalación de Icinga 2 e Icinga Web 2
1. Escribe tu usuario y contraseña de administrador de Icinga, y haz clic en el botón Iniciar sesión.
2. Ahora obtendrás una página similar a la siguiente.
Como puedes ver en el panel de control, hay algunos servicios detectados automáticamente por la herramienta de monitorización de icinga2. Los servicios con el color verde significan salud, y los servicios con el color amarillo significan que es necesario comprobar una advertencia. Y los servicios de error tendrán colores rojos.
Conclusión
Al finalizar el tutorial, has aprendido sobre la instalación y configuración de la herramienta de monitorización icinga2 en el último servidor CentOS 8 con LAMP Stack. La instalación de icinga2 requiere que te concentres en cada etapa, y lo más importante es que sepas lo que estás haciendo, no ejecutando comandos a ciegas.