Zabbix Agent per Gruppenrichtlinie installieren lassen
Aus znilwiki
Bei einem Kunden waren es zu viele Server als das bei diesen der Zabbix-Agent bei allen von Hand installiert werden konnte.
Es gab zwar eine Softwareverteilung - welche für die Server jedoch nicht genutzt werden durfte.
Zunächst dachte ich an ein Script - jedoch stand nur ein Benutzerdefinierter Administrationsaccount zur Verfügung und die UAC-Kontrolle auf vielen Servern war noch aktiviert. Eine Remote-Installation z.B. per WMI wäre daran gescheitert.
Das Problem hatte ich schon als ich mir den Updater für den Zabbix-Agenten ausgedacht hatte: Zabbix Agent Auto Updater - dort habe ich das Problem umgangen indem ich einfach den SYSTEM-Benutzer genommen habe - dieser hat volle Rechte und keine UAC-Abfrage. Gestartet wird das Update über die Windows Aufgabenplanung.
Also die Installation in die Aufgabenplanung eintragen lassen ...
Naheliegend war die Idee dies per Gruppenrichtlinie zu tun - und das hat auch auf Anhieb geklappt!
Voraussetzungen
- Ihr habt eine zentrale Freigabe auf der das Installationsskript abgelegt ist - siehe
- Zabbix Agent für Windows per Skript automatisch installieren Musterdatei für das Installationsskript
- Windows-Freigabe für Agenten einrichten für eine geeignete Freigabe
- Auf die Freigabe muss man ohne Benutzername und Passwort kommen! Wir lassen das Paket als Benutzer "SYSTEM" installieren der sonst keinen Zugriff hat
- Und Ihr habt das Installationsskript vorher getestet - an ein paar Rechnern von Hand
- Eure Server sind auch unterhalb von OU's (Organisationseinheiten) organisiert
Einrichtung eines Task als "Sofortige Aufgabe" (ab W7 / 2008 R2)
Diese Methode ist also prima für die Erst-Verteilung des Agenten - und danach sollte die Gruppenrichtlinie wieder deaktiviert oder die Verknüpfung gelöscht werden.
Die regelmäßige Neuinstallation ist bei der Verwendung meines Installationsskriptes zwar völlig Problemlos - aber auch völlig unnötig.
Wir erstellen im Gruppenrichtlinien-Editor auf der gewünschten OU eine neue Gruppenrichtlinie, z.B. "Zabbix Agent installieren" und bearbeiten diese.
Dann navigieren wir zu:
Computerkonfiguration --> Einstellungen --> Systemsteuerungseinstellungen --> Geplante Aufgaben
Wir klicken mit der rechten Maustaste auf "Geplante Aufgaben" oder rechts in den leeren Bereich und wählen
Sofortige Aufgabe (mindestens Windows 7)
Es öffnet sich ein neues Fenster in der wir die Details eingeben können:
Bei "Benutzer oder Gruppe ändern..." klickt ihr drauf und gebt im Nachfolgenden Fenster "SYSTEM" ein. Falls er mehrere Benutzer oder Gruppen vorschlägt wählt den reinen SYSTEM Benutzer aus.
Setzt die Haken wie angegeben und vergesst den Namen nicht.
Auf dem Tab "Aktionen" fügen wir nun noch den Aufruf unseres Installationsskriptes hinzu:
Klickt auf OK und schließt die Gruppenrichtlinie.
Installation prüfen
Geht auf einen Server auf dem der Agent noch nicht installiert ist und aktualisiert dort die Gruppenrichtlinie mit
gpupdate /force
unmittelbar nach dem Befehl wird die Installation beginnen (allerdings im Hintergrund ohne das Ihr etwas seht.
Während dessen gibt es in der Aufgabenplanung auch eine Aufgabe "Zabbix Agent installieren" - die aber nach erfolgreichen Abschluss sich selbst wieder löscht.
Ohne das manuelle Aktualisieren der Gruppenrichtlinien müsst Ihr den natürlichen Intervall abwarten - die Server prüfen Regelmäßig ob sich etwas geändert hat und übernehmen dann Änderungen.
Per Default ist der Wert für die Computerkonfiguration 90 Minuten +/- einem 30 Minuten Zeitfenster (siehe https://technet.microsoft.com/en-us/library/cc940895.aspx )
Es kann also bis zu 2h Stunden dauern bis der letzte Server dies übernommen hat.
Installationsskript nur einmal ausführen per GPO
Wenn Ihr zusätzlich bei der Erstellung der Aufgabe folgenden Haken setzt so wird das Skript nur ein einziges mal ausgeführt:
Nur auf Servern ausführen per WMI-Filter
Der Filter ist:
Select * from Win32_OperatingSystem where Caption like "%Server%"
Anleitung für die Anwendung: http://www.windowspro.de/wolfgang-sommergut/gruppenrichtlinien-mit-wmi-filter-auf-bestimmte-pcs-oder-user-beschraenken
Installationsskript nur bei Bedarf ausführen per Skript
Wie ich oben beschrieben habe wird das Skript nun bei jeder Aktualisierung der Computerkonfiguration der Gruppenrichtlinie ausgeführt.
Es ist natürlich völlig unnötig den Agenten alle ca. 90 Minuten neu zu installieren.
Andererseits hat die Gruppenrichtlinie den Charme das neue Server etc. automatisch mit dem Agenten versorgt werden. Im Zusammenspiel mit einer entsprechenden Autoregistrierung auf dem Zabbix Server entgeht uns so kein Server.
Auch bei zum Beispiel bei provisionierten Citrix-Terminalservern ist dies eine gute Lösung - wenn man den Agent auf das Template packt melden sich nämlich alle Server unter dem gleichen Namen da man in der Agenten-Konfigurationsdatei keine Umgebungsvariablen verwenden kann.
Bleibt das Problem des ständigen Neuinstallierens.
Das habe ich nun wie folgt abgeschwächt: Ich lasse das Installationsskript nicht direkt starten sondern starte statt dessen die separate Datei
InstallZabbixAgentGPO.bat
die ich im gleichen Verzeichnis wie die normale InstallZabbixAgent.bat ablege.
Inhalt der Datei:
@echo off
If exist "%PROGRAMFILES%\Zabbix\zabbix_agentd.win.conf" (
Echo Agent ist installiert
) else (
Echo Agent ist NICHT installiert, starte Setup
\\10.112.5.88\ZabbixAgent\Agent\InstallZabbixAgent.bat
)
exit 0
Alternativ kann man prüfen ob es einen passenden Dienst gibt:
@echo off
REM Make a test if Zabbix-Agent is already installed
sc query "Zabbix Agent" >nul 2>&1
If NOT ERRORLEVEL 1 (
Echo Zabbix-Agent already installed - Install Agent DENIED - Exit Script
GoTo END
REM an Ende springen und Skript verlassen
) Else (
Echo Missing Zabbix-Agent Configuration-File - Install Agent ALLOWED
Set GPO_INSTALL_AGENT=TRUE
REM Installieren des Agenten
)
:END
Ich prüfe ob es schon eine Zabbix-Installation gibt (am vorhanden sein einer entsprechenden Konfigurationsdatei) und starte nur im Fehlerfall das Setup.
Windows XP / 2003
Funktioniert im Prinzip genauso wie zuvor - aber:
- Der Patch KB943729 von Microsoft muss installiert sein (kommt auch über Windows Update): http://www.microsoft.com/de-de/download/details.aspx?id=3628
- Die Gruppenrichtlinie selbst muss von mindestens einem Windows Vista / 7 oder Windows 2008 Server aus erstellt / bearbeitet werden
Ansonsten bei der Erstellung einfach die XP-Option wählen:
Da er mir in der Auswahl als Standard nur .exe Dateien anbietet habe ich dem Skript (.BAT) die CMD.EXE voran gestellt.
Ausführen:
C:\Windows\System32\CMD.exe
oder
%ComSpec%
Argumente:
/C \\Server\Freigabe\Script.bat