Cómo instalar la solución de monitorización OpenNMS en Ubuntu 22.04

OpeNNMS es un sistema gratuito y de código abierto de monitorización y gestión de redes. Es una plataforma de supervisión de redes de nivel empresarial que visualiza y supervisa todo tanto en redes locales como en redes remotas. OpenNMS es una solución totalmente de código abierto para la supervisión y gestión de redes, se publica bajo la licencia AGPLv3.

OpenNMS es una plataforma escalable de supervisión de redes que te permite supervisar decenas de miles de redes mediante sistemas distribuidos y por niveles. Además, OpenNMS es una plataforma de monitorización flexible que se integra fácilmente con tu negocio principal y con extensiones de terceros.

OpenNMS tiene múltiples componentes que se enumeran a continuación:

  1. OpenNMS Horizon: incluye tres componentes principales: Core (el componente principal de Horizon), Minion (utilizado para la supervisión distribuida remota) y Sentinel (para la escalabilidad).
  2. Helm – panel de control personalizado para OpenNMS.
  3. Architecture for Learning Enabled Correlation (ALEC) (triaje de alarmas).
  4. Provisioning Integration Server (PRIS) (integración de datos extraídos).

Esta guía te muestra cómo instalar la Solución de Monitorización OpenNMS con un servidor de base de datos PostgreSQL y un Proxy Inverso Nginx en un servidor Ubuntu 22.04. Además, esta guía te mostrará la instalación de Java OpenJDK, la configuración básica del servidor de base de datos PostgreSQL y del servidor web Nginx.

Requisitos previos

En primer lugar, necesitarás los siguientes requisitos para terminar esta guía:

  • Un servidor Ubuntu 22.04 – Este ejemplo utiliza el servidor Ubuntu con nombre de host ‘opennms-server ‘ y la memoria es de 4GB.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Se utilizará un nombre de dominio o dominio local para ejecutar OpenNMS.

Instalación del OpenJDK de Java

La solución de monitorización OPneNMS es una herramienta de monitorización escrita principalmente en Java. En el momento de escribir esto, la última versión de OpenNMS soporta como mínimo Java 11. El repositorio por defecto de Ubuntu 22.04 proporciona el OpenJDK 11 de Java que puedes instalar fácilmente mediante APT.

Antes de instalar Java, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes.

sudo apt update

Ahora instala Java OpenJDK 11 mediante el siguiente comando apt. La versión por defecto de Java para el sistema Ubuntu 22.04 es Java OpenJDK 11, que es adecuada para la instalación de OpenNMS.

sudo apt install default-jdk

Cuando se te solicite, introduce y para confirmar y pulsa INTRO. Comenzará la instalación de Java OpenJDK.

instalar java

Una vez instalado Java OpenJDK, ejecuta el siguiente comando para verificar la versión instalada de Java. Deberías tener Java OpenJDK 1.11 instalado en tu sistema Ubuntu.

java -version

comprobar java

Con Java OpenJDK instalado, pasa a la instalación de la base de datos PostgreSQL.

Instalación y configuración del servidor PostgreSQL

PostgreSQL es un RDMS (Sistema de Gestión de Bases de Datos Relacionales) de alto rendimiento. El OpenNMS sólo admite PostgreSQL como backend de la base de datos. En el momento de escribir esto, el OpenNMS admite PostgreSQL v10.x-14.x.

Ahora instalarás y configurarás la base de datos PostgreSQL v14 en un servidor Ubuntu. Por defecto, el repositorio de Ubuntu proporciona varias versiones de PostgreSQL, y tú instalarás PostgreSQL 14.x para la implantación de OpenNMS.

Ejecuta el siguiente comando apt para instalar PostgreSQL 14.

sudo apt install postgresql-14

Cuando se te pida confirmación, introduce y y pulsa ENTER para continuar.

instalar postgresql

Una vez instalado el paquete PostgreSQL, ejecuta el siguiente comando systemctl para verificar el servicio PostgreSQL y asegurarte de que el servicio se está ejecutando y está habilitado.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Verás entonces que el servicio PostgreSQL está habilitado y se ejecutará automáticamente al arrancar. Y el estado del servicio PostgreSQL es en ejecución.

