Blog

Überwachung von Linux-Diensten auf Azure-VMs mit benutzerdefinierten Protokollen und DCRs

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.

CloudZen Innovations
Mitglied des CloudZen-Teams
Alle Beiträge anzeigen →

Ähnliche Artikel

Bereit für die Transformation Ihres Unternehmens?

Lassen Sie uns besprechen, wie CloudZen Ihre digitale Transformation beschleunigen kann. Kostenloses Erstgespräch – unverbindlich.