Ma nouvelle installation en conteneur
surveillance du réseau monitoring avec Nagios et pve-monitor (proxmox)
Dans l'article précédent j'ai expliqué pourquoi j'utilisai un Raspberry consacré uniquement aux différentes sauvegardes , à la communication par GSM et à la surveillance de mon PC sur lequel sont installées mes différentes machines virtuelles. Après avoir réalisé une liaison série avec le mini PC hébergeant mes machines virtuelles , j"ai installé sur le Raspberry , qui assure déjà les fonctions de serveur GSM et de pilotage de Domoticz par SMS, un logiciel de surveillance réseau. J'ai choisi Nagios et le plugin pve-monitor pour surveiller toutes mes VM ainsi que le stockage de les sauvegardes.Les notifications , par Email , par SMS et internet ou par SMS et modem GSM , sont développées sur cette page.
Pré-requisSSH est installé afin d'utiliser PuttyLe pare feu UFW est installé
- Activez SSH et configurez-le pour un démarrage automatique si possible
- Mettre le PI à jour :
la mise à jour peut être assez longue.....quand elle est terminée: sudo reboot Nagios a une interface web, il faut donc installer Apache et PHP : sur le PI je démarre automatiquement sur un SSD aussi j'ai installé Ubuntu 20.X; pour faire des essai , j'ai utilisé PI OS (Raspbian) , les Packages requis diffèrent quelque peu aussi voici les 2 installations:- sur PI OS,
- sur Ubuntu 20.x
Nagiostéléchargez la dernière version avec wget - pour nagios core et plugins , liens sur cette page ; https://support.nagios.com/kb/article/nagios-core-installing-nagios-core-from-source-96.htmljuin 2021 , avec la version 4.4.5:
Compilation :
Créer l’utilisateur et le groupe pour Nagios , et pour apache (s'il n'existe pas)
installation :
Configuration d'Apache pour Nagios- Activer les modules rewrite et CGI
- Copier la configuration dans le dossier ApacheImportant : il faut toujours être dans le dossier nagioscore-nagios-4.4.x
OU (solution plus facile)
- Créez au moins un utilisateur pour accéder à l’interface web :
- Configurer le pare-feu UFW :ajouter le port HTTP SSH et Apache Pour cela, il faut être ROOT,
Correction , si le profil Apache2 UFW est manquant :Could not find a profile matching 'Apache'créer avec nano un nouveau fichier " /etc/ufw/applications.d/apache2-utils.ufw.profile"
[Apache] title=Web Server description=Apache v2 . ports=80/tcp [Apache Secure] title=Web Server (HTTPS) description=Apache v2 . ports=443/tcp [Apache Full] title=Web Server (HTTP,HTTPS) description=Apache v2 . ports=80,443/tcp
Pour un démarrage automatique du pare-feu : ufw enable
- Dernière vérification : Le dossier « rw » et le fichier nagios.cmd doivent appartenir au groupe nagioscmd (nagios.cmd n'existe qu'après le lancement de Nagios) Pour Ubuntu , voir la correction ci-après.
Correction pour UBUNTU Changement de groupe du dossier /usr/local/nagios/var/rw/
systemctl stop nagios sudo chown -R nagios:www-data /usr/local/nagios/var/rw/ systemctl start nagios
- Redémarrer Apache :
OU
Malgré ces vérifications il peut y avoir des problèmes d'autorisation à chaque démarrage de Nagios lors d'un reboot du système (un reload de nagios ne crée pas de problème); sur le web , il y a de nombreuses solutions qui sont proposées mais pour moi aucunes n'ont fonctionné . J'ai donc choisi de créer un script bash, lancé par systemd lors d'un démarrage du système, pour modifier les droits; les modifications à apporter: - création du script sudo nano /home/USER/nagios_cmd.sh
- Création du script pour un lancement automatique avec systemd: sudo nano /etc/systemd/system/droits_nagios.service
[Unit] Description=modification des droits de nagios.cmd [Service] Type=simple ExecStart=/home/michel/nagios_cmd.sh [Install] WantedBy=multi-user.target
Pour assurer le démarrage automatique: systemctl enable droits_nagios.service- pour un lancement manuel : systemctl start droits_nagios.serviceles droits : ici 777 mais 666 devrait suffire.
- Pour vérifier que vous avez accès à l'interface web de Nagios : .....Ouvrez la page http://<IP du PI>nagios
Démarrage du service Nagios ;
Pour démarrer Nagios automatiquement :
Résultat en actualisant la page nagios du navigateur : message « Daemon running.....
Mise à Jour de Nagiosexemple avec la version 4.4.6 ,
make allmake install .......comme pour l'installation initiale. pour vérifiez les fichiers de configuration avant de continuer,
Redémarrez Nagios Core :/sbin/service nagios start
Installation des plugins Nagios Prérequis : packages à installer si' ils ne sont pas déjà ,
Téléchargement et extraction de l'archive:
Compilation et installation :
Les fichiers de configurations de Nagios se trouvent dans le dossier ou les sous-dossiers de /usr/local/nagios/etc/ le fichier de configuration principal est nagios.cfg.
Le seul serveur contrôlé pour l’instant est le serveur qui héberge nagios et pour ce serveur le fichier de configuration s’appelle localhost.cfg Dans le dossier objects nous allons créer un dossier proxmox, c’est dans ce dossier que nous allons configurer toutes nos machines virtuelles à superviser. Ajoutons ce dossier dans nagios.cfg en remplacement de localhost.cfg
Création du répertoire proxmox dans /usr/local/nagios/etc/objects
Dans le dossier proxmox, nous allons créer trois fichiers:- vm_hosts.cfg, - vm_hostgroups.cfg et - vm_services.cfg Pour avoir un modèle pour ajouter des serveurs on peut faire des copies de localhost.cfg
HOST DEFINITION : Ctrl K pour supprimer des lignes
Pour éviter de copier un grand nombre de données on utilise des modèles (templates): https://wiki.monitoring-fr.org/nagios/nagios-debutant/templates-hostgroups-pivots
Le fichier /usr/local/nagios/etc/objectstemplates.cfg/:
HOST GROUP DEFINITION:
SERVICE DEFINITIONS : Comme pour les hosts on peut utiliser un modèle
Les options : -w est l’argument pour le seuil de Warning (avertissement), la première valeur 100.0 est le temps moyen du ping et la valeur 20% est le pourcentage de paquets perdu avant que le service ne se mette en étant WARNING -c est l’argument pour le seuil Critical (état critique), les valeurs sont 500 ms et le pourcentage de paquets perdus est à 60% avant que le service ne se mette en état CRITICAL. -p est le nombre de ping que va faire la commande.
Autres configurations:
Configuration les périodes de temps Ces périodes peuvent être reconfigurées pour être en phase avec l'activité de certains services, le fichier de configuration se trouve dans le répertoire: /usr/local/nagios/etc/objects
on vérifie les fichiers de configuration:
Plugin pve-monitor (proxmox)il utilise le module Perl proxmox-ve-api-perl ,Installations de quelques librairies Perl:
Installation du module Perl proxmox-ve-api-perl:
Installation de pve-monitor ; vérifier d'installer la dernière version:http://pve-monitor.scriptutils.com/francais/presentation/
- pve-monitor.conf ne doit pas être lu par Nagios , uniquement par pve-monitor aussi il peut être installé n'importe où sauf dans le répertoire de Nagios.
Déclarer un cluster Proxmox dans Nagios
définir les commandes dans Nagios: pour afficher les différents modes :
Pour ajouter des commandes , éditer le fichier commands.cfg
copier le contenu ci dessous (ou importer les commandes depuis la page d'accueil de pve-monitor ,http://pve-monitor.scriptutils.com/francais/presentation/ ) à la fin de ce fichier ; indiquer le bon chemin pour pve-monitor.conf
Pour superviser un cluster : Comme on l'a fait précédemment avec les VM Proxmox , on va indiquer à Nagios le nom du fichier qui regroupe les différentes définitions (hosts,sertvices,..) et créer ce fichier qu'il suffit d'importer depuis la page d' accueil de pve-monitor ou copier le contenu ci-après.
ajouter : cfg_file=/usr/local/nagios/etc/objects/pve-cluster.cfgle fichier cluster.cfg sera crée ensuite dans /usr/local/nagios/etc/objects/
# the command check_pve_cluster_nodes give us info # on the member's cluster state define host { host_name pve-cluster max_check_attempts 10 check_command check_pve_cluster_nodes } # define openvz, qemu and storages as services of the cluster # pve-monitor < 1.07 define service{ use generic-service host_name pve-cluster service_description OpenVZ VMs check_command check_pve_cluster_openvz } # pve-monitor >= 1.07 define service{ use generic-service host_name pve-cluster service_description Containers check_command check_pve_cluster_containers } define service{ use generic-service host_name pve-cluster service_description Qemu VMs check_command check_pve_cluster_qemu } define service{ use generic-service host_name pve-cluster service_description Storages check_command check_pve_cluster_storage }
les lignes en rouge sont à supprimer.
Dans Proxmox, configurer un utilisateur en lecture seule- Créer l'utilisateur du cluster
- Ajouter les autorisations
Le fichier pve-monitor.conf : je l'ai installé dans mon répertoire utilisateur mais il peut , comme je l'ai déjà indiqué ,être installé où vous le souhaitez à condition de ne pas être appelé par Nagios.le créer avec nano :
#exemple pve-monitor.conf # node Proxmox node pve { address 192.168.1.140 port 8006 # Optional, default is 8006 monitor_account root monitor_password xxxxxxxx realm pam # Optional, default is pam mem 80 90 # optional, not monitored if not defined cpu 80 95 # optional disk 80 90 # optional } # pour des CT : container # pour des VM : qemu #container Nginx-LXC # mem 80 90 # cpu 80 95 # disk 80 90 # nginx qemu nginx { mem 80 90 cpu 80 95 disk 80 90 } # mqtt qemu mqtt { mem 80 90 cpu 80 95 disk 80 90 } # DOMOTICZ qemu DZ20202 { mem 80 90 cpu 80 95 disk 80 90 } # asterisk qemu asterisk { mem 80 90 cpu 80 95 disk 80 90 } # zoneminder qemu zoneminder { mem 80 90 cpu 80 95 disk 80 90 } # storage storage save_usb { disk 80 90 node pve }
Dépannage : - pour vérifier les fichiers de configuration:
- pour vérifier une commande (fichier commands.cfg): copier la commande dans la console. il est possible d'ajouter plusieurs options comme sur l'image ci-dessous.
Des copies d'écran de Nagios
surveillance de mes caméras:
Nagios mobileNagios Mobile est une interface Web légère, conçue pour les appareils mobiles et à écran tactile. Si comme moi , vous avez une custom's page sur tablette pour votre système domotique, cette application écrite en PHP s'y s'intègre facilementPréparation de l'installation
Ouvrez le fichier " nagiosmobile_apache.conf " et avec nano vérifiez que l'emplacement du fichier "htpasswd.users" correspond à votre installation. Pour les installations sources de Nagios Core 4.4.6, le fichier par défaut est :/usr/local/nagios/etc/htpasswd.users
$STATUS_FILE = "/usr/local/nagios/var/status.dat"; $COMMAND_FILE = "/usr/local/nagios/var/rw/nagios.cmd"; $CGI_FILE = "/usr/local/nagios/etc/cgi.cfg"; $OBJECTS_FILE = "/usr/local/nagios/var/objects.cache"; $BASE_URL = '/nagiosmobile'; $TTL = 30; //Time to live for cached data parsed from status and objects file $USER = '';
Mise à jour de l'emplacement du répertoire , pour le fichier de configuration apache , dans INSTALL.PHP:
ctrl O, Enter, ctrl XInstallation
Si comme moi vous rencontrer des problèmes sur Ubuntu 20.x (j' ai fait une installation sur le PI4 qui effectue les sauvegardes de mes VM et assure l'envoi et la réception des SMS et sur ce PI j'ai installé Ubuntu ):
Ubuntu: le répertoire /etc/apache2/conf.d n'existe pas:le crée: cd /etc/apache2mkdir conf.d
De nouveau faire ./INSTALL.php (Sous debian c’ est INSTALL.PHP , sur Ubuntu INSTALL.php ???
sudo service apache2 reload ,n’a pas fonctionné , mais après un reboot plus de problème ????
Une fois le script d'installation terminé, vous pouvez accéder à l'interface Nagios Mobile par l'adresse suivante dans un navigateur : http://<IP NAGIOS>nagiosmobile
Accès distant- soit directement- soit affichage dans une page perso distanteil suffit de créer : - un sous domaine et un host virtuel de la même façon que pour domoticz, zoneminder,zigbee2mqtt,....voir ces pages NGINX, passerelle Zigbee2mqtt,.... Le fichier de configuration dans nginx :
upstream nagios { server 192.168.1.8; } server { server_name monitoring.DOMAINE.ovh; location / { proxy_pass http://nagios; proxy_set_header Host $host; proxy_connect_timeout 30; proxy_send_timeout 30; } #auth_basic "Mot de Passe Obligatoire"; #auth_basic_user_file /etc/nginx/.htpasswd; listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/DOMAINE.ovh/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/DOMAINE.ovh/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = monitoring.DOMAINE.ovh) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name monitoring.DOMAINE.ovh; return 404; # managed by Certbot }
DOMAINE est à remplacer par votre domaine
https://monitoring.DOMAINE.ovh/nagios: l'accès est sécurisé par le certificat du domaine
pour nagios mobile , https://monitoring.DOMAINE.ovh/nagiosmobile:
Ajouté dans un site perso (pour une description complète de cette page écrite en PHP et les fichiers de configuration Nginx et Apache2, visitez ce lien.) ,
https://monitor.DOMAINE.ovh/:
L' API Nagioshttps://labs.nagios.com/2014/06/19/exploring-the-new-json-cgis-in-nagios-core-4-0-7-part-1/Pour utiliser les CGI, un outil : jsonquery.html, pour y accéder avec un navigateur , taper http://<serveur nagios>/nagios/jsonquery.html
Choisir ensuite le type d'information , par exemple status:
Si vous choisissez "host" , vous devez choisir un host
Vous pouvez utiliser l'url dans des appels ajax , des programmes PHP ,.....résultat dans un navigateur
résultat dans un programme PHP:
Le programme , il affiche pour chaque host l'état des Pings :
function api_nagios($choix){$n=0; $URL="http://".NAUSER.":".NAPASS."@".IPNAGIOS."/cgi-bin/objectjson.cgi?query=".$choix; echo $URL.""; $json_string = file_get_curl($URL); $parsed_json = json_decode($json_string, true); $json=$parsed_json['data'][$choix]; $n=0; while ($json[$n]!=""){ $host=$json[$n]; $URL_cam=$URL="http://".NAUSER.":".NAPASS."@".IPNAGIOS."/cgi-bin/statusjson.cgi?query=host&hostname=".$json[$n]; $json_string = file_get_curl($URL_cam); $parsed_json = json_decode($json_string, true); $result=$parsed_json['data']['host']; echo $host." : ".$result['plugin_output'].""; $n=$n+1; } return ; }
Un seul choix existe (hostlist) pour l'instant mais le programme peut évoluer ...... quelques infos supplémentaires concernant ce programme:
crée le 28/06/2021 maj 11/10/2021 ajout correction ufw : Apache manquantmaj 8/02/2022 ajout d'un service systemd pour donner des droits à /usr/local/nagios/var/rw/nagios.cmdmaj 13/01/2023 ajout container à pve-monitor