f.zz.de
posts /

Interface monitoring

Posted Wed 24 Feb 2016 07:45:33 PM CET Florian Lohoff in

Der erste Schritt zur Alarm suppression - Wir monitoren auf von Kunden gemanageten Devices nicht den Link Status. 20 Minuten c++ basteln und einem boost::program_options bug später:

./checkif 
Need address, community and ifname
Allowed options:
  -h [ --help ]         produce help message
  --address arg         host address
  --community arg       host snmp v2 community
  --ifname arg          interface name to monitor
  --cachedir arg        cache directory for state files
  --nolinkstatus        ifOperStatus down is not critical

Das Attribute peer-device auf den interfaces in der FiDB übersetzen in eine icinga2 variable nolinkstatus:

# If we have an unmanaged peer device - dont monitor ifOperStatus 
if ($neighbour->attrmatch('peer-device', 'unmanaged', 0)) {
    $service->variableadd({ name => "nolinkstatus", value => 1 });
}

Und entsprechend eine conditional variable im icinga2 für den check:

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

        command = [
                "/etc/icinga2/customchecks/checkif/checkif"
        ]

        arguments = {
                "--address" = "$address$"
                "--community" = "$snmprocommunity$"
                "--ifname" = "$ifname$"
                "--cachedir" = "/var/cache/nagios3/checkif/"
                "--nolinkstatus" = {
                        set_if = "$nolinkstatus$"
                }
        }
}

Und schon werden die entsprechenden ports nicht mehr CRITICAL wenn der Kunde meint zu booten oder den port runterzufahren. Es muss nur einmal richtig Dokumentiert werden.