Ma nouvelle installation en conteneur
surveillance du réseau par Nagios Alertes par SMS et Email sms par internet ou par modem GSM
Suite de la page consacrée à Nagios et pve-monitor et de la page traitant des notifications et commandes par SMS: - configuration des différentes notifications pour Nagios,
Notifications par Emailssmtp est obsolete et le package a été remplacé par msmtp aussi bien pour Debian Buster que pour Ubuntu. msmtp est un client SMTP très simple et plus facile à configurer que ssmtp pour l'envoi de courriels ; il permet d'utiliser le serveur son FAI ce qui évite l'installation d'un serveur de courrier., - installation de msmtp après avoir mis le PI ou le PC à jour, Sur Unbuntu 20.x si vous rencontrez cette erreur "bcm2711-rpi-4-b.dtb" non trouvé , voici la solution:
Sous Ubuntu : erreur concernant bcm2711-rpi-4-b.dt
- télécharger ce fichier et copier le à son emplacement
Pour configurer l'envoi de courriels par le système, ouvrir ou créer (si il n'existe pas) le fichier /etc/msmtprc et renseigner les paramètres de connexion de votre compte de courrier :
Configuration de msmtprchttps://doc.ubuntu-fr.org/msmtpAvec nano Ouvrir le fichier msmtprc
# Valeurs par defaut pour tous les comptes. defaults auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile /var/log/msmtp.log # Exemple pour un compte Gmail account gmail auth plain host smtp.gmail.com port 587 from xxxxxxx.michel@gmail.com user xxxxxxx.michel@gmail.com password zzzzzzzzzzzzzzz # Exemple pour un compte GMX #account gmx #host mail.gmx.com #port 587 #from username@gmx.com #user username@gmx.com #password XXXXXXXXXX #tls_nocertcheck # Exemple pour un compte OVH #account ovh #host XXXXXX.ovh.net #port 465 #from username@example.com #user username@example.com #password XXXXXXXXXX # Definir le compte par defaut account default : gmail
Avec Google et l'autorisation en 2 étapes , voir à la fin de ce paragrapheImportant: pour OVH dans les paramètres , il faut désactiver starttls (tls_starttls off)
Il faut vérifier que le système utilise bien msmtp pour l'envoi de mail :
cette commande doit retourner : lrwxrwxrwx 1 root root 12 nov. 28 2016 /usr/sbin/sendmail -> ../bin/msmtp
Avant de configurer Nagios , on va vérifier le bon fonctionnement de msmtp:
Si vous rencontrer une erreur "commande mail non trouvée , il suffit comme l'indique l'avertissement sur Ubuntu d'installer "mailutils"; sur PI OS , uniquement "commande introuvable" , mais il faut aussi installer "mailutils"
Accéder aux logs:
Si vous rencontrez cette erreur :
Lors de l' installation de msmtp, un utilisateur msmtp et un groupe msmtp sont crées. Modifications à apporter au fichier journal et droits de lecture écriture pour le groupe et l'utilisateur:
l'extension .log n'est pas nécessaire mais si vous le souhaitez , il suffit de faire la même opération avec msmtp.log au lieu de msmtp.
Autorisation en 2 étapes de GoogleDès que l'on active cette option avec la config décrite ci-dessus , on obtient cette erreur :
account orange host smtp.orange.fr protocol smtp auth on tls on tls_starttls off tls_certcheck on tls_trust_file /etc/ssl/certs/ca-certificates.crt from xxxxx.xxxxxx@orange.fr maildomain orange.fr port 465 user xxxx.xxxxxxx@orange.fr password xxxxxxxx ne pas oublier # Definir le compte par defaut account default : orange
Pour tester l'envoi du message :
Résultat:
Seul utilisateur je n'ai pas crée de fichier .msmtprc dans mon répertoire perso c'est pourquoi , comme on peut le voir sur la copie d'écran ci-dessus, /etc/msmtprc est utilisé par défaut,le compte rendu complet de l'envoi:
maildomain = orange.fr host = smtp.orange.fr port = 465 source ip = (non défini) proxy host = (non défini) proxy port = 0 timeout = désactivé protocol = smtp domain = localhost auth = automatique user = xxxxxxxxxx@orange.fr password = * passwordeval = (non défini) ntlmdomain = (non défini) tls = activé tls_starttls = désactivé tls_trust_file = /etc/ssl/certs/ca-certificates.crt tls_crl_file = (non défini) tls_fingerprint = (non défini) tls_key_file = (non défini) tls_cert_file = (non défini) tls_certcheck = activé tls_min_dh_prime_bits = (non défini) tls_priorities = (non défini) auto_from = désactivé maildomain = orange.fr from = xxxxxxxxxx@orange.fr add_missing_from_header = activé add_missing_date_header = activé remove_bcc_headers = activé dsn_notify = (non défini) dsn_return = (non défini) logfile = /var/log/msmtp.log logfile_time_format = (non défini) syslog = (non défini) aliases = (non défini) lecture des destinataires depuis la ligne de commande et le courriel TLS session parameters: (TLS1.2)-(RSA)-(AES-256-CBC)-(SHA1) Information du certificat TLS : Propriétaire: Nom Usuel: smtp.orange.fr Organisation: Orange Localité: Paris État ou Province: Ile-de-France Pays: FR Émetteur: Nom Usuel: DigiCert TLS RSA SHA256 2020 CA1 Organisation: DigiCert Inc Pays: US Validité: Date d'activation: mar. 06 avril 2021 01:00:00 BST Date d'expiration: mar. 15 mars 2022 23:59:59 GMT Empreintes: SHA256: D3:8E:0D:39:CB:E8:FB:50:F4:5C:A9:82:2F:5E:B8:56:D7:F4:32:42:EA:AA:A0:FC:36:56:15:EA:80:56:87:63 SHA1 (deprecated): 6C:C6:0D:AC:CB:6C:69:E1:D2:14:03:C8:FF:35:BC:1B:DC:D8:17:F2 <-- 220 opmta1mto01nd1 smtp.orange.fr ESMTP server ready --> EHLO localhost <-- 250-opmta1mto01nd1 hello [82.64.33.148], pleased to meet you <-- 250-HELP <-- 250-AUTH LOGIN PLAIN <-- 250-SIZE 46000000 <-- 250-ENHANCEDSTATUSCODES <-- 250-8BITMIME <-- 250 OK --> AUTH PLAIN AG1pY2hlbC5ncmF2aWVyQG9yYW5nZS5mcgBGNEg5QVAydg== <-- 235 2.7.0 ... authentication succeeded --> MAIL FROM:<xxxxxxx@orange.fr> <-- 250 2.1.0 <xxxxxxxx@orange.fr> sender ok --> RCPT TO:<xxxxxxx@gmail.com> <-- 250 2.1.5 <xxxxxxx@gmail.com> recipient ok --> DATA <-- 354 OK --> From: xxxxxxxxxxx@orange.fr --> Date: Mon, 24 Jan 2022 13:07:51 +0000 --> Subject: Un mail de test --> --> Envoyé via msmtp --> . <-- 250 2.0.0 Bz4Zn25dVBzeEBz4anXvgQ mail accepted for delivery --> QUIT <-- 221 2.0.0 opmta1mto01nd1 smtp.orange.fr closing connection michel@raspberrypi:/etc $
Afin d'être notifié par mail d'un problème détecté par Nagios, il faut modifier le fichier contacts.cfg, et remplacer nagios@localhost par le mail de la personne autoriséeles options principales de notification :
d: Notifier sur les états d'hôte DOWNu: Notifier sur les états d'accueil UNREACHABLEr: Notifier sur la RÉCUPÉRATION de l'hôte (états UP)
define contact { contact_name nagiosadmin ; Short name of user use generic-contact ; Inherit default values alias Nagios Admin ; Full name of user #email nagios@localhost ; <<** CHANGE THIS TO YOUR EMAIL ADDRESS ** email michel.xxxxxx@orange.fr host_notifications_enabled 1 host_notification_options d,u,r, service_notification_commands notify-service-by-email,notify-service-by-sms host_notification_commands notify-host-by-email,notify-host-by-sms }
La notification par SMS nous sera utile aussi on indique également ce mode Pour les notifications par mail les commandes existent déjà dans le fichier /usr/local/nagios/etc/objects/commands.cfg , il faut simplement les modifier pour utiliser msmtp
la réception d'un Email : pour simuler un problème j'ai stoppé une VM.
Notification par SMS Si vous êtes client chez Free,vous pouvez effectuer gratuitement l'envoi de SMS depuis une URL Web.Je vais donc développer 2 solutions : - l'envoi par internet (avec Free ou autres ..) - l'envoi par SMS avec un modem GSM Pour être notifié par SMS, il faut ajouter deux entrées dans le fichier /usr/local/nagios/etc/objects/commands.cfg. - pour l'envoi de SMS lorsque l'on détecte un problème de supervision sur un service.- pour l'envoi de SMS lorsque l'on détecte un problème de supervision sur le serveur
################################### ## envoi sms ################################## # Notification probleme avec Service define command{ command_name notify-service-by-sms command_line /home/michel/envoi_sms.sh "Service Alert: $HOSTALIAS$/$SERVICEDESC$ nService State: $SERVICESTATE$ nDate/Time: $LONGDATETIME$" } # Notification probleme avec Host define command{ command_name notify-host-by-sms command_line /home/michel/envoi_sms.sh "Host Alert: $HOSTNAME$ State: $HOSTSTATE$ nDate/Time: $LONGDATETIME$" }
création du script envoi_sms.shCe script est utilisé dans la page concernant le modem- par internet avec Free:
Essai du script avec la console,(il faut peut-être modifier les autorisations):
- Par le modem gsm ...voir la page concernant l’installation d’un serveur GSM sur Raspberry.Création de l'utilisateur nagiosadmin et ajout au groupe dialoutl'utilisateur nagios existe déja mais il faut lui donner également des droits
sudo useradd nagiosadmin sudo usermod -aG dialout nagiosadmin sudo usermod -aG dialout nagios
Autorisation pour le port série:
Le script Python utilisé avec la carte sim800C , ce script est déjà présent dans le répertoire /home/USER/scriptsla version de python est à adapter
#!/usr/bin/env python3.7 # -*- coding: utf-8 -*- import sys from sim800l import SIM800L numero = "+336xxxxxxxx" message= str(sys.argv[1]) sim800l=SIM800L('/dev/ttyS0') sim800l.send_sms(numero,message) print ("message : "+message)
Le script python avec le modem 4G/LTE Ebyte , voir cette page: pour la configuration de ce matériel
scipt avec modem Ebyte 4G/LTE
#!/usr/bin/env python3.8 # -*- coding: utf-8 -*- import time,serial,sys espace="-" message="" nb_arg=len(sys.argv) n=1 while n<nb_arg: message=message+sys.argv[n]+espace #print(message) n=n+1 message = ('AT+SMSSEND=06xxxxxxxx,'+message+'\r\n').encode('utf-8') phone=serial.Serial(port="/dev/ttyAMA1",baudrate=115200,timeout=2) phone.write(b'+++') time.sleep(2) phone.write(b'AT+VER\r\n') time.sleep(1) phone.write(message)
On ajoute dans envoi_sms.sh l’exécution du script python en supplément de l’envoi SMS par internet (si vous êtes chez Free) ou on remplace
#!/usr/bin/bash ### envoi SMS CURL=/usr/bin/curl URL=https://smsapi.free-mobile.fr/sendmsg PASS=xxxxxxxxxxxx USER=xxxxxxxxx # notification not="$*" # envoi SMS Free $CURL -k -X POST "https://smsapi.free-mobile.fr/sendmsg?user=$USER&pass=$PASS&msg=$Not" ### envoi par modem GSM python3.8 /home/michel/envoi_sms.py $not 2>>/home/michel/sms_error.log
On a déjà ajouter le mode de notification dans les contacts....
......La configuration est terminée, pour vérifier qu'il n'y a pas d’erreur, exécutez cette commande :
S'il n'y a pas d'erreurs, redémarrez le service nagios :
Il est souvent préférable de faire un STOP suivi d' un START plutôt qu'un RESTART
Si vous rencontrez des problèmes: - pour debugger en python :
import time,serial,sys,logging #if __name__ == "__main__": #logging.basicConfig(level=logging.DEBUG, filename="/home/michel/logfile", filemode="a+", #format="%(asctime)-15s %(levelname)-8s %(message)s") #logging.info(sys.argv[0])
Erreur fréquente lors de l'essai d'envoi de smsError: Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update!
Pour la résolution de cette erreur voir cette page.
crée le 01/07/2021 maj 14/11/2021 ajout résolution erreur /usr/local/nagios/var/rw maj 24/01/2022 ajout info pour autorisation 2 étapes Google