In hybriden und Cloud-nativen Umgebungen ist die Überwachung eigener Dienste und Hintergrundprozesse auf virtuellen Maschinen entscheidend für die Verfügbarkeit und den Betrieb. Dieser Artikel zeigt, wie sich Statusmeldungen von Diensten (z. B. „läuft“ oder „gestoppt“) auf Azure-VMs erfassen und mithilfe von Datensammlungsregeln (Data Collection Rules, DCRs) an eine benutzerdefinierte Tabelle in Log Analytics übertragen lassen.
Anwendungsfall im Überblick
- Dienste wie nginx, MySQL oder eigene Dienste überwachen.
- Die Protokollerfassung mit Bash und cron automatisieren.
- Protokolle in Azure Monitor zentralisieren, um sie abzufragen und für Warnmeldungen und Dashboards zu nutzen.
Architekturdiagramm

Schematische Darstellung von VM, Protokolldatei, DCR und Log Analytics
Schritt 1 – Dienstestatus auf der VM protokollieren
Ein Bash-Skript prüft den Status der benötigten Dienste und hängt die Ergebnisse an eine .log-Datei an.

Das Skript läuft auf jeder Maschine, liest den Status der installierten Dienste und erzeugt benutzerdefinierte Protokolle. Für die Übernahme der Daten verwenden wir ein kommagetrenntes Format mit Servername, Dienstname und Status.
VM01, TaskMonitor,Running
VM01, Cache Manager, Running
Schritt 2 – Cronjob einrichten
Wir haben einen cron-Eintrag hinzugefügt, der das Skript regelmäßig ausführt. Das folgende Beispiel zeigt einen Cronjob für die Azure-Cloud-Überwachung, der alle drei Minuten läuft:
*/03 * * * * /root/home/user/az_monitoring/az_monitoring.sh > /dev/null 2>&1
Hinweis: Das Skript sollte in einem privaten Verzeichnis oder an einem anderen geschützten Ort liegen.
Schritt 3 – Verzeichnis für benutzerdefinierte Protokolle einrichten
Stellen Sie sicher, dass Verzeichnis und Datei die passenden Berechtigungen haben.
-rw-r–r–. 1 user group 167713 Aug 20 12:18 az_service_status_vm01_20250820.log
Schritt 4 – Benutzerdefinierte Tabelle in Log Analytics erstellen
Azure erstellt eine Tabelle bei der Konfiguration einer DCR automatisch, falls sie noch nicht existiert. Alternativ können Sie das Schema vorab festlegen. Die benutzerdefinierte Tabelle sollte die Spalten RawData + TimeGenerated enthalten: RawData enthält die aus der .log-Datei gelesenen Zeilen, TimeGenerated den Zeitpunkt ihrer Übernahme in die Tabelle.
Beispiel für einen Tabellennamen: LinuxServiceStatus_CL (_CL wird automatisch ergänzt und steht für benutzerdefinierte Protokolle).
Schritt 5 – Datensammlungsregel (DCR) erstellen
Erstellen Sie die Data Collection Rule im Azure-Portal, mit einer ARM-Vorlage oder über die CLI.
Beispiel für die Erstellung per CLI:
az monitor data-collection rule create
--resource-group
--name LinuxServiceLogDCR
--location
--data-flows '[{"streams":["Custom-LinuxServiceStatus_CL"],"destinations":["la-workspace"]}]'
--data-sources '[{"streams":["Custom-LinuxServiceStatus_CL"],"filePatterns":["/log/custom/az_service_status_*.log"],"name":"linuxServiceLogs","format":"text"}]'
--destinations '[{"type":"logAnalytics","workspaceResourceId":"","name":"la-workspace"}]'
Schritt 6 – DCR mit der Azure-VM verknüpfen
Das ist über das Portal oder die CLI möglich:
az monitor data-collection rule association create
--name LinkLinuxLogs
--rule-name LinuxServiceLogDCR
--resource
--description "Link service status log rule to VM"
Schritt 7 – Protokolle in Log Analytics prüfen
Öffnen Sie nach den vorigen Schritten im Log Analytics Workspace den Bereich Logs und führen Sie diese einfache Abfrage aus:
LinuxServiceStatus_CL
| sort by TimeGenerated desc
Sie erhalten eine Tabelle mit den Rohdaten und den Zeitstempeln der Protokolle.
Abfragebeispiele: Erkenntnisse mit KQL gewinnen
Beispiel zur Auswertung der Dienstverfügbarkeit und zum Erkennen ausgefallener Dienste:
LinuxServiceStatus_CL
| parse RawData with ComputerName: string "," ServiceName: string "," ServiceStatus: string
| where Status == "stopped"
| where Server == "VM01" and ServiceName == "Task Monitor"
| project TimeGenerated, Server, ServiceName, Status
| order by TimeGenerated desc
Zusatz: In Azure Workbook visualisieren
Erstellen Sie ein Azure Workbook für die Darstellung von:
- Kreisdiagrammen zum Status der Dienste
- Zeitdiagrammen der Dienstaktivität
- Warnmeldungen auf Basis von Ausfallzeiten
Sicherheit und bewährte Verfahren
- Verwenden Sie verwaltete Identitäten und rollenbasierte Zugriffskontrolle (RBAC).
- Schreiben Sie Protokolle möglichst nicht mit Root-Rechten.
- Verwenden Sie den Azure Monitor Agent (AMA) statt älterer OMS-Agents.
Fazit
Mit benutzerdefinierten Protokollen und DCRs lässt sich eine robuste, anpassbare Überwachungspipeline für Dienste auf Azure-VMs aufbauen. Sie unterstützt hohe Verfügbarkeit und Skalierung und ermöglicht aussagekräftige Abfragen und Observability.