verificar postgresql

Ahora que la base de datos PostgreSQL está en ejecución, repasarás la base de datos y la creación de usuarios para el OpenNMS. También configurarás la contraseña del usuario PostgreSQL por defecto‘postgres‘.

Ejecuta el siguiente comando para crear un nuevo usuario PostgreSQL ‘opennms’. Cuando te pida la contraseña, introduce la nueva contraseña para el usuario ‘opennms‘ y repítela.

sudo -u postgres createuser -P opennms

A continuación, crea una nueva base de datos‘opennms‘ con el propietario ‘opennms‘ mediante el siguiente comando.

sudo -u postgres createdb -O opennms opennms

Por último, cambia la contraseña del usuario ‘postgres‘ mediante el siguiente comando. Y asegúrate de cambiarla por una nueva contraseña fuerte.

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '5up3rp4ssw0rd';"

configurar base de datos postgresql y usuario

Ahora que tienes java OpenJDK y PostgreSQL instalados, estás listo para instalar OpenNMS.

Instalación y configuración de OpenNMS

Has instalado Java OpenJDK y la base de datos PostgreSQL, también has creado una nueva base de datos y un nuevo usuario para OpenNMS, y has configurado la contraseña por defecto para el usuario ‘postgres’ de PostgreSQL. A continuación, empezarás a instalar y configurar OpenNMS.

En esta sección, instalarás OpenNMS a través del repositorio oficial de OpenNMS. A continuación, configurarás OpenNMS con la base de datos PostgreSQL, configurarás el entorno Java, inicializarás el esquema de la base de datos, detectarás las bibliotecas del sistema y permitirás que OpenNMS se ejecute en puertos privilegiados.

En primer lugar, ejecuta el siguiente comando para añadir la clave GPG y el repositorio de OpenNMS.

sudo apt-key adv --fetch-keys https://debian.opennms.org/OPENNMS-GPG-KEY
sudo add-apt-repository -s 'deb https://debian.opennms.org stable main'

Cuando se te solicite, pulsa INTRO para confirmar y añadir el repositorio de OpenNMS.

añadir repo

Ahora instala el paquete OpenNMS con paquetes R adicionales mediante el siguiente comando apt.

sudo apt install opennms r-recommended

Cuando se te pida confirmación, introduce y para confirmar y pulsa ENTER para continuar.

instalar opennms

A continuación, ejecuta el siguiente comando apt para desactivar la actualización automática del paquete OpenNMS. El OpenNMS requiere pasos y configuraciones manuales cuando se actualiza a una nueva versión, por lo que debes actualizarlo manualmente para evitar errores durante/después de las actualizaciones.

sudo apt-mark hold libopennms-java \
libopennmsdeps-java \
opennms-common \
opennms-db

desactivar la actualización automática

Ahora que el OpenNMS está instalado, puedes verificar el directorio de instalación del OpenNMS‘/usr/share/opennms‘ mediante el siguiente comando. Además, cualquier cambio relacionado con OpenNMS debería aplicarse a los archivos del directorio ‘/usr/share/opennms‘.

sudo apt install tree -y
sudo tree /usr/share/opennms -L 1

Podrías ver una lista de directorios y archivos del paquete OpenNMS.

archivos de la lista opennms

A continuación, establecerás la configuración de la base de datos para OpenNMS. Abre el archivo‘/usr/share/opennms/etc/opennms-datasources.xml‘ utilizando el siguiente comando del editor nano. Elcomando ‘sudo -u opennms..‘ indica que estás ejecutando el comando como usuario‘opennms‘, y no como usuario root.

sudo -u opennms nano /usr/share/opennms/etc/opennms-datasources.xml

Cambia el ‘jdbc-data-source’ para elopennms’ debe estar utilizando los detalles de la base de datos y el usuario ‘opennms‘. Y para ‘opennms-admin‘, deberías estar utilizando el usuario administrador de PostgreSQL‘postgres‘.

