Windows Server stellt bereits alles bereit, was man braucht – über Performance Monitor und Ereignisanzeige. Das Problem beginnt, sobald man mehr als einen Server im Blick behalten muss: die Daten aufbewahren, Dashboards bauen oder Ereignisse über den gesamten Bestand hinweg durchsuchen. Der Task-Manager zeigt nur den aktuellen Moment; PerfMon hat jeden Zähler, aber keine Historie; die Ereignisanzeige ist mühsam über zehn Maschinen hinweg, geschweige denn über hundert.
Der OpenTelemetry Collector läuft als ganz normaler Windows-Dienst. Er liest dieselben Leistungsindikatoren und Ereigniskanäle, die man ohnehin kennt, und sendet sie an Grafana. Man installiert ein MSI, fügt seine Grafana-Verbindungsdaten ein, startet den Dienst, und der Server erscheint in einem zentralen Dashboard. Kein Kubernetes, keine drei separaten Agenten.
Windows-Administratoren, die Windows Server (2016–2025) betreiben, in Ereignisanzeige,
Performance Monitor und services.msc zu Hause sind und eine zentrale Ansicht
in Grafana wollen – ohne Agentenlizenz pro Server. Man braucht lokale Administratorrechte
auf der Maschine und ein Grafana-Ziel (die kostenlose Stufe von Grafana Cloud genügt).
Was am Ende bereitsteht
- CPU, Arbeitsspeicher, freier Datenträgerplatz und Netzwerk jedes Servers in einem Grafana-Dashboard, mit Historie – nicht nur die Live-Ansicht, die der Task-Manager bietet.
- Windows-Ereignisprotokolle (System, Anwendung, Sicherheit) über alle Server hinweg an einem Ort durchsuchbar, statt sich Maschine für Maschine durch die Ereignisanzeige zu klicken.
- Ein Windows-Dienst, der all das erledigt – und einen Metrik-Agenten, einen PerfMon/WMI-Exporter und einen separaten Log-Shipper ersetzt.
Wie es sich auf bereits vertraute Werkzeuge abbildet
Nichts hier ist ein neues Konzept – es ist das Windows-Werkzeug, das man kennt, nur auf Grafana ausgerichtet:
| Bekannt als … | OpenTelemetry liest es über … | In der Konfiguration heisst es |
|---|---|---|
| Task-Manager (CPU, RAM, Datenträger, Netzwerk) | den Host-Metrics-Collector | hostmetrics |
| Performance-Monitor-Zähler | den PerfMon-Reader | windowsperfcounters |
| Ereignisanzeige (System / Anwendung / Sicherheit) | den Ereignisprotokoll-Reader | windowseventlog |
| Ihr Monitoring-Tool / Dashboard | das Ziel, an das gesendet wird | exporters |
Schritt 1 – Installation mit dem Windows-MSI
- Laden Sie das OpenTelemetry Collector (contrib) MSI für Windows aus den
offiziellen Releases
herunter – wählen Sie das
otelcol-contrib_*_windows_amd64.msi. (Man will den contrib-Build; die Reader für Windows-Ereignisprotokolle und PerfMon sind dort enthalten.) - Führen Sie das Installationsprogramm aus: Weiter → Weiter → Installieren. Es registriert einen Windows-Dienst für Sie.
- Öffnen Sie
services.mscund bestätigen Sie, dass ein Dienst namens OpenTelemetry Collector vorhanden ist und auf automatischen Start eingestellt ist. - Die Konfigurationsdatei liegt unter
C:\Program Files\OpenTelemetry Collector\config.yaml– das ist die eine Datei, die Sie in den nächsten Schritten bearbeiten.
Dieselbe Installation lässt sich aus einer erhöhten PowerShell skripten, statt sich durch den Assistenten zu klicken:
New-Service -Name "otelcol" -DisplayName "OpenTelemetry Collector" `
-BinaryPathName 'C:\otelcol\otelcol-contrib.exe --config C:\otelcol\config.yaml' `
-StartupType Automatic
Start-Service otelcol
Schritt 2 – Ihre Grafana-Verbindungsdaten besorgen
Wenn Sie Grafana Cloud nutzen (die kostenlose Stufe reicht für den Anfang): Gehen Sie zu Connections → OTLP → „Send data”. Kopieren Sie die beiden angezeigten Angaben:
- den OTLP-Endpunkt (sieht aus wie
https://otlp-gateway-<zone>.grafana.net/otlp) und - den Authorization-Header (ein
Basic ...-Token aus Ihrer Instanz-ID und einem API-Schlüssel – Grafana generiert ihn für Sie).
Halten Sie sie für den nächsten Schritt bereit. (Sie hosten Grafana lieber selbst? Dann richten Sie Metriken auf Prometheus/Mimir und Logs auf Loki aus – vermerkt am Ende von Schritt 3.)
Schritt 3 – CPU, Arbeitsspeicher, Datenträger und Ereignisprotokolle aktivieren
Diese Konfiguration muss nicht von Grund auf geschrieben werden. Laden Sie die fertige Datei herunter, tragen Sie Ihre zwei Grafana-Werte ein und speichern Sie sie über
C:\Program Files\OpenTelemetry Collector\config.yaml:
⬇ Laden Sie die einsatzfertige Windows-Server-Konfiguration herunter (config.yaml)
Hier steht, was sie enthält, in einfachen Worten – jeder Block bildet etwas ab, das Sie bereits wiedererkennen:
receivers:
hostmetrics: # Task Manager-style values: CPU, memory, disks, network
collection_interval: 30s
scrapers: { cpu: , memory: , network: , paging: , processes: , filesystem: }
windowsperfcounters: # values from Performance Monitor
collection_interval: 30s
perfcounters:
- object: Processor
instances: ["_Total"]
counters: [{ name: "% Processor Time" }]
- object: LogicalDisk
instances: ["*"]
counters: [{ name: "% Free Space" }]
windowseventlog/system: # entries from Event Viewer
channel: System
windowseventlog/security:
channel: Security
exporters:
otlphttp/grafana: # where Windows sends the data — paste your values here
endpoint: "https://otlp-gateway-<zone>.grafana.net/otlp"
headers:
Authorization: "Basic <base64 of instanceID:token>"
service:
pipelines: # which data is switched on
metrics: { receivers: [hostmetrics, windowsperfcounters], exporters: [otlphttp/grafana] }
logs: { receivers: [windowseventlog/system, windowseventlog/security], exporters: [otlphttp/grafana] }
hostmetrics– die Task-Manager-Grundlagen, mit Historie.windowsperfcounters– jeder Zähler, den Sie in Performance Monitor hinzufügen würden.windowseventlog– die Ereignisanzeige-Kanäle, die Sie interessieren.exporters– das Ziel; hier kommen Ihre Grafana-Werte hin.service– der Ein/Aus-Schalter: nur was hier gelistet ist, wird tatsächlich erfasst.
Sie hosten Grafana selbst? Ersetzen Sie den einen Exporter durch zwei: prometheusremotewrite
an Prometheus/Mimir für die Metriken und otlphttp (oder loki) an Loki für das
Ereignisprotokoll. Sonst ändert sich nichts.
Schritt 4 – Neu starten und überprüfen, dass es funktioniert
- Öffnen Sie
services.msc, Rechtsklick auf OpenTelemetry Collector → Neu starten. - Bestätigen Sie, dass der Dienst Wird ausgeführt anzeigt. (Stoppt er sofort, hat die Konfiguration einen Tippfehler – siehe Fehlerbehebung.)
- Öffnen Sie Grafana → Explore, wählen Sie Ihre Metrik-Datenquelle und suchen Sie nach dem Hostnamen Ihres Servers. Innerhalb von ein bis zwei Minuten sollten CPU und Arbeitsspeicher zu sehen sein.
- Wechseln Sie die Datenquelle zu Loki und fragen Sie
{host_name="YOUR-SERVER"}ab – Ihre Ereignisprotokoll-Einträge sind nun durchsuchbar.
Das ist die ganze Schleife: ein Dienst, und die Maschine meldet an Grafana. Alles danach dient dazu, es schöner zu machen und weitere Server hinzuzufügen.
Schritt 5 – Das Windows-Server-Dashboard importieren
Statt Panels von Hand zu bauen, importieren Sie das fertige Starter-Dashboard und wählen dann Ihren Server aus dem Server-Dropdown oben:
⬇ Lade das Windows-Server-Dashboard herunter (Grafana JSON)
In Grafana: Dashboards → New → Import → Upload JSON file, dann wählen Sie bei Aufforderung Ihre Prometheus- und Loki-Datenquellen. Es kommt mit Panels für CPU-Auslastung in %, Speichernutzung in %, freier Datenträger in % pro Volume, Netzwerkdurchsatz, eine Statuskachel „Server meldet”, fehlgeschlagene Anmeldungen, Neustarts & Herunterfahren, Dienstausfälle und ein durchsuchbares Ereignisprotokoll-Panel. Nutzen Sie es unverändert oder als Ausgangspunkt. (Die Ereignisprotokoll-Panels matchen auf Ereignis-IDs und Text, sodass Sie auf einem nicht englischen Windows oder einem anderen Loki-Label-Schema eventuell eine Abfrage anpassen müssen – die Metrik-Panels funktionieren mit der obigen Konfiguration unverändert.)

