OpenNMS est une plate-forme gratuite, open-source et l'une des plates-formes de surveillance et de gestion de réseau les plus puissantes utilisées pour surveiller les appareils distants à partir d'un emplacement central. Il prend en charge de nombreuses fonctionnalités, notamment l'approvisionnement, la surveillance des services, la gestion des événements, la prise en charge des graphiques, etc. OpenNMS utilise SNMP et JMX et rassemble des informations à partir de systèmes distants. Il fonctionne sur les systèmes d'exploitation Linux et Windows et fournit une interface Web pour une surveillance facile.
Dans ce tutoriel, je vais vous montrer comment installer OpenNMS sur Debian 11.
Prérequis
- Un serveur exécutant Debian 11.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Installer Java sur Debian 11
OpenNMS est une application basée sur Java. Java doit donc être installé sur votre serveur. S'il n'est pas installé, vous pouvez l'installer en exécutant la commande suivante :
apt-get install default-jdk -y
Une fois Java installé, vérifiez la version de Java à l'aide de la commande ci-dessous :
java --version
Vous obtiendrez la version Java dans la sortie suivante :
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)
Installer OpenNMS sur Debian 11
Par défaut, OpenNMS n'est pas inclus dans le référentiel principal de Debian 11. Vous devrez donc ajouter le référentiel officiel OpenNMS à l'APT.
Tout d'abord, installez toutes les dépendances requises à l'aide de la commande suivante :
apt-get install curl gnupg2 wget -y
Une fois tous les packages installés, créez un fichier de référentiel OpenNMS à l'aide de la commande ci-dessous :
nano /etc/apt/sources.list.d/opennms.list
Ajoutez les lignes suivantes :
deb https://debian.opennms.org stable main deb-src https://debian.opennms.org stable main
Enregistrez et fermez le fichier puis importez la clé GPG avec la commande suivante :
wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
Vous obtiendrez le résultat suivant :
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
Ensuite, mettez à jour le cache du référentiel et installez OpenNMS avec la commande suivante :
apt-get update -y
apt-get install opennms -y
Vous obtiendrez l'erreur suivante lors de l'installation :
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.
Pour résoudre cette erreur, vous devrez créer une base de données et un utilisateur pour OpenNMS dans PostgreSQL.
Créer une base de données dans PostgreSQL
Serveur PostgreSQL installé automatiquement lors du processus d'installation d'OpenNMS.
Commencez par démarrer le service PostgreSQL à l'aide de la commande suivante :
systemctl start postgresql
Ensuite, connectez-vous à l'instance PostgreSQL à l'aide de la commande suivante :
su - postgres
Une fois connecté, créez un utilisateur pour OpenNMS et définissez un mot de passe à l'aide de la commande suivante :
createuser opennms
psql -c "ALTER USER opennms WITH PASSWORD 'opennms';"
Ensuite, créez une base de données pour OpenNMS et définissez un mot de passe pour l'utilisateur postgres :
createdb -O opennms opennms
psql -c "ALTER USER postgres WITH PASSWORD 'securepassword';"
Ensuite, quittez le shell PostgreSQL avec la commande suivante :
exit
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer OpenNMS
Ensuite, vous devrez modifier le fichier de source de données OpenNMS et définir vos identifiants de base de données :
nano /usr/share/opennms/etc/opennms-datasources.xml
Définissez vos informations d'identification de base de données comme indiqué ci-dessous :
<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>
Enregistrez et fermez le fichier lorsque vous avez terminé, puis exécutez la commande suivante pour détecter l'environnement Java :
sudo -u opennms /usr/share/opennms/bin/runjava -s
Vous obtiendrez le résultat suivant :
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.
Ensuite, exécutez la commande suivante pour terminer la configuration d'OpenNMS :
sudo -u opennms /usr/share/opennms/bin/install -dis
Vous obtiendrez le résultat suivant :
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!
Démarrer le service OpenNMS
Après avoir configuré OpenNMS, démarrez le service OpenNMS et activez-le au redémarrage du système à l'aide de la commande suivante :
systemctl start opennms
systemctl enable opennms
Vous pouvez vérifier l'état d'OpenNMS à l'aide de la commande suivante :
systemctl status opennms
Vous obtiendrez le résultat suivant :
? 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
À ce stade, OpenNMS est démarré et écoute sur le port 8980. Vous pouvez le vérifier avec la commande suivante :
ss -antpl | grep 8980
Vous obtiendrez le résultat suivant :
LISTEN 0 50 *:8980 *:* users:(("java",pid=24106,fd=1046))
Configurer Nginx en tant que proxy inverse pour OpenNMS
Ensuite, il est recommandé d'installer et de configurer le Nginx en tant que proxy inverse pour OpenNMS. Tout d'abord, installez le serveur Nginx avec la commande suivante :
apt-get install nginx -y
Une fois Nginx installé, créez un fichier de configuration d'hôte virtuel Nginx :
nano /etc/nginx/conf.d/opennms.conf
Ajoutez la configuration suivante :
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; } }
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de configuration de syntaxe :
nginx -t
Vous obtiendrez le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ensuite, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Pour vérifier l'état d'exécution de Nginx, exécutez la commande suivante :
systemctl status nginx
Vous devriez voir le résultat suivant :
? 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.
Accéder au tableau de bord OpenNMS
Maintenant, ouvrez votre navigateur Web et accédez à l'interface Web OpenNMS en utilisant l'URL http://opennms.example.com . Vous devriez voir la page de connexion OpenNMS :
Indiquez le nom d'utilisateur et le mot de passe par défaut en tant qu'administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord OpenNMS sur l'écran suivant :
Maintenant, cliquez sur admin> Changer le mot de passe pour modifier le mot de passe administrateur par défaut comme indiqué ci-dessous :
Modifiez votre mot de passe par défaut et cliquez sur Soumettre bouton. Vous devriez voir l'écran suivant :
Conclusion
Toutes nos félicitations! vous avez installé avec succès OpenNMS avec Nginx en tant que proxy inverse sur le serveur Debian 11. Vous pouvez maintenant ajouter les appareils distants à OpenNMS et commencer à les surveiller à partir du navigateur Web. N'hésitez pas à me demander si vous avez des questions.