<jdbc-data-source name="opennms"
                    database-name="opennms"
                    class-name="org.postgresql.Driver"
                    url="jdbc:postgresql://localhost:5432/opennms"
                    user-name="opennms"
                    password="p4ssw0rd" />

<jdbc-data-source name=»opennms-admin»
database-name=»template1″
class-name=»org.postgresql.Driver»
url=»jdbc:postgresql://localhost:5432/template1″
user-name=»postgres»
password=»5up3rp4ssw0rd» />

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para detectar el entorno Java en tu sistema, que se almacenará permanentemente en el archivo de configuración ‘/usr/share/opennms/etc/java.conf‘.

sudo -u opennms /usr/share/opennms/bin/runjava -s

configurar opennms

Después, ejecuta el siguiente comando para inicializar la base de datos y detecta las bibliotecas del sistema para el OpenNMS. Las bibliotecas para el OpenNMS aparecerán en el archivo‘/opt/opennms/etc/libraries.properties‘.

sudo -u opennms /usr/share/opennms/bin/install -dis

instalador opennsm

A continuación, edita el archivo de servicio OpenNMS mediante el siguiente comando systemctl. Deberás obtener el EDITOR predeterminado en tu sistema.

sudo systemctl edit --full opennms.service

Añade la siguiente configuración a la sección ‘[Servicio]‘. Esto permite que el servicio OpenNMS se ejecute y se enlace en puertos privilegiados (puertos 1-1024).

[Service]
...
AmbientCapabilities=CAP_NET_RAW CAP_NET_BIND_SERVICE

Guarda el archivo y sal del editor cuando hayas terminado.

Tras modificar el archivo del servicio OpenNMS, ejecuta el siguiente comando para recargar el gestor systemd, reiniciar y habilitar el servicio OpenNMS.

sudo systemctl daemon-reload
sudo systemctl restart opennms
sudo systemctl enable opennms

Ahora que el servicio OpenNMS está en marcha y funcionando con las nuevas configuraciones, verifica el servicio OpenNMS mediante el siguiente comando systemctl.

sudo systemctl is-enabled opennms
sudo systemctl status opennms

El resultado – El servicio OpenNMS está habilitado y se ejecutará automáticamente al arrancar el sistema. Y el servicio OpenNMS se está ejecutando actualmente.

comprobar opennms

Llegados a este punto, ya has terminado la instalación y configuración de OpenNMS. Pero, vas a ejecutar OpenNMS con el proxy inverso Nginx. Sigue leyendo para aprender a configurar Nginx como proxy inverso para OpenNMS.

Instalación de Nginx como proxy inverso para OpenNMS

Ahora que tienes OpenNMS ejecutándose en el puerto por defecto ‘8980’, a continuación instalarás y configurarás Nginx como proxy inverso para OpenNMS.

Ejecuta el siguiente comando apt para instalar el paquete Nginx en tu sistema.

sudo apt install nginx

Introduce y cuando se te solicite, y pulsa ENTER para continuar. Y comenzará la instalación.

instalar nginx

A continuación, verifica el servicio Nginx con el siguiente comando systemctl.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Deberías ver que el servicio Nginx está habilitado y se ejecutará automáticamente al arrancar el sistema. Además, el servicio Nginx se iniciará automáticamente una vez finalizada la instalación.

comprobar nginx

Una vez instalado Nginx, crea un nuevo bloque de servidor Nginx‘/etc/nginx/sites-available/opennms.conf‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/nginx/sites-available/opennms.conf

Añade la siguiente configuración al archivo. Asegúrate de cambiar el nombre de dominio por tu dominio.

server {
    listen 80;
    server_name opennms.hwdomain.io;
    access_log /var/log/nginx/opennms.access.log;
    error_log /var/log/nginx/opennms.error.log;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-OpenNMS-Server-URL https://opennms.hwdomain.io/;
proxy_pass http://localhost:8980;
}

}

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, activa el bloque de servidor‘opennms.conf‘ y verifica la configuración de Nginx para asegurarte de que tienes la configuración correcta.

sudo ln -s /etc/nginx/sites-available/opennms.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si ves un mensaje de salida como‘test successful – syntax ok‘, significa que tu configuración de Nginx es correcta.