Schritt 6 – Rollen ergänzen: IIS, SQL Server, Active Directory
Ein Dateiserver, eine SQL-Maschine und ein Domänencontroller brauchen unterschiedliche Zähler und Ereigniskanäle. Betrachten Sie sie als Erweiterungspakete oben auf der Basiskonfiguration:
- Basis-Windows-Server – CPU, Arbeitsspeicher, Datenträger, Netzwerk, System- + Anwendungsprotokolle.
- IIS – die Leistungsobjekte
Web ServiceundASP.NET. - SQL Server – die
SQLServer:*-Objekte (Puffer, Arbeitsspeicher, SQL-Statistiken). - Active Directory / Domänencontroller –
DirectoryServices-Zähler plus die EreigniskanäleDirectory ServiceundDNS Server. - Dateiserver –
LogicalDisk- und SMB-Zähler plus Ereignisse zur Dateizugriffsüberwachung.
Sie können diese Zähler in jeder config.yaml der Server von Hand ergänzen. Über eine
Flotte hinweg wird das mühsam – womit wir beim nächsten Schritt sind.
Schritt 7 – Auf viele Server ausrollen mit LinkMesh
Ein Server ist eine Datei, die Sie bearbeiten. Hundert Server – jeder in einer anderen Rolle – sind eine Flotte, und YAML per RDP auf jedem einzelnen zu bearbeiten ist genau die Fleissarbeit, die Menschen zurück zum alten Agenten treibt.
Der Collector unter Windows spricht OpAMP, sodass er stattdessen zentral verwaltet werden kann. LinkMesh ist eine selbst gehostete Control Plane für genau das: Registrieren Sie jeden Windows-Collector mit einem Token, dann wählen Sie die Serverrolle, sehen sich die generierte Konfiguration in der Vorschau an und rollen sie aus – das Basispaket hier, IIS dort, SQL woanders – ohne eine einzige Box per RDP anzufassen. Jede Änderung wird als Vorschau gezeigt, versioniert und auditiert.

