Cómo instalar el sistema de monitorización de red OpenNMS Horizon en Debian 11
OpenNMS es una plataforma de monitorización y gestión de redes gratuita, de código abierto y una de las más potentes que se utilizan para monitorizar dispositivos remotos desde una ubicación central. Soporta muchas funcionalidades, como el aprovisionamiento, la monitorización de servicios, la gestión de eventos, el soporte de gráficos y mucho más. OpenNMS utiliza SNMP y JMX y recoge información de sistemas remotos. Se ejecuta en los sistemas operativos Linux y Windows y proporciona una interfaz basada en la web para facilitar la supervisión.
En este tutorial, te mostraré cómo instalar OpenNMS en Debian 11.
Requisitos previos
- Un servidor que ejecute Debian 11.
- Un nombre de dominio válido que apunte a la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar Java en Debian 11
OpenNMS es una aplicación basada en Java. Por tanto, Java debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo ejecutando el siguiente comando:
apt-get install default-jdk -y
Una vez instalado Java, verifica la versión de Java con el siguiente comando:
java --version
Obtendrás la versión de Java en la siguiente salida:
openjdk 11.0.13 2021-10-19 OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1) OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)
Instalar OpenNMS en Debian 11
Por defecto, OpenNMS no está incluido en el repositorio principal de Debian 11. Así que tendrás que añadir el repositorio oficial de OpenNMS al APT.
En primer lugar, instala todas las dependencias necesarias utilizando el siguiente comando:
apt-get install curl gnupg2 wget -y
Una vez instalados todos los paquetes, crea un archivo de repositorio de OpenNMS utilizando el siguiente comando:
nano /etc/apt/sources.list.d/opennms.list
Añade las siguientes líneas:
deb https://debian.opennms.org stable main deb-src https://debian.opennms.org stable main
Guarda y cierra el archivo y luego importa la clave GPG con el siguiente comando:
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
Obtendrás la siguiente salida:
Connecting to debian.opennms.org (debian.opennms.org)|3.214.84.83|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1335 (1.3K) Saving to: ‘STDOUT’ - 100%[=================================================================>] 1.30K --.-KB/s in 0s 2021-11-28 07:58:07 (16.0 MB/s) - written to stdout [1335/1335] OK
A continuación, actualiza la caché del repositorio e instala el OpenNMS con el siguiente comando:
apt-get update -y
apt-get install opennms -y
Obtendrás el siguiente error durante la instalación:
Failed to install iplike into the template1 or opennms databases. See /tmp/install_iplike.log for details. To skip this step and install manually, set the environment variable SKIP_IPLIKE_INSTALL before installing this package. To install iplike into your database, use the /usr/sbin/install_iplike.sh script. See `install_iplike.sh -h` for more details.
Para resolver este error, tendrás que crear una base de datos y un usuario para OpenNMS en PostgreSQL.
Crear una base de datos en PostgreSQL
El servidor PostgreSQL se instaló automáticamente durante el proceso de instalación de OpenNMS.
En primer lugar, inicia el servicio PostgreSQL con el siguiente comando:
systemctl start postgresql
A continuación, conéctate a la instancia de PostgreSQL utilizando el siguiente comando:
su - postgres
Una vez conectado, crea un usuario para OpenNMS y establece una contraseña mediante el siguiente comando:
createuser opennms
psql -c "ALTER USER opennms WITH PASSWORD 'opennms';"
A continuación, crea una base de datos para OpenNMS y establece una contraseña para el usuario PostgreSQL:
createdb -O opennms opennms
psql -c "ALTER USER postgres WITH PASSWORD 'securepassword';"
A continuación, sal del shell de PostgreSQL con el siguiente comando:
exit
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar OpenNMS
A continuación, tendrás que editar el archivo de origen de datos de OpenNMS y definir las credenciales de tu base de datos:
nano /usr/share/opennms/etc/opennms-datasources.xml
Define las credenciales de tu base de datos como se muestra a continuación:
<jdbc-data-source name="opennms" database-name="opennms" class-name="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/opennms" user-name="opennms" password="opennms" /> <jdbc-data-source name="opennms-admin" database-name="template1" class-name="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/template1" user-name="postgres" password="securepassword" /> </datasource-configuration>
Guarda y cierra el archivo cuando hayas terminado y ejecuta el siguiente comando para detectar el entorno Java:
sudo -u opennms /usr/share/opennms/bin/runjava -s
Obtendrás la siguiente salida:
runjava: Looking for an appropriate JVM... runjava: Checking for an appropriate JVM in JAVA_HOME... runjava: Skipping... JAVA_HOME not set. runjava: Checking JVM in the PATH: "/etc/alternatives/java"... runjava: Did not find an appropriate JVM in the PATH: "/etc/alternatives/java" runjava: Searching for a good JVM... runjava: Found a good JVM in "/usr/lib/jvm/java-11-openjdk-amd64/bin/java". runjava: Value of "/usr/lib/jvm/java-11-openjdk-amd64/bin/java" stored in configuration file.
A continuación, ejecuta el siguiente comando para completar la configuración de OpenNMS:
sudo -u opennms /usr/share/opennms/bin/install -dis
Obtendrás la siguiente salida:
Finished in 0 seconds Processing RemotePollerServiceConfigMigratorOffline: Remove deprecated RemotePoller service entry from service-configuration.xml, see NMS-12684 - Running pre-execution phase Creating backup of /usr/share/opennms/etc/service-configuration.xml Zipping /usr/share/opennms/etc/service-configuration.xml - Running execution phase Current configuration: 32 services. A service entry named 'OpenNMS:Name=PerspectivePoller' already exists. Final configuration: 32 services. - Saving the execution state - Running post-execution phase Removing backup /usr/share/opennms/etc/service-configuration.xml.zip Finished in 0 seconds Upgrade completed successfully!
Iniciar el servicio OpenNMS
Después de configurar OpenNMS, inicia el servicio OpenNMS y habilítalo para que se inicie al reiniciar el sistema mediante el siguiente comando:
systemctl start opennms
systemctl enable opennms
Puedes verificar el estado de OpenNMS utilizando el siguiente comando:
systemctl status opennms
Obtendrás la siguiente salida:
? opennms.service - OpenNMS server Loaded: loaded (/lib/systemd/system/opennms.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-11-28 08:10:51 UTC; 16s ago Process: 22990 ExecStart=/usr/share/opennms/bin/opennms -s start (code=exited, status=0/SUCCESS) Main PID: 24106 (java) Tasks: 68 (limit: 4679) Memory: 559.2M CPU: 48.083s CGroup: /system.slice/opennms.service ??24105 bash /usr/share/opennms/bin/opennms -s start ??24106 /usr/lib/jvm/java-11-openjdk-amd64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,java.desktop,java.in> Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so. Attempting to loa> Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp library. Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so. Attempting to l> Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp6 library. Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp' set to '/usr/lib/jni/libjicmp.so. Attempting to loa> Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp library. Nov 28 08:11:02 debian11 opennms[24106]: [DEBUG] System property 'opennms.library.jicmp6' set to '/usr/lib/jni/libjicmp6.so. Attempting to l> Nov 28 08:11:02 debian11 opennms[24106]: [INFO] Successfully loaded jicmp6 library. Nov 28 08:11:07 debian11 opennms[24106]: Nov 28, 2021 8:11:07 AM org.hibernate.validator.internal.util.VersionNov 28 08:11:07 debian11 opennms[24106]: INFO: HV000001: Hibernate Validator 4.3.2.Final
En este momento, OpenNMS está iniciado y escucha en el puerto 8980. Puedes comprobarlo con el siguiente comando:
ss -antpl | grep 8980
Obtendrás la siguiente salida:
LISTEN 0 50 *:8980 *:* users:(("java",pid=24106,fd=1046))
Configurar Nginx como proxy inverso para OpenNMS
A continuación, se recomienda instalar y configurar Nginx como proxy inverso para OpenNMS. Primero, instala el servidor Nginx con el siguiente comando:
apt-get install nginx -y
Una vez instalado el Nginx, crea un archivo de configuración del host virtual Nginx:
nano /etc/nginx/conf.d/opennms.conf
Añade la siguiente configuración:
server { listen 80; server_name opennms.example.com; 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://nms.hacc.edu/; proxy_pass http://server-ip:8980; } }
Guarda y cierra el archivo y luego verifica que el Nginx no tenga ningún error de configuración de sintaxis:
nginx -t
Obtendrás la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
Para comprobar el estado de ejecución de Nginx, ejecuta el siguiente comando:
systemctl status nginx
Deberías ver la siguiente salida:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-11-28 08:17:14 UTC; 6s ago Docs: man:nginx(8) Process: 25964 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 25965 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 25967 (nginx) Tasks: 3 (limit: 4679) Memory: 3.2M CPU: 53ms CGroup: /system.slice/nginx.service ??25967 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??25968 nginx: worker process ??25969 nginx: worker process Nov 28 08:17:14 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Nov 28 08:17:14 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
Accede al panel de control de OpenNMS
Ahora, abre tu navegador web y accede a la interfaz web de OpenNMS utilizando la URL http://opennms.example.com. Deberías ver la página de acceso a OpenNMS:
Proporciona el nombre de usuario y la contraseña por defecto como admin y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de OpenNMS en la siguiente pantalla:
Ahora, haz clic en el botón admin > Cambiar contraseña para cambiar la contraseña de administrador por defecto, como se muestra a continuación:
Cambia la contraseña por defecto y haz clic en el botón Enviar. Deberías ver la siguiente pantalla:
Conclusión
Enhorabuena! has instalado con éxito OpenNMS con Nginx como proxy inverso en un servidor Debian 11. Ahora puedes añadir los dispositivos remotos a OpenNMS y empezar a monitorizarlos desde el navegador web. No dudes en preguntarme si tienes alguna duda.