setuo nginx

Ahora reinicia el servicio Nginx para aplicar la nueva configuración del bloque del servidor.

sudo systemctl restart nginx

Ahora que Nginx se está ejecutando como proxy inverso para OpenNMS, repasa la configuración del cortafuegos UFW y abre algunos puertos para algunos servicios.

Configuración del cortafuegos UFW

Una vez configurado el proxy inverso Nginx, a continuación configurarás el UFW en tu servidor OpenNMS. Ejecutarás la Herramienta de Monitorización OpenNMS con el UFW activado, por lo que deberás añadir algunos puertos que se utilizarán para OpenNMS.

Ejecuta el siguiente comando apt para instalar UFW en tu sistema.

sudo apt install ufw -y

Una vez instalado UFW, ejecuta el siguiente comando para añadir el servicio OpenSSH. A continuación, inicia y activa el servicio UFW.

sudo ufw allow OpenSSH
sudo ufw enable

Cuando se te pida, introduce y para confirmar y pulsa ENTER para continuar. Ahora el UFW se ejecutará y estará habilitado y se ejecutará automáticamente al arrancar.

configuración ufw ssh

A continuación, añade una nueva regla para permitir el tráfico al servidor web Nginx.

sudo ufw allow "Nginx Full"

ufw nginx

Para ello, abre el archivo‘/etc/ufw/before.rules’ utilizando el siguiente comando del editor nano.

sudo nano /etc/ufw/before.rules

Añade la siguiente configuración antes de la sección ‘*filter’. Esto activará NAT y redirigirá/reenviará el tráfico de 62/udp a 10162/udp.

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p udp --dport 162 -j REDIRECT --to-port 10162
COMMIT

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora añade la nueva regla para permitir ambos puertos 62/udp a 10162/udp.

sudo ufw allow in 162/udp
sudo ufw allow in 10162/udp

Recarga la UFW para aplicar los cambios y comprueba el estado de la UFW mediante el siguiente comando.

sudo ufw reload
sudo ufw status

ceck ufw

Hasta ahora, has terminado la instalación y configuración de OpenNMS con dependencias de paquetes como la base de datos PostgreSQL y el servidor web Nginx, y también has configurado la UFW. Para el paso final, accederás a la instalación de OpenNMS a través de un navegador web y configurarás el usuario administrador para OpenNMS.

Acceso a la herramienta de monitorización OpenNMS

Abre tu navegador web y visita el nombre de dominio de tu instalación de OpenNMS (es decir: http://opennms.hwdomain.io). Deberías ver la página de inicio de sesión de la Herramienta de supervisión de OpenNMS.

Introduce el usuario/contraseña por defecto‘admin/admin‘ y haz clic en‘Iniciar sesión‘.

inicio de sesión

Verás el panel de administración de OpenNMS.

tablero opennms

Después de iniciar sesión en OpenNMS mediante el usuario/contraseña por defecto «admin/admin«, deberás cambiar el nombre de usuario y la contraseña por defecto de tu instalación de OpenNMS.

En la barra de menú superior, haz clic en el menú«Admin» y selecciona «Cambiar contraseña«.

Ahora introduce la antigua contraseña ‘admin’ e introduce la nueva contraseña de OpenNMS y repite la contraseña. A continuación, haz clic en «Enviar» para aplicarla.

cambiar contraseña

Ya has terminado la configuración de OpenNMS.

Conclusión

Ya tienes instalado en tu servidor Ubuntu 22.04 OpenNMS, una herramienta de monitorización altamente escalable y personalizable. También has configurado el servidor de base de datos PostgreSQL instalado y el servidor web Nginx configurado como proxy inverso para el OpenNMS. Con OpenNMS totalmente configurado, ya puedes añadir un nuevo host para supervisar mediante el protocolo SNMP, configurar la supervisión distribuida mediante OpenNMS Minion, escalar OpenNMS mediante Sentinel y empezar a personalizar el panel de control mediante Helm.

Si quieres ejecutar OpenNMS en grandes despliegues, consulta la documentación oficial.

También te podría gustar...