Azure-Ressourcenüberwachung mit Telegraf in NetCrunch
Dieses Dokument beschreibt, wie Telegraf konfiguriert wird, um Metriken aus verschiedenen Azure-Ressourcen (z. B. Virtual Machines, Storage Accounts und Datenbanken) zu erfassen und über den Telemetry Node-Endpunkt an NetCrunch zu senden.
Übersicht
Telegraf kann Azure-Ressourcenmetriken mithilfe des Azure Monitor input plugin erfassen. Dadurch können Azure-Ressourcen überwacht werden, ohne dass NetCrunch direkten Netzwerkzugriff auf Azure benötigt.
Die Konfigurationsbeispiele in diesem Dokument verwenden Azure Virtual Machines als Referenz. Das Plugin unterstützt jedoch jeden Azure-Ressourcentyp, der Metriken über die Azure Monitor API bereitstellt.
Unterstützung der Azure-VM-Telemetrie durch NetCrunch
NetCrunch empfängt Daten von Telegraf über einen Telemetry Node REST endpoint. Telemetry Nodes akzeptieren JSON-formatierte Daten und speichern empfangene Werte als Zähler oder Alarmstatus.
Der Endpunkt, seine URL-Struktur und die Autorisierung werden einmalig unter Monitoring with Telegraf beschrieben. Im Folgenden wird vorausgesetzt, dass bereits ein Telemetry Node vorhanden ist – siehe Telemetrieknoten.
Datenfluss
Die Überwachung von Azure-VMs über Telegraf erfolgt nach diesem Ablauf:
- Azure Monitor API Query – Telegraf fragt die Azure Monitor API mithilfe von Service-Principal-Anmeldeinformationen nach VM-Metriken ab.
- Metric Collection – Azure Monitor gibt die angeforderten Metriken für die angegebene Ressource zurück.
- Data Forwarding – Telegraf leitet die erfassten Metriken per HTTP POST an den NetCrunch Telemetry Node weiter.
- NetCrunch Processing – Der Telemetry Node ordnet eingehende Metriken zu und speichert sie als Zähler oder Alarmstatus.
Überwachungsmethoden
Das Azure Monitor input plugin unterstützt drei Erfassungsmethoden:
Ressourcenziel
Erfasst Metriken bestimmter Ressourcen anhand ihrer Ressourcen-ID. Diese Methode eignet sich für die Überwachung einzelner Ressourcen.
[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/<group>/providers/Microsoft.Compute/virtualMachines/<vm-name>" metrics = ["Percentage CPU", "Available Memory Bytes"] aggregations = ["Average", "Maximum"]
Ressourcengruppenziel
Erfasst Metriken aller Ressourcen eines bestimmten Typs innerhalb einer Ressourcengruppe.
[[inputs.azure_monitor.resource_group_target]] resource_group = "production-rg"[[inputs.azure_monitor.resource_group_target.resource]] resource_type = "Microsoft.Compute/virtualMachines" metrics = ["Percentage CPU", "Available Memory Bytes"] aggregations = ["Average"]
Abonnementziel
Erfasst Metriken aller Ressourcen eines bestimmten Typs im gesamten Abonnement.
[[inputs.azure_monitor.subscription_target]] resource_type = "Microsoft.Compute/virtualMachines" metrics = ["Percentage CPU"] aggregations = ["Average"]
Unterstützte Azure-Ressourcen
Das Azure Monitor plugin kann Metriken von jedem Azure-Ressourcentyp erfassen, der Metriken über die Azure Monitor API bereitstellt. Zu den häufig verwendeten Ressourcentypen gehören:
Compute-Ressourcen
- Virtual Machines:
Microsoft.Compute/virtualMachines - Virtual Machine Scale Sets:
Microsoft.Compute/virtualMachineScaleSets - App Services:
Microsoft.Web/sites - Azure Functions:
Microsoft.Web/sites - Container Instances:
Microsoft.ContainerInstance/containerGroups - Kubernetes Service:
Microsoft.ContainerService/managedClusters
Speicherressourcen
- Storage Accounts:
Microsoft.Storage/storageAccounts - Blob Storage:
Microsoft.Storage/storageAccounts/blobServices - File Storage:
Microsoft.Storage/storageAccounts/fileServices - Queue Storage:
Microsoft.Storage/storageAccounts/queueServices - Table Storage:
Microsoft.Storage/StorageAccounts/tableServices
Datenbankressourcen
- SQL Database:
Microsoft.Sql/servers/databases - SQL Managed Instance:
Microsoft.Sql/managedInstances - Cosmos DB:
Microsoft.DocumentDB/databaseAccounts - MySQL Database:
Microsoft.DBforMySQL/servers - PostgreSQL Database:
Microsoft.DBforPostgreSQL/servers - Redis Cache:
Microsoft.Cache/redis
Netzwerkressourcen
- Load Balancer:
Microsoft.Network/loadBalancers - Application Gateway:
Microsoft.Network/applicationGateways - Virtual Network Gateway:
Microsoft.Network/virtualNetworkGateways - ExpressRoute Circuit:
Microsoft.Network/expressRouteCircuits - Public IP Address:
Microsoft.Network/publicIPAddresses - Network Interface:
Microsoft.Network/networkInterfaces
Integrationsressourcen
- Service Bus:
Microsoft.ServiceBus/namespaces - Event Hub:
Microsoft.EventHub/namespaces - Event Grid:
Microsoft.EventGrid/topics - Logic Apps:
Microsoft.Logic/workflows
Analytics-Ressourcen
- Data Factory:
Microsoft.DataFactory/factories - Stream Analytics:
Microsoft.StreamAnalytics/streamingjobs - Synapse Analytics:
Microsoft.Synapse/workspaces
Überwachungsressourcen
- Application Insights:
Microsoft.Insights/components - Log Analytics Workspace:
Microsoft.OperationalInsights/workspaces
Eine vollständige Liste der unterstützten Ressourcen und der verfügbaren Metriken finden Sie in der Dokumentation zu den von Azure Monitor unterstützten Metriken.
Azure-Konfiguration
Service Principal erstellen
Das Azure Monitor input plugin erfordert eine Authentifizierung über einen service principal.
- Registrieren Sie eine Anwendung in Azure Active Directory
- Erstellen Sie ein Client Secret
- Weisen Sie der Anwendung auf Abonnement- oder Ressourcengruppenebene die Rolle Monitoring Reader zu
Erforderliche Informationen: - Tenant ID - Client ID - Client Secret - Subscription ID
Telegraf-Konfiguration
Die primäre Konfigurationsdatei ist /etc/telegraf/telegraf.conf.
Grundlegende Konfiguration
[agent] interval = "10m" flush_interval = "10m" metric_buffer_limit = 10000 debug = false quiet = true[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"
[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachines/<vm-name>"
metrics = [ "Percentage CPU", "Available Memory Bytes", "Network In Total", "Network Out Total", "Disk Read Bytes", "Disk Write Bytes", "Disk Read Operations/Sec", "Disk Write Operations/Sec", "OS Disk Queue Depth", "Data Disk Queue Depth" ] aggregations = ["Average", "Maximum", "Minimum"][[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json" timeout = "30s"
Konfigurationsparameter
Agent-Abschnitt:
interval– Häufigkeit der Metrikerfassungflush_interval– Wie häufig Daten an Ausgaben gesendet werdenmetric_buffer_limit– Maximale Anzahl nicht geschriebener Metriken pro Ausgabedebug– Detaillierte Protokollierung aktivierenquiet– Nachrichten ohne Fehler unterdrücken
Azure Monitor Input:
tenant_id– Azure-Tenant-Bezeichnerclient_id– Client-Bezeichner des Service Principalclient_secret– Secret des Service Principalsubscription_id– Azure-Abonnementbezeichnerresource_id– Vollständiger Azure-Ressourcenbezeichnermetrics– Liste der zu erfassenden Metrikenaggregations– Methoden zur Datenaggregation (Average, Maximum, Minimum, Total, Count)
HTTP Output:
url– NetCrunch Telemetry Node-Endpunktmethod– HTTP-Methode (POST)data_format– Ausgabeformat (JSON)content_encoding– Codierungstyptimeout– Zeitüberschreitung der Anforderungheaders– HTTP-Header einschließlich des Inhaltstyps
Erfasste Metriken
Das Azure Monitor input plugin erfasst die folgenden VM-Metriken:
CPU-Metriken
Percentage CPU– CPU-Auslastung in Prozent
Speichermetriken
Available Memory Bytes– Verfügbarer physischer Speicher in Byte
Netzwerkmetriken
Network In Total– Gesamtzahl der über alle Netzwerkschnittstellen empfangenen ByteNetwork Out Total– Gesamtzahl der über alle Netzwerkschnittstellen übertragenen Byte
Datenträger-E/A-Metriken
Disk Read Bytes– Pro Sekunde vom Datenträger gelesene ByteDisk Write Bytes– Pro Sekunde auf den Datenträger geschriebene ByteDisk Read Operations/Sec– Lese-IOPSDisk Write Operations/Sec– Schreib-IOPS
Datenträgerwarteschlangenmetriken
OS Disk Queue Depth– Tiefe der Datenträgerwarteschlange des BetriebssystemsData Disk Queue Depth– Tiefe der Datenträgerwarteschlange des Datenträgers
Konfigurationsbeispiele für andere Azure-Ressourcen
Azure Storage Account
[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account>" metrics = [ "UsedCapacity", "Transactions", "Ingress", "Egress", "SuccessServerLatency", "SuccessE2ELatency", "Availability" ] aggregations = ["Average", "Total"]
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor02@node101/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Azure SQL Database
[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/<rg-name>/providers/Microsoft.Sql/servers/<server>/databases/<database>" metrics = [ "cpu_percent", "physical_data_read_percent", "log_write_percent", "dtu_consumption_percent", "storage_percent", "connection_successful", "connection_failed", "blocked_by_firewall" ] aggregations = ["Average", "Maximum"]
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor03@node102/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Azure Kubernetes Service
[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/<rg-name>/providers/Microsoft.ContainerService/managedClusters/<cluster-name>" metrics = [ "node_cpu_usage_percentage", "node_memory_working_set_percentage", "node_disk_usage_percentage", "node_network_in_bytes", "node_network_out_bytes" ] aggregations = ["Average"]
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor04@node103/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Überwachung aller VMs in einer Ressourcengruppe
[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_group_target]] resource_group = "production-rg"
[[inputs.azure_monitor.resource_group_target.resource]] resource_type = "Microsoft.Compute/virtualMachines" metrics = ["Percentage CPU", "Available Memory Bytes", "Network In Total", "Network Out Total"] aggregations = ["Average", "Maximum"][[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor05@node104/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Erweiterte Konfiguration
Mehrere Virtual Machines
Überwachen Sie mehrere Azure-VMs:
[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/rg-prod/providers/Microsoft.Compute/virtualMachines/vm-web-01" metrics = ["Percentage CPU", "Available Memory Bytes"] aggregations = ["Average"]
[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/rg-prod/providers/Microsoft.Compute/virtualMachines/vm-db-01" metrics = ["Percentage CPU", "Available Memory Bytes", "Disk Read Bytes", "Disk Write Bytes"] aggregations = ["Average", "Maximum"]
Mehrere Ausgabeziele
Senden Sie Daten an mehrere NetCrunch-Instanzen:
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json" timeout = "30s"[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-002@sensor02@node200/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json" timeout = "30s"
Optimierung der Ressourcennutzung
Für umfangreiche Bereitstellungen:
[agent] interval = "15m" flush_interval = "15m" metric_buffer_limit = 5000 debug = false
Längere Intervalle reduzieren Azure-API-Aufrufe und den Netzwerkverkehr.
Lokale Systemmetriken
Telegraf kann gleichzeitig lokale Systemmetriken vom Host erfassen, auf dem der Agent ausgeführt wird.
Beispiel für eine kombinierte Konfiguration
[agent] interval = "60s" flush_interval = "60s"
# Azure VM metrics[[inputs.azure_monitor]] tenant_id = "<your-tenant-id>" client_id = "<your-client-id>" client_secret = "<your-client-secret>" subscription_id = "<your-subscription-id>"[[inputs.azure_monitor.resource_target]] resource_id = "resourceGroups/rg-prod/providers/Microsoft.Compute/virtualMachines/vm-01" metrics = ["Percentage CPU", "Available Memory Bytes"] aggregations = ["Average"]
# Local system metrics[[inputs.cpu]] percpu = true totalcpu = true[[inputs.mem]]
[[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs", "devfs"]
[[inputs.diskio]]
[[inputs.net]]
# Send to NetCrunch[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Diese Konfiguration erfasst sowohl Azure-VM-Metriken als auch lokale Systemmetriken vom Telegraf-Host.
Anwendungsfälle
Überwachung der Cloud-Infrastruktur
- Überwachen Sie Azure-Ressourcen aus den Bereichen Compute, Speicher, Datenbanken und Netzwerkdienste, ohne dass eine direkte Netzwerkverbindung von lokalen NetCrunch-Servern zu Azure erforderlich ist.
Hybride Cloud-Umgebungen
- Erfassen Sie Metriken sowohl von Azure-Ressourcen als auch von lokalen Systemen mithilfe einer einzigen Telegraf-Instanz, die in einem hybriden Netzwerk bereitgestellt wird.
Überwachung mehrerer Abonnements
- Stellen Sie Telegraf-Agenten bereit, um Ressourcen in mehreren Azure-Abonnements mit unterschiedlichen Service Principals und entsprechenden Berechtigungen zu überwachen.
Überwachung von Ressourcengruppen
- Überwachen Sie alle Ressourcen eines bestimmten Typs innerhalb einer Ressourcengruppe und schließen Sie automatisch neue Ressourcen ein, sobald diese erstellt werden.
Überwachung mehrerer Ressourcentypen
- Kombinieren Sie die Überwachung verschiedener Azure-Ressourcentypen (VMs, Datenbanken, Speicher und Netzwerke) in einer einzigen Telegraf-Konfiguration und erhalten Sie so eine zentrale Übersicht.
Kostengünstige Überwachung
- Reduzieren Sie Azure-API-Kosten, indem Sie Erfassungsintervalle steuern und nur die benötigten Metriken auswählen. Die Azure Monitor API hat ein Leselimit von 12.000 Anforderungen pro Stunde.
Zusammenfassung
Telegraf bietet eine native Integration mit Azure Monitor zur Erfassung von Metriken aus jedem Azure-Ressourcentyp. Das Plugin unterstützt drei Erfassungsmethoden: Ressourcenziel, Ressourcengruppenziel und Abonnementziel. Daten werden zur zentralen Überwachung und Alarmierung an NetCrunch Telemetry Nodes weitergeleitet.
Dieser Ansatz ermöglicht eine umfassende Cloud-Überwachung, ohne dass VPN-Verbindungen oder direkter Netzwerkzugriff von NetCrunch auf Azure erforderlich sind. Das Plugin kann Compute-Ressourcen, Storage Accounts, Datenbanken, Netzwerkdienste und andere Azure-Ressourcen über eine einheitliche Konfiguration überwachen.
Wichtige Funktionen: - Native Integration mit der Azure Monitor API - Unterstützung aller Azure-Ressourcentypen mit bereitgestellten Metriken - Drei Erfassungsmethoden: Ressourcen-, Ressourcengruppen- und Abonnementebene - Konfigurierbare Erfassungsintervalle zur Verwaltung von API-Ratenbegrenzungen - Zentrale Überwachung durch NetCrunch Telemetry Nodes
- Monitoring with Telegraf
Use Telegraf, the open-source metrics agent, to collect from systems NetCrunch does not poll directly and push the results into NetCrunch as ordinary counters and statuses.
- Überwachung des Linux Sysctl Filesystem über Telegraf in NetCrunch
Dieses Thema erläutert, wie Linux-Kernel-Dateisystemparameter mit Telegraf überwacht und erfasste Metriken an NetCrunch Telemetry Nodes gesendet werden. Das Linux Sysctl Filesystem Input-Plugin liest Werte aus dem Verzeichnis proc sys fs und leitet sie mithilfe des HTTP Output-Plugins an NetCrunch weiter.
- MQTT-Telemetrie über Telegraf in NetCrunch
In diesem Thema wird erläutert, wie über MQTT veröffentlichte Systemmetriken erfasst, mit Telegraf verarbeitet und mithilfe von JSON-basierter Telemetrie an einen NetCrunch Telemetry Node-Endpunkt weitergeleitet werden.
- SQL Server-Überwachung über Telegraf in NetCrunch
Dieses Thema erklärt, wie Telegraf für die Erfassung von Microsoft SQL Server-Metriken und deren Weiterleitung an einen NetCrunch Telemetry Node-Endpunkt mithilfe JSON-basierter Telemetriedaten konfiguriert wird. Es behandelt die Einrichtung des SQL Server-Logins, Verbindungszeichenfolgen, die Telegraf-Eingabekonfiguration und unterstützte Metriktypen.