Eaton USV ins Icinga2 Monitoring aufnehmen mit SNMP Checks

Fangen wir erstmal damit an, was wir alles benötigen:

  • Server mit Icinga2 fürs Monitoring
  • USV von Eaton mit SNMP Funktion
  • Ein funktionierender SNMPwalk zwischen der USV und dem Server um zu prüfen ob alles funktioniert.

Informationen über die USV sammeln

Finden Sie heraus welche IP ihre USV besitzt. Falls Sie es nicht wissen sollten, finden Sie auf dem Display der USV in den Einstellungen alle nötigen Informationen.

Nun starten Sie Ihren Browser und geben Sie die IP-Adresse der USV ein. Es öffnet sich ein Anmeldebildschirm, in dem Sie sich anmelden können. Gehen Sie dann in der Navigation zu Einstellungen und SNMP, wo Sie das Häkchen bei SNMP V2C aktivieren und einen Community-String erstellen können. Der Community-String fungiert als eine Art „Passwort“, mit dem spezifische Informationen über das Gerät abgerufen werden können. Daher ist es ratsam, ein sicheres Passwort zu verwenden. Notieren Sie sich Ihre IP-Adresse und Ihren Community-String, da diese später wichtig sind.

Plugins und Kompatibilität Testen

In unserem Fall haben wir uns für Plugins von Centreon entschieden. Diese müssen wir auch installieren.

Falls es zu Problemen kommt, schauen Sie sich die Doku von Centreon an https://documentation.centreon.com/docs/centreon-plugins/en/latest/user/guide.html

Starten Sie Ihren Server, wechseln Sie zu ihrem Icinga2 User und führen folgende Befehle aus :

Temp Verzeichnis anlegen

mkdir -p /var/lib/centreon/centplugins
chmod -R 777 /var/lib/centreon/centplugins

Folgende Pakete installieren

 apt-get install libsnmp-session-perl
 apt-get install libsnmp-perl

Verzeichnisse anlegen (Diesen Ordner sollten Sie in Ihrem Icinga-Plugin Ordner anlegen)

 cd /usr/lib/nagios/plugins/
git clone https://github.com/centreon/centreon-plugins.git

Nachdem das Plugin installiert ist, suchen Sie im Ordner/usr/lib/nagios/plugins/centreon-plugins/src mit

perl centreon_plugins.pl --list-plugin  | grep -i eaton  | grep 'PLUGIN'

Sie sollten jetzt ungefähr das hier sehen. Abhängig von der Konfiguration kann es variieren

Was wir jetzt brauchen sind die Kennzeichnungen wie

hardware::ats::eaton::snmp::plugin

Mit dem Befehl „Help“‚ können Sie verschiedene wichtige Funktionen einsehen

perl centreon_plugins.pl --plugin=hardware::ats::eaton::snmp::plugin  --help

-----------------------------------------------------------------------------------------

Global Options:
--mode Choose a mode.

--dyn-mode
Specify a mode with the path (separated by '::').

--list-mode
List available modes.

--mode-version
Check minimal version of mode. If not, unknown error.

--version
Display plugin version.

--pass-manager
Use a password manager.

Die Interessante dabei ist: –mode. Zur Auswahl haben wir „input-lines, output-line, system“ Je nachdem wie aktuell dieser Beitrag ist, könnten andere Modis angezeigt werden. Um alle aktuellen Modis sehen zu können verwenden Sie –list-mode

Jetzt können Sie einen Befehl testen und schauen, ob alles richtig funktioniert

perl centreon_plugins.pl --plugin=hardware::ats::eaton::snmp::plugin --list-mode

-------------------------------------------------------------------------------------------

Modes Meta:
multi

Modes Available:
input-lines
output-line
system

Nachdem wir den Befehl eingegeben haben, bekommen wir ein paar Modi angezeigt, mit denen wir testen können, ob wir über diese Modi, Informationen über unsere USV erhalten.

Testen wir zuerst einmal den Modus „output-line“

Vorlage : 

perl centreon_plugins.pl --plugin=PLUGINSYNTAX --mode=MODUS --hostname=IP-ADRESSE --snmp-version=2c --snmp-community=PASSWORT

IP-ADRESSE = IP Adresse der USV

PLUGINSYNTAX = z.b. "hardware::ats::eaton::snmp::plugin"

MODUS = z.b. outputline

PASSWORT = der SNMP Community String der USV

----------------------------------------------------------------------------------------------

Wenn Sie alles richtig eingegeben haben und der Modus funktioniert, dann sollte etwas ähnliches kommen wie:

OK: Output line Voltage : 233.80 V, current : 0.4 A | 'line.output.voltage.volt'=233.8V;;;; 'line.current.ampere'=0.4A;;;0;

