Umstieg von NRPE auf den Icinga 2 Agenten

icinga_logo_200x69
Heute will ich euch ein Migrationsszenario bei der Überwachung von Windows für Icinga 2 beschreiben. Bei vielen kommt zum Monitoring von Windows der NSClient++ zum Einsatz, der integrierte NRPE-Server wird dann mit dem Plugin check_nrpe abgefragt.
Ist das Plugin und der NSClient++ nicht selbst übersetzt und der DH-Schlüssel selbst gewählt, benutzt man den selben wie tausend andere. NRPE ist damit als unsicher zu betrachten. Der Icinga 2 Agent authentifiziert Verbindungen an Hand von Zertifikaten der eigenen PKI. Den Agenten gibt es in der aktuellen Version im Bundle mit dem NSClient, damit sind die Plugins des NSClient++ auch weiterhin vom Agenten aus nutzbar.
Nun aber wie man eine Icinga 2-Konfiguration gestaltet, um zuerst NRPE-Checks benutzen zu können und dann sukzessive auf den Agenten zu migrieren. Als identifizierendes Merkmal verwenden wir das Host Custom Attribut noagent. True bedeutet dieser Host ist per check_nrpe zu prüfen, bei false soll der Agent verwendet werden.

object Host "andromeda" {
  import "generic-host"
  address = "172.16.1.22"
  vars.os = "Windows"
  vars.noagent = true
  vars.nscp_memory_committed = true
  vars.nscp_memory_free = true
  vars.nscp_memory_warning = "200M"
  vars.nscp_memory_critical = "100M"
}

Am Beispiel eines Services zur Überwachung der Memoryauslastung, folgen hier die beiden Definitionen.

apply Service "Memory usage" {
  import "generic-service"
  check_command = "nrpe-legacy-memory"
  assign where host.vars.os == "Windows" && host.vars.noagent
}
apply Service "Memory usage" {
  import "generic-service"
  check_command = "my-nscp-local-memory"
  command_endpoint = host.name
  assign where host.vars.os == "Windows"
  ignore where host.vars.noagent
}

Die Check Commands, die auf github zum Download bereit stehen, bieten für NRPE und NSCP die gleiche Parametrisierung. Ein Anpassen bzw. Abändern der Custom Attribute nscp_memory_* ist damit beim Umstieg nicht erforderlich und auch im Mischbetrieb kann auf doppelte Definitionen verzichtet werden. Es ist somit nur noagent zu entfernen und das für den Agenten erforderliche Zonen- und Endpoint-Objekt anzulegen. Zu beachten ist noch, dass der Endpoint und der Host den selben Namen tragen müssen (wg. command_endpoint = host.name).

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

Widerruf: Zeit ist seit 1905 immer noch relativ!

timeisIm Jahre 1905 veröffentlichte Albert Einstein die SRT. Die Theorie befasst sich mit der Beschreibung relativ zueinander bewegter Bezugssysteme und mit der Relativität von Zeitdauern und Längen. Mit der Gravitation kam 1915 in der Allgemeinen Relativitätstheorie ein “weiterer” die Zeit beeinflussender Faktor hinzu.
Auch das subjektive Zeitempfinden ist sicherlich jedem bekannt. Mal kriecht die Zeit vor sich hin und mal rast sie an einem vorbei, so das sich der Doppler-Effekt bemerkbar macht. Ja, auch das ist physikalisch natürlich nicht korrekt…
Auch wenn ich meinem Kollegen hier mit der Überschrift widerspreche, im Kern folgt nun das selbe in Icinga grün, wie Thilo letzte Woche, das Problem der nicht synchron laufenden Zeit für Puppet-Umgebungen beschrieben hat.
Kommt beim Monitoring mit Icinga 2 ein Satelliten-System, Icinga Agenten oder auch die HA-Funktionalität zur Lastverteilung zum Einsatz, ist das selbe Bezugssystem oder gleich laufende Zeit erforderlich. Die Kommunikation zwischen unterschiedlichen Icinga Instanzen nimmt keine Korrektur der Zeitstempel von Ereignissen vor. Ein Beispiel: Ein Agent läuft in Bezug auf seinen Icinga Server 10min in der Zukunft, schon klappt z.B. kein “force reschedule”, da der Event für den Agenten in der Vergangenheit liegt. Ein Zeitserver muss her. Dieser gehört natürlich mittels check_ntp_peer überprüft. Zusätzlich muss auf jedem Host mit einer laufenden Icinga Instanz, mit check_ntp_time auf Unix- und check_time.vbs auf Windows-Systemen, die Zeitdifferenz der eigenen Zeit gegen die des eingetragenen Zeitservers überwacht werden.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.