Icinga2 + Centreon Plugins: so werden sie integriert

Icinga2 nutze ich gern als Monitoring Tool, auch wenn Prometheus in Docker Umgebungen ja das neue “cool” ist, aber manche Dinge habe ich gern klassisch 😉

Damit Icinga2 die volle Palette an Monitoringmöglichkeiten komplett agil verwenden kann, habe ich mich schon vor längerem mit den Centreon Plugins angefreundet, die sich problemlos als Command-Definitionen in Icinga2 integrieren lassen: Open Source Monitoring at it´s best – natürlich auch mit dem Icinga2 Director kompatibel.

Grundsätzlich bietet Centreon eine breite Perl Plugin Palette an, mit der man die unterschiedlichsten Hardwaregeräte genauso wie z.B. Schnittstellen zu Azure und AWS ansprechen kann. Die Daten werden sauber mit Perfdaten zurückgegeben, so dass Icinga2 das auch grafisch auswerten kann.

Installation

Auf meinem Debian 10 System habe ich mir ein eigenes Verzeichnis zurecht gelegt, in dem ich via git clone das oben verlinkte Github Repo von Centreon kopiere. Updates mit git pull kann man in der Regel gefahrlos machen.

Wie ergründet man nun den Aufbau der einzelnen Befehle? Centreon bietet auf Kommandozeilenebene ein schönes Schema an, mit dem man sofort herausfinden kann, was jeder Befehl kann und welche Monitoringmöglichkeiten es gibt. Um zu herauszufinden, was alles möglich ist, folgenden Befehl verwenden:


perl centreon_plugins.pl --list-plugin | grep aws

Die Suche mittels grep ist hier case sensitive. Wenn man nun ein Plugin gefunden hat, kann man sich die verschiedenen Module fürs Monitoring anzeigen lassen – z.B.:


perl centreon_plugins.pl --plugin=cloud::aws::billing::plugin --list-mode

Im vorliegenden Beispiel braucht man zur genauen Untersuchung eines Moduls des AWS Billing Plugins die Custommode Definition, die festlegt, wie genau die Daten abgegriffen werden:


perl centreon_plugins.pl --plugin=cloud::aws::billing::plugin --mode=estimated-charges --list-custommode

Um nun die komplette Hilfe zum Modul estimated charges aufrufen zu können, braucht es diesen Befehl:


perl centreon_plugins.pl --plugin=cloud::aws::billing::plugin --mode=estimated-charges --custommode=awscli --help

Da es immer wieder vorkommt, dass im Betriebssystem bestimmte Perl Module beim Aufruf des Help-Befehls fehlen, müssen diese nachinstalliert werden. In der Regel sind die fehlenden Perl Module über apt-cache search perl json z.B. leicht zu finden.

Icinga2 Konfiguration

Nun muss anhand der in der Hilfe angezeigten Parameter eine Icinga2 Command Definition gebildet und unter /etc/icinga2/conf.d/commands.conf eingetragen werden, die z.B. so aussieht:

object CheckCommand "centreon-snmp-load" {
   import "plugin-check-command"

   command = [ "/home/nagios/centreon-plugins/centreon_plugins.pl"]
   arguments = {
        "--plugin" = "os::linux::snmp::plugin"
        "--mode" = "load"
        "--hostname" = "$address$"
        "--snmp-version" = "2c"
        "--snmp-community" = "$snmp_community$"
        "--warning" = "$snmp_warn$"
        "--critical" = "$snmp_crit$"
   }
}

Eine komplette Liste meiner bisher zusammengestellten Centreon Befehle für Icinga2 habe ich auf Github zusammengetragen. Ergänzungen jederzeit gern.

Jeder hier definierte Befehl kann nach einem service icinga2 reload direkt auch in den Director importiert werden.


Du möchtest regelmäßig Neuigkeiten von meinem Blog? Trag dich für meinen Newsletter ein:

AddonsCentreonDirectorhow toIcinga2IntegrationMonitoringOpen SourcePlugin
Comments (2)
Add Comment
  • Florian

    Vielen Dank für die icinga Templates. In deinen check_commands fehlen am Ende des Aufrufes ein paar Anführungszeichen.

    command = [ CustomPluginDir + “/centreon-plugins/centreon_plugins.pl]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    CustomPluginDir + “/centreon-plugins/centreon_plugins.pl”