Nachdem wir jetzt wissen, dass unsere USV funktioniert, SNMP läuft, das Plugin kommuniziert und alle Informationen richtig ausgibt, wird es Zeit, mit diesen Befehlen und Variablen in Icinga2 alles einzupflegen und aus den einfachen Plugin-Outputs richtige Icinga2-Checks zu konfigurieren.

Zuerst gehen wir zu (sofern die commands im standardordner liegen)
/etc/icinga2/conf.d/commands/
und erstellen eine neue Datei ( z.b. "eatonUSV.conf" )

Darin fügen wir jetzt diesen langen Code ein. Er enthält wichtige Variablen für Icinga, damit die Checks funktionieren. Aber er erfüllt auch die nötigen Grundbausteine für einen einfachen Check

-------------------------------------------------------------------------------------------

object CheckCommand "check_centreon_SNMP" {
import "plugin-check-command"

command = [ "/usr/bin/perl", PluginDir + "/centreon-plugins/src/centreon_plugins.pl" ]

arguments = {
"--hostname" = {
//value = "$address$"
value = "$hostaddress$"
required = true
}
"--mode" = {
value = "$mode$"
required = true
}
"--plugin" = {
value = "$check_plugin$"
required = true
}
"--snmp-timeout" = {
value = "$snmp_timeout$"
set_if = bool("$snmp_timeout$")
}
"--snmp-version" = {
value = "$snmp_version$"
required = true
}
"--snmp-community" = {
value = "$snmp_community$"
required = true
}
"--warning-charge-remaining" = {
value = "$check_warning_charge$"
set_if = bool("$check_warning_charge$")
}
"--critical-charge-remaining" = {
value = "$check_critical_charge$"
set_if = bool("$check_critical_charge$")
}
}
}
Danach gehen wir in den Services Ordner ( standardmäßig bei: )
/etc/icinga2/conf.d/services/
und erstellen auch dort eine .conf datei (z.b. "ServicesEatonUSV.conf" )

Darin fügen wir einen Standard Block ein :
-----------------------------------------------------------------------------------------------

template Service "check_centreon_SNMP_template" {
import "generic-service"


/// DEFAULT ARGUMENTS ///
vars += {
prio = "med"

snmp_port = "161"
snmp_version = "2c"
snmp_community = "public"
}


// Für die Angabe von Communitystrings im Host
if (host.vars.snmp_community) { vars.snmp_community = host.vars.snmp_community }

vars.hostaddress = host.address

check_command = "check_centreon_SNMP"
}

------------------------------------------------------------------------------------------

Und jetzt kommt der etwas aufwändigere Teil. Denn jetzt muss man jeden einzelnen Check in einen vollwertigen Icinga2-Check umwandeln

---------------------------------------------------------------------------------------------

apply Service {
import "check_centreon_SNMP_template"

name = "check_NAME_DES_EINZELNEN_CHECKS" // nur Kleinschreibung und keine Leerzeichen!
display_name = "NAME vom Check" // hier kann der Name beliebig gestaltet werden

// VARIABLES - Hier kann man den Check z.B. für die eigene Sichtbarkeit benennen
vars.check_plugin = "PLUGINSYNTAX"
vars.mode = "MODUS"
check_timeout = "180"
vars.snmp_timeout = "180"

// import check variables from host
vars += host.vars.check_NAME_DER_CHECK_GRUPPE
vars += host.vars.check_NAME_DES_EINZELNEN_CHECKS

// ASSIGN RULES
ignore where this.vars.check_active == false

assign where host.vars.check_NAME_DER_CHECK_GRUPPE
ignore where host.vars.check_NAME_DER_CHECK_GRUPPE.enable_check == false
ignore where host.vars.check_NAME_DER_CHECK_GRUPPE_+MODUS.enable_check == false
}

--------------------------------------------------------------------------------------------

Nachdem jeder Check eingetragen ist, kann man einen Host mit den gerade erstellten Checks anlegen.

Standardmäßig unter /etc/icinga2/conf.d/hosts/

object Host "NAME_VOM_HOST" {

import "generic-host"
address = "IP_ADRESSE"

display_name = "NAME VOM HOST"

vars.check_NAME_DER_CHECK_GRUPPE.enable_check = true
vars.check_NAME_DER_CHECK_GRUPPE.snmp_community = "SNMP STRING"

}


Wenn alles funktioniert hat, sollten Sie jetzt einen brandneuen Host mit Ihren eigenen SNMP-Checks haben.

Wenn Sie Unterstützung bei Ihrem Icinga2 Monitoring benötigen, dann kommen Sie gerne auf uns zu.

Icinga2 ist Ihnen zu komplex und Sie haben keine Zeit die Konfiguration selbst zu pflegen? Dann schauen Sie bei unserem SAAS Monitoring Produkt ADMIN-BOX auf unserer Webseite www.admin-box.de vorbei.