So konfigurieren Sie den Zabbix-Agenten zum Abrufen von Daten aus PowerShell-Skripten
Zabbix mit PowerShell zur Überwachung von Windows-Systemen zu nutzen, ist nicht ganz einfach, insbesondere wenn man die Standardeinstellungen gewohnt ist. Manchmal benötigt man benutzerdefinierte Metriken – wie die Anzahl aktiver RDP-Sitzungen oder die Anzahl der Tage seit dem letzten Windows-Update – und PowerShell-Skripte sind dafür ideal. Doch einfach ein Skript einzufügen, reicht nicht aus; der Zabbix-Agent muss korrekt konfiguriert werden. Diese Anleitung dient als praktische Checkliste, um die Skripte reibungslos an Zabbix zu übermitteln – inklusive einiger Fallstricke. Sie lernen Grundlagen wie das Bearbeiten von Konfigurationsdateien, das Neustarten von Diensten und das Ausführen von Befehlen zum Testen kennen. Das Hauptziel? Sicherstellen, dass der Agent Ihre Skripte ausführen, Daten erfassen und diese ohne Abstürze oder Timeouts zurücksenden kann. Es erfordert etwas Geduld und Ausprobieren, insbesondere bei Ausführungsrichtlinien und Timeouts. Doch sobald alles funktioniert, werden Sie sich fragen, warum Sie das nicht schon früher gemacht haben.
So beheben Sie Probleme mit der PowerShell-Überwachung unter Windows mithilfe des Zabbix-Agenten
Methode 1: Ausführen eines PowerShell-Skripts mithilfe von Benutzerparametern
Das ist die klassische Methode. Sie erstellen ein Skript, das Ihren Wert (z. B.RDP-Sitzungen) ausgibt, speichern es an einem sicheren Ort und weisen Zabbix an, es aufzurufen. Warum ist das nützlich? Weil Sie so benutzerdefinierte PowerShell-Code-Snippets schreiben und diese nach Bedarf ausführen können. Bei korrekter Einrichtung ruft Zabbix die Daten in regelmäßigen Abständen ab, und Sie erhalten ein übersichtliches Diagramm oder eine Warnung, falls etwas Ungewöhnliches auftritt.– Erstellen Sie zunächst Ihr Skript. Zum Beispiel ein Skript, das aktive RDP-Sitzungen zählt: `powershell $RDSsessions = qwinsta | ForEach-Object { $_ -replace „\s{2, 18}“, „, “ } | ConvertFrom-Csv $activeSessions = $RDSsessions | Where-Object { $_. State -eq ‚Active‘ } | Measure-Object |` Select-Object -ExpandProperty Count Write-Host $activeSessions – Speichern Sie die Datei unter `C:\Program Files\Zabbix Agent 2\Script\GetActiveRDPSessionCount.ps1`.- Bearbeiten Sie nun Ihre `zabbix_agent2.conf` (diese befindet sich normalerweise in `
Methode 2: Verwendung von system.run zur sofortigen Befehlsausführung
Wenn Sie mehr Flexibilität wünschen oder eine weniger sichere Konfiguration in Kauf nehmen, können Sie Befehle direkt von Zabbix über `system.run` ausführen. Das vereinfacht die Arbeit, aber Vorsicht: Sie führen beliebige Befehle aus, daher ist die Sicherheit eher gering.– Aktivieren Sie dies zunächst in der Datei `zabbix_agent2.conf`: ini AllowKey=system.run[*] – Fügen Sie nun einen Eintrag hinzu: – Name: Tage seit dem letzten Windows-Update – Typ: Zabbix-Agent – Schlüssel: system.run[powershell.exe -NoProfile -ExecutionPolicy Bypass -Command „(New-Timespan -Start ((Get-HotFix | Sort-Object -Property InstalledOn | Select-Object -Last 1).InstalledOn) -End (Get-Date)).Days“] – Datentyp: Numerisch (vorzeichenlos) – Aktualisierungsintervall: 1 Tag – Passen Sie die Zeiträume für Verlauf und Trend entsprechend an. Dieser Befehl ruft das Datum des letzten Windows-Hotfixes ab und berechnet die seitdem verstrichenen Tage. Nicht perfekt, da es ein oder zwei Sekunden dauern kann, bis es ausgeführt wird, aber es funktioniert im Notfall.Hinweis: Bei manchen Konfigurationen können Fehler wie „Timeout“ oder „Verbindung zurückgesetzt“ auftreten. Beheben Sie diese, indem Sie sicherstellen, dass `Timeout=20` eingestellt ist und der Agent lokale Verbindungen akzeptieren kann. Gehen Sie anschließend zu `
Ehrlich gesagt, ist die Konfiguration der PowerShell-Überwachung nicht immer ganz einfach – manchmal treten Fehler auf, die erst nach einigen Anpassungen der Konfigurationen verständlich werden. Sobald man den Dreh aber raus hat, erhält man viele flexible Daten von den Windows-Servern in Zabbix.
Zusammenfassung
- Erstellen Sie das PowerShell-Skript und legen Sie es in einem dafür vorgesehenen Ordner ab.
- Bearbeiten Sie die Datei `zabbix_agent2.conf`, um Benutzerparameter hinzuzufügen oder `system.run` zu aktivieren.
- Starten Sie den Zabbix-Agenten neu und testen Sie ihn mit `zabbix_get`.
- Passen Sie die Timeout-Einstellungen gegebenenfalls an.
- Richten Sie Ihre Zabbix-Elemente so ein, dass sie diese Daten regelmäßig abrufen.
Zusammenfassung
Das Einbinden eigener PowerShell-Skripte in Zabbix erfordert etwas Geduld, ist aber kein Hexenwerk – es ist lediglich eine Kombination aus Konfigurationsbearbeitung, Skripterstellung und Tests. Bei manchen Konfigurationen sind mehrere Versuche nötig, insbesondere bei Timeouts und Berechtigungen. Sobald es aber klappt, läuft alles. Hoffentlich spart das jemandem ein paar Stunden. Viel Erfolg beim Optimieren der Skripte und beim Monitoring!