Instalar y configurar OpenNMS en Alma Linux 8
OpenNMS es una plataforma de supervisión y gestión de redes gratuita y de código abierto escrita en Java. Es autoalojada y desarrollada por una comunidad de usuarios, desarrolladores y el Grupo OpenNMS. OpenNMS te permite supervisar todo en tus redes locales y remotas, incluido el rendimiento, la supervisión del tráfico, el aprovisionamiento, la supervisión de servicios, la gestión de eventos, el soporte de gráficos y mucho más. OpenNMS utiliza SNPM y JMX para recopilar la información de los hosts remotos.
Este post te mostrará cómo instalar OpenNMS con Nginx en Alma Linux 8.
Requisitos previos
- Un servidor que ejecute Alma Linux 8.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada en el servidor.
Instalar Java JDK
OpenNMS es una aplicación basada en Java. Así que Java JDK debe estar instalado en tu servidor. Puedes instalarlo ejecutando el siguiente comando:
dnf install java-11-openjdk -y
Una vez instalado Java, puedes verificar la instalación de Java utilizando el comando que se indica a continuación:
java --version
Obtendrás la siguiente salida:
openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
Instalar OpenNMS en Alma Linux 8
Por defecto, OpenNMS no está incluido en el repositorio por defecto de Alma Linux. Así que tendrás que añadir el repositorio oficial de OpenNMS a tu sistema.
Puedes añadir el repo de OpenNMS y la clave GPG ejecutando el siguiente comando:
dnf install https://yum.opennms.org/repofiles/opennms-repo-stable-rhel8.noarch.rpm rpm --import https://yum.opennms.org/OPENNMS-GPG-KEY
A continuación, instala OpenNMS ejecutando el siguiente comando:
dnf install opennms -y
Esto también instalará el servidor PostgreSQL en tu servidor.
A continuación, cambia el directorio al OpenNMS e inicializa la base de datos PostgreSQL con el siguiente comando:
cd /opt/opennms postgresql-setup initdb
Por último, inicia y habilita el servicio PostgreSQL con el siguiente comando:
systemctl start postgresql systemctl enable postgresql
Ahora puedes comprobar el estado del PostgreSQL con el siguiente comando:
systemctl status postgresql
Obtendrás la siguiente salida:
? postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-01-15 13:34:47 UTC; 5s ago Process: 7305 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS) Main PID: 7307 (postmaster) Tasks: 8 (limit: 11411) Memory: 15.9M CGroup: /system.slice/postgresql.service ??7307 /usr/bin/postmaster -D /var/lib/pgsql/data ??7309 postgres: logger process ??7311 postgres: checkpointer process ??7312 postgres: writer process ??7313 postgres: wal writer process ??7314 postgres: autovacuum launcher process ??7315 postgres: stats collector process ??7316 postgres: bgworker: logical replication launcher Jan 15 13:34:47 almalinux8 systemd[1]: Starting PostgreSQL database server... Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG: listening on IPv6 address "::1", port 5432 Jan 15 13:34:47 almalinux8 postmaster[7307]: 2022-01-15 13:34:47.618 UTC [7307] LOG: listening on IPv4 address "127.0.0.1", port 5432
Configurar PostgreSQL para OpenNMS
A continuación, tendrás que crear una base de datos y un usuario para OpenNMS.
En primer lugar, inicia sesión en PostgreSQL con el siguiente comando:
su - postgres -c "psql -U postgres"
A continuación, cambia la contraseña de Postgres con el siguiente comando:
alter user postgres with password 'mypassword';
A continuación, crea una base de datos y un usuario para OpenNMS con el siguiente comando:
createuser -P opennms createdb -O opennms opennms
A continuación, sal del shell PostgreSQL con el siguiente comando:
\q
A continuación, edita el archivo de configuración de PostgreSQL con el siguiente comando:
nano /var/lib/pgsql/data/pg_hba.conf
Busca las siguientes líneas:
host all all 127.0.0.1/32 ident host all all ::1/128 ident
Y, sustitúyelas por las siguientes líneas
host all all 127.0.0.1/32 md5 host all all ::1/128 md5
Por último, recarga el servicio PostgreSQL para aplicar los cambios de configuración:
systemctl reload postgresql
Configurar OpenNMS
A continuación, tendrás que editar el archivo de configuración del origen de datos OpenNMS y definir tu base de datos:
nano /opt/opennms/etc/opennms-datasources.xml
Cambia las siguientes líneas que coincidan con las credenciales de tu base de datos:
<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="mypassword" />
Guarda y cierra el archivo y, a continuación, ejecuta el siguiente comando para detectar la ruta de Java:
/opt/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-11.0.13.0.8-4.el8_5.x86_64/bin/java". runjava: Value of "/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java" stored in configuration file.
A continuación, ejecuta el siguiente comando para inicializar la base de datos y detectar las bibliotecas del sistema:
/opt/opennms/bin/install -dis
Obtendrás el siguiente resultado:
- Running pre-execution phase Creating backup of /opt/opennms/etc/service-configuration.xml Zipping /opt/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 /opt/opennms/etc/service-configuration.xml.zip Finished in 0 seconds Upgrade completed successfully!
Por último, inicia y habilita el servicio OpenNMS con el siguiente comando:
systemctl start opennms systemctl enable opennms
Puedes comprobar el estado de OpenNMS con el siguiente comando:
systemctl status opennms
Obtendrás la siguiente salida:
? opennms.service - OpenNMS server Loaded: loaded (/usr/lib/systemd/system/opennms.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-01-15 13:39:33 UTC; 6s ago Process: 8638 ExecStart=/etc/init.d/opennms -s start (code=exited, status=0/SUCCESS) Main PID: 9722 (java) Tasks: 36 (limit: 11411) Memory: 181.2M CGroup: /system.slice/opennms.service ??9721 bash /etc/init.d/opennms -s start ??9722 /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java --add-modules=java.base,java.compiler,java.datatransfer,ja> Jan 15 13:39:22 almalinux8 systemd[1]: Starting OpenNMS server... Jan 15 13:39:32 almalinux8 systemd[1]: opennms.service: Can't open PID file /opt/opennms/logs/opennms.pid (yet?) after start: No such file or> Jan 15 13:39:33 almalinux8 systemd[1]: opennms.service: Supervising process 9722 which is not our child. We'll most likely not notice when it> Jan 15 13:39:33 almalinux8 systemd[1]: Started OpenNMS server.
En este punto, 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=9722,fd=1031))
Una vez que hayas terminado, puedes continuar con el siguiente paso.
Configurar Nginx como proxy inverso para OpenNMS
A continuación, tendrás que instalar Nginx y configurarlo como proxy inverso para OpenNMS. Para ello, instala el servidor Nginx con el siguiente comando:
dnf install nginx -y
Una vez instalado Nginxx, crea un archivo de configuración de host virtual Nginx:
nano /etc/nginx/conf.d/opennms.conf
Añade las siguientes líneas:
upstream opennms { server 127.0.0.1:8980; } server { listen 80; server_name opennms.example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass http://opennms/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
Guarda y cierra el archivo y, a continuación, verifica la configuración de Nginx con el siguiente comando:
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, inicia y habilita el servicio Nginx para que se inicie al reiniciar el sistema:
systemctl start nginx systemctl enable nginx
Ahora puedes comprobar el estado de Nginx con el siguiente comando:
systemctl status nginx
Obtendrás la siguiente salida:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-01-15 13:44:05 UTC; 6s ago Process: 13489 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 13488 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 13486 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 13491 (nginx) Tasks: 2 (limit: 11411) Memory: 3.7M CGroup: /system.slice/nginx.service ??13491 nginx: master process /usr/sbin/nginx ??13492 nginx: worker process Jan 15 13:44:05 almalinux8 systemd[1]: Starting The nginx HTTP and reverse proxy server... Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok Jan 15 13:44:05 almalinux8 nginx[13488]: nginx: configuration file /etc/nginx/nginx.conf test is successful Jan 15 13:44:05 almalinux8 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Jan 15 13:44:05 almalinux8 systemd[1]: Started The nginx HTTP and reverse proxy server.
Configurar el cortafuegos
A continuación, tendrás que permitir el puerto 80 a través del cortafuegos. Puedes permitirlo ejecutando el siguiente comando:
firewall-cmd --add-service=http --permanent
A continuación, recarga el cortafuegos para aplicar los cambios:
firewall-cmd --reload
Una vez que hayas terminado, puedes pasar al siguiente paso.
Accede a la interfaz web de OpenNMS
Ahora, abre tu navegador web y accede a la interfaz web de OpenNMS utilizando la URL http://opennms.example.com. Aparecerá la pantalla de inicio de sesión de OpenNMS:
Proporciona el nombre de usuario y la contraseña de administrador por defecto como admin/admin y haz clic en el botón Iniciar sesión. Obtendrás 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 por defecto como se muestra a continuación:
Cambia la contraseña por defecto y pulsa el botón Enviar. Obtendrás la siguiente pantalla:
Conclusión
Enhorabuena! has instalado correctamente OpenNMS con Nginx en Alma Linux 8. Ahora puedes añadir los hosts remotos desde el panel de control de OpenNMS y empezar a monitorizarlos desde la ubicación central. No dudes en preguntarme si tienes alguna duda.