Automatische Agenten-Updates


Ab Version 1.2.8 kann Check_MK seine Agenten auf Linux und Windows automatisch aktualisieren. Damit können Sie nicht nur im Falle von neuen Check_MK-Versionen die Agenten leicht aktualisieren, auch eine geänderte Konfiguration der Agenten kann so ausgebracht werden. Dabei können Sie den Vorteil der Agentenbäckerei nutzen, dass Hosts individuelle Konfigurationen bekommen können.

1. Automatische Updates einrichten

Gehen Sie zum Einrichten der Updates nach folgenden Schritten vor: Wählen Sie zunächst das WATO-Modul Monitoring Agents und klicken Sie dort auf den Knopf Automatic Update.

Unter Prerequisites sehen Sie eine Liste von Voraussetzungen, die erfüllt sein müssen, damit die automatischen Updates funktionieren. Diese können Sie einfach der Reihe nach abhaken. Bitte vergessen Sie nicht, dass es für alle Seiten auch eine Onlinehilfe gibt, die alle Punkte genauer erklärt. Ein Klick auf bringt Sie direkt zu der Stelle in WATO, wo die entsprechende Konfiguration vorgenommen werden muss. Im Einzelnen müssen folgende Aspekte konfiguriert werden:

1.1. Signaturschlüssel erstellen

Das System ist so aufgebaut, dass die Agenten per HTTP oder HTTPS von ihrem zentralen Monitoringserver Updates herunterladen. Da Agenten ausführbaren Code enthalten, ist es besonders wichtig, dass Sie sicherstellen, dass die Agenten nicht von einem Angreifer verfälscht werden können. Zu diesem Zweck werden Signaturschlüssel verwendet. Diese bestehen aus einem Paar von öffentlichem und privatem Schlüssel (Public-Key-Verfahren).

Sie können beliebig viele Signaturschlüssel anlegen. Diese werden jeweils mit einer Passphrase geschützt, welche Sie später bei jedem Signieren eingeben müssen. Damit wird verhindert, dass z. B. ein Angreifer, der Zugriff auf eine Datensicherung des Monitoringservers erlangt, Agenten signieren könnte.

Erzeugen Sie hier einen Signaturschlüssel und merken Sie sich die Passphrase. Diese kann später weder geändert noch wiederhergestellt werden. Geht der Schlüssel verloren, so kann dies bedeuten, dass alle Agenten einmal manuell aktualisiert werden müssen!

1.2. Konfiguration des Update-Plugins

Das eigentliche Update wird durch ein Agenten-Plugin mit dem Namen cmk-update-agent ausgeführt. Dieses wird vom Agenten in einem einstellbaren Zyklus aufgerufen (z. B. ein mal pro Stunde). Es fragt dann den Deployment-Server (Ihr zentrales Monitoringsystem) jeweils an, ob ein neues Paket für diesen Host vorliegt und führt dann das Update durch.

Das Plugin muss natürlich im Agenten vorhanden und korrekt konfiguriert sein. Dazu erweitern Sie die Agenten über den Regelsatz Install agent updater (Linux, Windows) um dieses Plugin.

Erstellen Sie hier eine Regel, wählen Sie explizit alle Checkboxen an und füllen Sie die Werte aus (hierzu gibt es zahlreiche Hinweise in der Onlinehilfe).

1.3. Agenten backen

Backen Sie die Agenten neu, damit die neue Regel angewendet wird und die Agenten-Pakete jetzt auch wirklich das Plugin enthalten.

1.4. Agenten signieren

Als Nächstes müssen Sie die Agenten mit dem in Schritt 1 erstellten Schlüssel signieren. Dazu benötigen Sie jetzt zum ersten Mal Ihre Passphrase. Die signierten Agenten werden denn mit einem -Symbol gekennzeichnet. Wenn Sie mehrere Schlüssel angelegt haben, geschieht die Signatur mit jedem Schlüssel separat. Einem Agenten genügt es, wenn das neue Paket mit einem der ihm bekannten Schlüssel signiert ist.

Diesen Schritt müssen Sie später jedes Mal wiederholen, wenn Sie die Agenten neu gebacken haben.

1.5. Agenten registrieren

