Springe zum Inhalt

In der Monitoring-Software Zabbix gibt es die Möglichkeit, aufzuzeichnende Werte über Shell-Komandos zu ermitteln, die über SSH von einem enfernten Host gesammelt werden. Dazu muss sich der auf dem jeweiligen Host für die Datensammelei installierte Zabbix-Agent per SSH mit dem entfernten Rechner verbinden können. Passwortlos funktioniert das am besten mit dem in SSH integrierten Public-Key-Verfahren: dazu erstellt man zuerst für den Benutzer, unter dem der Zabbix-Agent läuft einen SSH-Key mit ssh-keygen, schickt dann den generierten öffentlichen Schlüssel an den entfernten Rechner und trägt diesen beim Benutzer in der Datei ~/.ssh/authorized_keys ein. Die letzten zwei Schritte kann man auch halbautomatisch mit dem Befehl ssh-copy-id erledigen.

Danach sollte sich der Zabbix-Agent-Benutzer mit "ssh <Remote-Host>" ohne Passworteingabe auf dem Remote-Host anmelden können. Anschließend können die zu überwachenden Werte in Zabbix konfiguriert werden.

Groß ist die Verwunderung, wenn Zabbix im Status des jeweiligen Wertes "Public key authentification failed" anzeigt, obwohl der manuelle Verbindungsaufbau problemlos funktioniert hat.

Ursache ist, dass ssh-key-gen jetzt standardmäßig Keys im OpenSSH-Format und nicht mehr im alten RSA-Format erstellt. Zu erkennen ist das neue Format in der Datei ~/.ssh/id_rsa. Für OpenSSH steht dort "-----BEGIN OPENSSH PRIVATE KEY-----" und für RSA "-----BEGIN RSA PRIVATE KEY-----" in der ersten Zeile. Zumindest meine Zabbix-Version (4.0) kann noch nicht mit dem OpenSSH-Format umgehen und verwendet den entsprechenden Schlüssel dann einfach nicht. Resultat: Public key authentification failed.

Abhilfe schafft das Kommando "ssh-keygen -m PEM", welches einen neuen Schlüssel im alten Format erzeugt, das auch ältere Zabbix-Version verstehen.

1

Wer Zabbix für das Monitoring von Hosts und Services einsetzt und Windows-Rechner zu überwachen hat, kann den direkt vom Hersteller bereitgestellten Agent für Windows verwenden und entsprechend der offiziellen Anleitung installieren. Der Agent wird dabei als Windows-Dienst installiert und kann über die Kommandozeile oder die Windows-Dienste-GUI gestartet werden.

Bei meiner Installation trat jedoch folgender Fehler beim Starten des Dienstes auf:

  1. C:\Program Files\Zabbix>zabbix_agentd.exe --start
  2. zabbix_agentd.exe [7840]: ERROR: cannot start service [Zabbix Agent]: [0x0000041D] Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung.

Obwohl in der Konfigurationsdatei ein Logfile angegeben war, wurde dieses nicht angelegt (um vielleicht dort die Fehlerursache zu protokollieren). Ein Blick in die Windows Ereignisanzeige brachte auch keinen Erfolg:

Windows Ereignisanzeige mit Zabbix-Agent Dienstfehler

Glücklicherweise lässt sich der Agent im Vordergrund starten und siehe da, die Fehlerursache ward gefunden:

  1. C:\Program Files\Zabbix>zabbix_agentd.exe --config c:\ProgramData\Zabbix\zabbix_agentd.win.conf --foreground
  2. zabbix_agentd.exe [6704]: "TLSConnect" configuration parameter cannot be used: Zabbix agent was compiled without TLS support
  3. zabbix_agentd.exe [6704]: "TLSAccept" configuration parameter cannot be used: Zabbix agent was compiled without TLS support
  4. zabbix_agentd.exe [6704]: "TLSPSKIdentity" configuration parameter cannot be used: Zabbix agent was compiled without TLS support
  5. zabbix_agentd.exe [6704]: "TLSPSKFile" configuration parameter cannot be used: Zabbix agent was compiled without TLS support

Leider ist also der aktuelle Build des Agents nicht mit TLS-Unterstützung kompiliert, so dass man die verschlüsselte Übertragung von Steuerkommandos und Ergebniswerten nicht nutzen kann. Getestet wurde mit folgender Version des Agents:

  1. C:\Program Files\Zabbix>zabbix_agentd.exe --version
  2. zabbix_agentd Win64 (service) (Zabbix) 3.2.0
  3. Revision 62444 13 September 2016, compilation time: Sep 12 2016 15:28:10