Die Telemetrie fliesst weiterhin direkt von jedem Server zu Grafana und bleibt in Ihrem Netzwerk – LinkMesh verwaltet nur die Konfiguration, und es ist pro verwaltetem Collector abgerechnet, nicht pro Gigabyte, sodass ein grosser Windows-Bestand nicht zur Volumenrechnung wird. (Zwei weitere Dinge lohnen sich im Flottenmassstab: Benutzernamen und Kontodetails maskieren aus dem Sicherheitskanal, bevor sie den Host verlassen, und störende Ereignisse filtern, damit Sie nicht dafür bezahlen, Geplauder auf Informationsebene zu speichern.)
Fehlerbehebung
- Dienst bleibt nicht laufen – die Konfiguration hat einen YAML-Fehler. Prüfen Sie
services.msc→ der Dienst stoppt direkt nach dem Start. Validieren Sie die Datei oder führen Sieotelcol-contrib --config config.yamleinmal in einer Konsole aus, um den Fehler zu sehen. - Keine Daten in Grafana – prüfen Sie den OTLP-Endpunkt und das
Basic-Token aus Grafana Cloud (Connections → OTLP) erneut und bestätigen Sie, dass die Maschine das Internet über 443 erreichen kann. - Sicherheitskanal ist leer – der Dienst muss als
LocalSystemlaufen (die MSI-Voreinstellung), um das Sicherheitsprotokoll zu lesen; ein normaler Benutzer kann das nicht. - Zähler nicht gefunden – die Namen der Leistungsindikatoren sind lokalisiert. Auf einem nicht englischen Windows verwende die lokalen Zählernamen (oder die numerischen Zähler-IDs).
Windows Server muss nicht die Maschine sein, die auf einem veralteten Agenten festhängt. Ein MSI, ein Dienst, Ihre Grafana-Daten – und es meldet neben allem anderen.
LinkMesh verwaltet den Collector auf jedem Host von einer einzigen selbst gehosteten Control Plane aus – wählen Sie eine Rolle, sehen sich die Konfiguration in der Vorschau an und rollen sie über OpAMP aus, mit PII-Maskierung und auditiertem Rollout, abgerechnet pro Collector statt pro Gigabyte. Stellen Sie eine auf in wenigen Minuten, oder sehen Sie sich an, was sie kann.