Der nächste Schritt muss nun auf den einzelnen überwachten Hosts selbst durchgeführt werden. Dazu müssen Sie dort zunächst ein letztes Mal einen Agenten von Hand installieren. Laden Sie dazu unter Baked Agents das für das Zielsystem passende Paket herunter. Achten Sie darauf, dass Sie dasjenige nehmen, das auch den Agent-Updater enthält.

Kopieren Sie das Paket auf das Zielsystem und installieren Sie es wie gewohnt mit rpm, deb oder msiexec (bzw. per Doppelklick). Wenn das erfolgreich war, ist nun auch das Programm cmk-update-agent vorhanden. Unter Linux finden Sie dieses im Suchpfad (/usr/bin), unter Windows im Unterverzeichnis plugins\ Ihres Check_MK-Agentenverzeichnisses.

Den Agent-Updater rufen Sie zunächst mit dem Argument register auf. Unter Windows muss dies in einem Prompt mit Administratorrechten geschehen. Geben Sie dann der Reihe nach die erforderlichen Angaben ein (wenn Sie einen gebackenen Agenten installiert haben, sind nicht alle Einstellungen nötig):

root@linux# cmk-update-agent register
+-------------------------------------------------------------------+
|                                                                   |
|  Check_MK Agent Updater - Registration                            |
|                                                                   |
|  Activation of automatic agent updates. Your first step is to     |
|  register this host at your deployment server for agent updates.  |
|  For this step you need an administration account on WATO for     |
|  that server.                                                     |
|                                                                   |
+-------------------------------------------------------------------+
Deployment server to connect to: moni01.servers.intern
Protocol to use for connection [http/https]: https
Check_MK Site on deployment server: mysite
Our host name in the monitoring: myhost
WATO User with admin permissions: cmkadmin
Password: cmk
Going to register agent at deployment server
Successfully registered agent for deployment.
You can now update your agent by running 'cmk-update-agent -v'
Saved your registration settings to /etc/cmk-update-agent.state.

Hint: you can do this in scripts with the command:

/usr/bin/cmk-update-agent register -s localhost -i heute -H heute -p http -U 'cmkadmin' -P '***' -v

Dazu einige Hinweise:

  • Bevor Sie einen Host registrieren können, muss dieser bereits im Monitoring aufgenommen und bekannt sein (inklusive Activate Changes).
  • Um HTTPS zu verwenden, muss auf Ihrem Monitoringserver HTTPS eingerichtet sein. HTTP ist hier deutlich einfacher, bietet aber keine Verschlüsselung der Übertragung. Da der Agent theoretisch Passwörter enthalten kann, ist HTTPS der empfohlene Weg. Die Authentizität des Agenten wird aber durch die Signatur unabhängig davon sichergestellt.
  • Der Login als WATO-User ist nur einmal erforderlich. Agent und Server vereinbaren bei der Registrierung einen geheimen Schlüssel, der nur diesem Host bekannt ist. Das Passwort des WATO-Users wird nirgendwo gespeichert.
  • Bei der Registrierung benötigt das Plugin auch den Namen des Hosts, wie er im Monitoring bekannt ist. Dieser ist ja nicht unbedingt mit dem Hostnamen des Rechners identisch. Der Hostname wird dann zusammen mit dem Schlüssel lokal gespeichert.

Wenn alles erfolgreich ist, wird der Schlüssel beim Agenten in der Datei /etc/cmk-update-agent.state gespeichert. Auf dem Server liegt er dann in ~/var/check_mk/agent_deployment/myhost. Der Schlüssel erlaubt von nun an dem Host, seinen eigenen Agenten ohne Passwort vom Server herunterzuladen. Ein Herunterladen von Agenten anderer Hosts ist nicht möglich (da diese vertrauliche Daten enthalten könnten).

1.6. Master Switch

Als Letztes aktivieren Sie das Ganze durch einen klick auf beim Master Switch. Die Tabelle Prerequisites sollte nun so aussehen:

Ab sofort wird sich nun der Agent einmal pro Stunde melden und nach einer neuen Version des Agenten Ausschau halten. Sobald diese bereitsteht und signiert ist, wird er sie automatisch herunterladen und installieren.

2. Begrenzung des Update auf bestimmte Hosts

Bevor Sie einen neuen Agenten auf eine größere Zahl von Host ausrollen, möchten Sie diesen sicherlich zuerst mit einer kleineren Anzahl von Hosts ausprobieren. Dieser wichtige Schritt verhindert, dass ein möglicher Fehler große Ausmaße annimmt.

Dazu dient der mittlere Kasten auf der Seite Automatic agent updates:

Nachdem Sie hier Bedingungen für die Auswahl von Hosts getroffen haben, können Sie mit dem Feld Test with the host name einzelne Hostnamen eintippen und kontrollieren, ob die Updates für diese Hosts nun aktiviert sind oder nicht. Die Bedingungen werden dabei immer mit und verknüpft.

Gleichzeitig ist natürlich auch der Master Switch eine Möglichkeit, die Updates ganz abzuschalten.

3. Diagnose

Zur Diagnose, ob alle Updates wie gewollt funktionieren, gibt es etliche Informationsquellen:

3.1. Statistik auf der Seite Automatic agent updates

Diese Übersicht zeigt, wie sich die einzelnen Hosts im Agenten-Update verhalten. Die Onlinehilfe gibt weitere Erklärungen. Ein Klick auf bringt Sie zu einer detaillierten Liste der einzelnen Hosts. Zu der Gesamtliste aller registrierten Hosts gelangen Sie auch über die Ansicht Other > Agent update status. Dort können Sie auch gezielt nach einzelnen Hosts suchen.

In dieser Liste finden Sie auch dokumentiert, wie der Hash eines des Agenten anfängt, der für einen Host vorgesehen ist (Target Agent), welcher zuletzt vom Host runtergeladen wurde (Downlaoded Agent) und welcher aktuell auf dem Host installiert ist (Installed Agent). So können sie jederzeit nachvollziehen, ob die Vorgabe eingehalten wurde oder wo sich der Prozess gerade befindet.

3.2. Der neue Check Check_MK Agent bei jedem betroffenen Host

Wenn Sie auf einem Agenten das Update-Plugin installiert haben, gibt dieser regelmäßig den aktuellen Status des Updates in Form von Monitoringdaten aus. Die Serviceerkennung erzeugt daraus einen neuen Service bei dem Host mit dem Namen Check_MK Agent. Dieser spiegelt den aktuellen Zustand des Updates wieder. Sie können sich so in Form von Monitoring-Alarmen über ein Problem mit den Updates benachrichtigen lassen.

Der Zustand dieses Checks ist als Schlimmstes auf WARN begrenzt.

3.3. Logmeldungen auf dem Zielhosts selbst

Im Falle eines Problems finden Sie auch auf dem Zielhost Logdaten über die Updates. Unter Linux loggt cmk-update-agents nach syslog. Unter Windows wird in die Datei log/cmk-update-agent.log geschrieben.

/var/log/syslog
Nov 27 13:21:06 Klappfisch cmk-update-agent: Check_MK Agent Updater
Nov 27 13:21:06 Klappfisch cmk-update-agent: Getting target agent configuration from deployment server
Nov 27 13:21:06 Klappfisch cmk-update-agent: Agent f9e0a488f44dffe5 already installed.

4. Automatische Updates für einen Host abschalten

Soll ein Host aus den automatischen Updates entfernt werden, so passen Sie über den Regelsatz Install agent updater (Linux, Windows) dessen Einstellung so an, dass das Update-Plugin dort deaktiviert ist. Beim nächsten regelmäßigen Update entfernt der Agent seinen Updater dann selbst!

Es versteht sich von selbst, dass das Update dann nur durch die manuelle Installation eines neuen Agentenpakets erneut aktivert werden kann! Die Registrierung bleibt aber erhalten und muss nicht erneuert werden.

5. Agenten-Updates im verteilten Monitoring

Wenn Sie ein verteiltes Monitoring mit mehreren Instanzen betreiben, so erfolgt das Bereitstellen der Updates ausschließlich durch den zentralen Server. Eine Verteilung der Agenten auf Slave-Server ist in der aktuellen Implementierung (noch) nicht vorgesehen.