Also, in diesem Artikel werden wir eine SMS-Benachrichtigung in Nagios hinzufügen.
Nagios ist das am häufigsten verwendete Open-Source-Netzwerk- und Serverüberwachungstool. Daher verwenden wir Nagios, um verschiedene Arten von SNMP-fähigen Hosts wie Switch, Router und Server auf kritische Dienste zu überwachen. Darüber hinaus kann Nagios auch Serverleistungsdaten mithilfe des NRPE-Agenten abrufen. Darüber hinaus können wir mit Nagios ein visuelles Webportal und einen akustischen Alarm per E-Mail versenden. Also senden wir jetzt SMS-Benachrichtigungen von Nagios mit Kannel SMS Gateway.
Wir haben bereits einen Nagios-Server installiert und ausgeführt. Um den Nagios-Überwachungsserver zu installieren und zu konfigurieren, lesen Sie bitte unsere anderen Themen zur Installation und Konfiguration von Nagios.
Das wird also unsere Laborumgebung sein:
Nagios- und Kannel-Server-IP:192.168.10.38
Kannel SMS senden Benutzer:kannel
Kannel-SMS-Benutzerpasswort:kannelpasswd
Nagios konfigurieren:
In dieser Lab-Umgebung haben wir also Nagios aus dem Quell-Tarball im Standardverzeichnis /usr/local/nagios/ installiert
Zuerst müssen wir Befehle in /usr/local/nagios/etc/objects/commands.cfg definieren Objektkonfigurationsdatei. Um Befehle zu definieren, fügen Sie also die folgenden Zeilen in commands.cfg hinzu Datei
# 'notify-host-by-sms' command definition
define command{
command_name notify-host-by-sms
command_line /usr/bin/printf "%b" "Nagios: *$NOTIFICATIONTYPE$* \n$HOSTALIAS$ is $HOSTSTATE$ Info is: $HOSTOUTPUT$ Time: $SHORTDATETIME$" | /usr/bin/curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=$CONTACTPAGER$" -G --data-urlencode text@-
}
# 'notify-service-by-sms' command definition
define command{
command_name notify-service-by-sms
command_line /usr/bin/printf "%b" "Nagios: *$NOTIFICATIONTYPE$*\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nStat: $SERVICESTATE$\nInfo: $SERVICEOUTPUT$\nTime: $SHORTDATETIME$" | /usr/bin/curl "http://192.168.10.38:13013/cgi-bin/sendsms?username=kannel&password=kannelpasswd&to=$CONTACTPAGER$" -G --data-urlencode text@-
}
Dann fügen wir jetzt die Mobiltelefonnummer des Benachrichtigungszielbenutzers in die Konfigurationsdatei des Nagios-Kontaktobjekts ein:/usr/local/nagios/etc/objects/contacts.cfg
Beispiel Kontakt Definition:
define contact{
contact_name omar
use generic-contact
alias Omar Ali
service_notification_commands notify-service-by-sms
host_notification_commands notify-host-by-sms
email [email protected]
pager +88017XXXXXXXX
}
Außerdem können wir SMS-Benachrichtigungen sowie E-Mails an denselben Kontakt senden indem Sie die folgende Definition verwenden
define contact{
contact_name shamim
use generic-contact
alias Shamim Ahmed
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
email [email protected]
pager +88017YYYYYYYY
}
Erstellen Sie danach eine Kontaktgruppe für diejenigen, die eine Benachrichtigung für einen Dienst erhalten. Lassen Sie uns also eine Kontaktgruppe definieren unter Vertrag Definition für Netzwerkadministratoren, die benachrichtigt werden, wenn ein Netzwerkdienst ausfällt
define contactgroup {
contactgroup_name netadmins
alias Network Administrators
members omar,shamim
}
Wir haben also einen MikroTik-Router mit 3 Upstream-Ports:sfp1, sfp2 und sfp3, die wir dem Überwachungssystem hinzufügen werden.
Erstellen Sie dann eine Objektkonfigurationsdatei /usr/local/nagios/etc/objects/nethosts.cfg zur Überwachung von Netzwerkgeräten mit den folgenden Inhalten
#### Host Defination ####
define host {
use generic-switch
host_name router-1
alias Router-1
address 192.168.10.1
hostgroups net-hosts
notifications_enabled 1
contact_groups netadmins
}
#### Host Group Defination ####
define hostgroup {
hostgroup_name net-hosts
alias Network Hosts
}
#### Service Defination for Network hosts ####
define service {
use generic-service
host_name router-1
service_description SFP-1
check_command check_snmp!-C snmpCommunity -o ifOperStatus.1 -r 1 -m RFC1213-MIB
check_interval 3
retry_interval 1
notifications_enabled 1
contact_groups netadmins
}
define service {
use generic-service
host_name router-1
service_description SFP-2
check_command check_snmp!-C snmpCommunity -o ifOperStatus.2 -r 1 -m RFC1213-MIB
check_interval 3
retry_interval 1
notifications_enabled 1
contact_groups netadmins
}
define service {
use generic-service
host_name router-1
service_description SFP-3
check_command check_snmp!-C snmpCommunity -o ifOperStatus.3 -r 1 -m RFC1213-MIB
check_interval 3
retry_interval 1
notifications_enabled 1
contact_groups netadmins
}
Oben check_snmp Befehle benötigen MIB:RFC1213-MIB, die in Ihrem System vorinstalliert sein sollte. Wenn es also nicht in Ihrem System vorhanden ist, können Sie es herunterladen und installieren, indem Sie die folgenden Pakete verwenden
Für Debian/Ubuntu: Installieren Sie snmp-mibs-downloader von non-free repo, und führen Sie dann download-mibs aus Befehl von der Shell
# apt-get install -y snmp-mibs-downloader
# download-mibs
Wenn Sie also CentOS 7/8 verwenden
# yum install net-snmp-libs
Schließen Sie auch die Objektkonfigurationsdatei nethosts.cfg ein in /usr/local/nagios/etc/nagios.cfg
Führen Sie also /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg aus um Ihre Konfigurationen zu überprüfen
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Wenn also kein Fehler auftritt, starten Sie den Nagios-Dienst neu
# systemctl restart nagios.service
Nagios-Benachrichtigungen:
Überprüfen Sie dann das Nagios-Portal auf Router-1-Portstatus
Wir haben also festgestellt, dass alle 3 SFP-Ports in Betrieb sind Zustand. Jetzt werden wir den SFP-1-Port manuell trennen, was eine Down-Benachrichtigung auslösen und eine SMS an die Network Admin Group senden sollte
Nagios-Benachrichtigungsprotokoll:
Kannel-Protokoll:
Kabel wieder anschließen:
Überprüfen Sie auch das Benachrichtigungsprotokoll:
Kannel-Protokoll:
Zum Schluss noch das Handy des Empfängers: