Diagnoseprotokolle: Azure Content Delivery Network

Wichtig

Azure CDN Standard von Microsoft (Klassisch) unterstützt keine Profilerstellung, neue Domänen-Onboarding oder verwaltete Zertifikate und wird auf September 30, 2027 eingestellt. Um Dienstunterbrechungen zu vermeiden, migrieren Sie zu Azure Front Door Standard oder Premium. Weitere Informationen finden Sie unter Azure CDN Standard von Microsoft (klassisch) Einstellung.

Mit Azure-Diagnoseprotokollen können Sie Daten der Basisanalyse anzeigen und diese an mindestens einem Ziel speichern, z. B.:

  • Azure-Speicherkonto
  • Log Analytics-Arbeitsbereich
  • Azure Event Hubs

Diese Funktion steht für Endpunkte des Inhaltsübermittlungs-Netzwerks für alle Tarife zur Verfügung.

Mit den Diagnoseprotokollen können Sie grundlegende Nutzungsmetriken von Ihrem Content Delivery Network-Endpunkt in verschiedene Arten von Quellen exportieren, so dass Sie diese auf individuelle Weise nutzen können. Sie können die folgenden Arten von Datenexport durchführen:

  • Exportieren von Daten in Blobspeicher, Exportieren in eine CSV-Datei und Generieren von Diagrammen in Excel
  • Exportieren von Daten nach Event Hubs und Korrelieren mit Daten von anderen Azure-Diensten
  • Daten in Azure Monitor-Protokolle exportieren und Daten im eigenen Log Analytics-Arbeitsbereich anzeigen

Für die folgenden Schritte ist ein Azure Content Delivery Network-Profil erforderlich. Lesen Sie das Erstellen eines Azure Content Delivery Network-Profils und -Endpunkts, bevor Sie fortfahren.

Aktivieren der Protokollierung über das Azure-Portal

Führen Sie die folgenden Schritte aus, um die Protokollierung für Ihren Azure Content Delivery Network-Endpunkt zu aktivieren:

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie im Azure-Portal zu Alle Ressourcen>Ihr CDN-Profil.

  3. Wählen Sie den Netzwerkendpunkt für die Inhaltsübermittlung aus, für den Sie Diagnoseprotokolle aktivieren möchten.

  4. Wählen Sie im Abschnitt Überwachung die Option Diagnoseprotokolle aus.

Aktivieren der Protokollierung mit Azure Storage

Führen Sie die folgenden Schritte aus, um ein Speicherkonto zum Speichern der Protokolle zu verwenden:

Hinweis

Zur Durchführung dieser Schritte ist ein Speicherkonto erforderlich. Weitere Informationen finden Sie unter: Weitere Informationen finden Sie unter Erstellen eines Azure Storage-Kontos .

  1. Geben Sie für Name der Diagnoseeinstellung einen Namen für Ihre Diagnoseprotokolleinstellungen ein.

  2. Wählen Sie In einem Speicherkonto archivieren und dann CoreAnalytics.

  3. Wählen Sie für Beibehaltungsdauer (Tage) die Anzahl der Aufbewahrungstage. Bei einer Aufbewahrung von 0 Tagen werden die Protokolle dauerhaft gespeichert.

  4. Wählen Sie das Abonnement und Speicherkonto für die Protokolle aus.

  5. Wählen Sie Speichern.

An Log Analytics senden

Führen Sie die folgenden Schritte aus, um Log Analytics für die Protokolle zu verwenden:

Hinweis

Zum Ausführen dieser Schritte ist ein Log Analytics-Arbeitsbereich erforderlich. Weitere Informationen finden Sie unter: Weitere Informationen finden Sie unter Erstellen eines Log Analytics-Arbeitsbereichs im Azure-Portal .

  1. Geben Sie für Name der Diagnoseeinstellung einen Namen für Ihre Diagnoseprotokolleinstellungen ein.

  2. Wählen Sie An Log Analytics senden und anschließend CoreAnalytics aus.

  3. Wählen Sie das Abonnement und den Log Analytics-Arbeitsbereich für die Protokolle aus.

     Screenshot: Diagnoseprotokolle – Log Analytics.

  4. Wählen Sie Speichern.

An einen Event Hub streamen

Gehen Sie folgendermaßen vor, um einen Event Hub für die Protokolle zu verwenden:

Hinweis

Zur Durchführung dieser Schritte ist ein Event Hub erforderlich. Weitere Informationen finden Sie unter: Schnellstart: Erstellen eines Event Hubs mithilfe des Azure-Portals .

  1. Geben Sie für Name der Diagnoseeinstellung einen Namen für Ihre Diagnoseprotokolleinstellungen ein.

  2. Wählen Sie An einen Event Hub streamen und anschließend CoreAnalytics aus.

  3. Wählen Sie das Abonnement und den Event Hub-Namespace für die Protokolle aus.

    Screenshot: Diagnoseprotokolle – Event Hub.

  4. Wählen Sie Speichern.

Aktivieren der Protokollierung mit PowerShell

Das folgende Beispiel zeigt, wie Sie Diagnoseprotokolle über die Azure PowerShell-Cmdlets aktivieren.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Aktivieren von Diagnoseprotokollen in einem Speicherkonto

  1. Melden Sie sich bei Azure PowerShell an:

    Connect-AzAccount 
    
  2. Geben Sie die folgenden Befehle ein, um Diagnoseprotokolle in einem Speicherkonto zu aktivieren. Ersetzen Sie die Variablen durch Ihre Werte:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $storageacct = <your-storage-account-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $storage = Get-AzStorageAccount -ResourceGroupName $rsg -Name $storageacct
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -StorageAccountId $storage.id -Enabled $true -Categories CoreAnalytics
    

Aktivieren von Diagnoseprotokollen für den Log Analytics-Arbeitsbereich

  1. Melden Sie sich bei Azure PowerShell an:

    Connect-AzAccount 
    
  2. Geben Sie diese Befehle ein, um Diagnoseprotokolle für einen Log Analytics-Arbeitsbereich zu aktivieren. Ersetzen Sie die Variablen durch Ihre Werte:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $workspacename = <your-log-analytics-workspace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $rsg -Name $workspacename
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -WorkspaceId $workspace.ResourceId -Enabled $true -Categories CoreAnalytics
    

Aktivieren von Diagnoseprotokollen für den Event Hub-Namespace

  1. Melden Sie sich bei Azure PowerShell an:

    Connect-AzAccount 
    
  2. Geben Sie diese Befehle ein, um Diagnoseprotokolle für einen Log Analytics-Arbeitsbereich zu aktivieren. Ersetzen Sie die Variablen durch Ihre Werte:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $eventhubname = <your-event-hub-namespace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -EventHubName $eventhubname -Enabled $true -Categories CoreAnalytics
    

Verwendung von Diagnoseprotokollen aus Azure Storage

Dieser Abschnitt beschreibt das Schema der Content Delivery Network Core Analytics, die Organisation in einem Azure Storage-Konto und bietet einen Beispielcode zum Herunterladen der Protokolle in eine CSV-Datei.

Verwenden des Microsoft Azure Storage-Explorers

Informationen zum Herunterladen des Tools finden Sie unter Azure Storage-Explorer. Nachdem Sie die Software heruntergeladen und installiert haben, konfigurieren Sie diese so, dass sie dasselbe Azure Speicherkonto verwendet, das als Ziel für die Diagnoseprotokolle des Content Delivery Network konfiguriert wurde.

  1. Öffnen Sie den Microsoft Azure Storage-Explorer.
  2. Ermitteln Sie das Speicherkonto.
  3. Erweitern Sie den Blob-Container-Knoten unter dem Speicherkonto.
  4. Wählen Sie den Container mit dem Namen insights-logs-coreanalytics aus.
  5. Im Bereich auf der rechten Seite werden Ergebnisse angezeigt. Es wird mit der ersten Ebene begonnen: resourceId= . Wählen Sie weiterhin jede Ebene aus, bis Sie die Datei PT1H.json gefunden haben. Eine Erläuterung des Pfads finden Sie unter Blob-Pfadformat.
  6. Jede Blob PT1H.json-Datei stellt die Analyseprotokolle für eine Stunde für einen bestimmten Content Delivery Network-Endpunkt oder seine benutzerdefinierte Domain dar.
  7. Das Schema der Inhalte dieser JSON-Datei wird im Abschnitt „Schema der Basisanalyseprotokolle“ beschrieben.

Blobpfadformat

Kernanalyseprotokolle werden jede Stunde generiert, und die Daten werden als JSON-Nutzlast in einem einzelnen Azure Blob gesammelt und gespeichert. Das Storage-Explorer-Tool interpretiert „/“ als Verzeichnistrennzeichen und zeigt die Hierarchie an. Der Pfad zum Azure-Blob wird angezeigt, als ob es eine hierarchische Struktur gebe, und stellt den Blobnamen dar. Für den Namen des Blobs wird die folgende Benennungskonvention verwendet:

resourceId=/SUBSCRIPTIONS/{Subscription Id}/RESOURCEGROUPS/{Resource Group Name}/PROVIDERS/MICROSOFT.CDN/PROFILES/{Profile Name}/ENDPOINTS/{Endpoint Name}/ y=/m=/d=/h=/m=/PT1H.json

Beschreibung der Felder:

Wert BESCHREIBUNG
Abonnement-ID ID des Azure-Abonnements im GUID-Format (Globally Unique Identifier).
Ressourcengruppenname Name der Ressourcengruppe, zu der die Netzwerkressourcen für die Inhaltsübermittlung gehören.
Profilname Name des Netzwerkprofils für die Inhaltsübermittlung
Endpunktname Name des Netzwerkendpunkts für die Inhaltsübermittlung
Jahr Vierstellige Jahresangabe, z.B. 2017
Monat Zweistellige Darstellung der Monatszahl. 01 = Januar bis 12 = Dezember
Tag Zweistellige Darstellung des Tages des Monats
PT1H.json Tatsächliche JSON-Datei, in der die Analysedaten gespeichert sind

Exportieren der Basisanalysedaten in eine CSV-Datei

Für den Zugriff auf Basisanalysen wird Beispielcode für ein Tool bereitgestellt. Mit diesem Tool ist das Herunterladen der JSON-Dateien in einem flachen Dateiformat mit Kommas als Trennzeichen möglich. Diese Datei kann dann zum Erstellen von Diagrammen oder anderen Aggregationen verwendet werden.

Sie können das Tool wie folgt verwenden:

  1. Nutzen Sie den GitHub-Link: https://github.com/Azure-Samples/azure-cdn-samples/tree/master/CoreAnalytics-ExportToCsv
  2. Laden Sie den Code herunter.
  3. Befolgen Sie die Anleitung zum Kompilieren und Konfigurieren.
  4. Führen Sie das Tool aus.
  5. In der sich ergebenden CSV-Datei werden die Analysedaten in einer einfachen flachen Hierarchie angezeigt.

Protokolldatenverzögerungen

Microsoft-Protokolldaten werden um bis zu eine Stunde verzögert. Diese Verzögerung liegt an der benötigten Zeit zum Verarbeiten und Speichern der Daten.

Diagnosedateitypen für die Kernanalyse des Content-Delivery-Netzwerks

Microsoft bietet derzeit nur Kernanalytik-Protokolle an, die Metriken mit HTTP-Antwortstatistiken und Ausgangsstatistiken enthalten, wie sie von den POPs/Edges des Content Delivery Network gesehen werden.

Details zu Basisanalysemetriken

Die folgende Tabelle enthält eine Liste mit den Metriken, die in den Basisanalyseprotokollen verfügbar sind.

Nicht alle Metriken sind für alle Anbieter verfügbar, aber die Unterschiede sind nur minimal. In dieser Tabelle ist jeweils auch angegeben, ob eine Metrik von einem Anbieter verfügbar ist. Die Metriken sind nur für die Endpunkte des Content Delivery Network verfügbar, über die Datenverkehr stattfindet.

Metrik BESCHREIBUNG
RequestCountTotal Gesamtzahl der Treffer während dieses Zeitraums
RequestCountHttpStatus2xx Anzahl aller Anforderungen, die zum HTTP-Code 2xx geführt haben (z.B. 200, 202)
RequestCountHttpStatus3xx Anzahl aller Anforderungen, die zum HTTP-Code 3xx geführt haben (z.B. 300, 302)
AnzahlDerAnfragenHttpStatus4xx Anzahl aller Anforderungen, die zum HTTP-Code 4xx geführt haben (z.B. 400, 404)
AnzahlDerAnfragenHttpStatus5xx Anzahl aller Anforderungen, die zum HTTP-Code 5xx geführt haben (z.B. 500, 504)
AnzahlDerAnfragenHTTPStatusAndere Anzahl aller anderen HTTP-Codes (außerhalb des Bereichs von 2xx bis 5xx)
RequestCountHttpStatus200 Anzahl aller Anforderungen, die zu einer Antwort mit dem HTTP-Code 200 geführt haben
AnzahlAnfragenHttpStatus206 Anzahl aller Anforderungen, die zu einer Antwort mit dem HTTP-Code 206 geführt haben
RequestCountHttpStatus302 Anzahl aller Anforderungen, die zu einer Antwort mit dem HTTP-Code 302 geführt haben
AnzahlAnfragenHttpStatus304 Anzahl aller Anforderungen, die zu einer Antwort mit dem HTTP-Code 304 geführt haben
RequestCountHttpStatus404 Anzahl aller Anforderungen, die zu einer Antwort mit dem HTTP-Code 404 geführt haben
RequestCountCacheHit Anzahl aller Anforderungen, die zu einem Cache-Treffer geführt haben. Das Objekt wurde direkt vom POP für den Client bereitgestellt.
AnzahlDerCacheFehlermeldungen Anzahl aller Anforderungen, die zu einem Cachefehler geführt haben. Ein Cachefehler bedeutet, dass das Objekt nicht auf dem POP gefunden wurde, der die geringste Entfernung zum Client aufweist, und vom Ursprungsserver abgerufen wurde.
RequestCountCacheNoCache Anzahl aller Anfragen auf ein Asset, die aufgrund einer Benutzerkonfiguration am Netzwerkrand nicht zwischengespeichert wurden.
RequestCountCacheUncacheable Anzahl aller Anforderungen an Objekte, bei denen durch die Header „Cache-Control“ und „Expires“ des Objekts eine Zwischenspeicherung verhindert wird. Diese Anzahl zeigt an, dass keine Zwischenspeicherung auf einem POP oder durch den HTTP-Client erfolgen soll.
EgressTotal Datenübertragung in ausgehender Richtung in GB
EgressHttpStatus2xx Datenübertragung in ausgehender Richtung* für Antworten mit dem HTTP-Statuscode 2xx in GB
EgressHttpStatus3xx Datenübertragung in ausgehender Richtung für Antworten mit dem HTTP-Statuscode 3xx in GB
EgressHttpStatus4xx Datenübertragung in ausgehender Richtung für Antworten mit dem HTTP-Statuscode 4xx in GB
EgressHttpStatus5xx Datenübertragung in ausgehender Richtung für Antworten mit dem HTTP-Statuscode 5xx in GB
EgressHttpStatusAndere Datenübertragung in ausgehender Richtung für Antworten mit anderen HTTP-Statuscodes in GB
EgressCacheHit Ausgehende Datenübertragung für Antworten, die direkt aus dem Netzwerkcache für die Inhaltsübermittlung im Inhaltsübermittlungs-Netzwerk-POPs/Edges übermittelt wurden.
EgressCacheMiss Datenübertragung in ausgehender Richtung für Antworten, die nicht auf dem nächstgelegenen POP-Server gefunden und daher vom Ursprungsserver abgerufen wurden
EgressCacheNoCache Ausgehende Datenübertragung für Assets, die aufgrund einer Benutzereinstellung am Edge nicht zwischengespeichert werden können.
EgressCacheUncacheable Datenübertragung in ausgehender Richtung für Objekte, bei denen durch die Header „Cache-Control“ und/oder „Expires“ eine Zwischenspeicherung verhindert wird. Es wird angegeben, dass keine Zwischenspeicherung auf einem POP oder durch den HTTP-Client erfolgen soll.

*Ausgehende Datenübertragung bezieht sich auf Datenverkehr, der von POP-Servern des Inhaltsübermittlungs-Netzwerks an den Client übermittelt wird.

Schema der Basisanalyseprotokolle

Alle Protokolle werden im JSON-Format gespeichert, und jeder Eintrag enthält Zeichenfolgenfelder gemäß dem folgenden Schema:

    "records": [
        {
            "time": "2017-04-27T01:00:00",
            "resourceId": "<ARM Resource Id of the CDN Endpoint>",
            "operationName": "Microsoft.Cdn/profiles/endpoints/contentDelivery",
            "category": "CoreAnalytics",
            "properties": {
                "DomainName": "<Name of the domain for which the statistics is reported>",
                "RequestCountTotal": integer value,
                "RequestCountHttpStatus2xx": integer value,
                "RequestCountHttpStatus3xx": integer value,
                "RequestCountHttpStatus4xx": integer value,
                "RequestCountHttpStatus5xx": integer value,
                "RequestCountHttpStatusOthers": integer value,
                "RequestCountHttpStatus200": integer value,
                "RequestCountHttpStatus206": integer value,
                "RequestCountHttpStatus302": integer value,
                "RequestCountHttpStatus304": integer value,
                "RequestCountHttpStatus404": integer value,
                "RequestCountCacheHit": integer value,
                "RequestCountCacheMiss": integer value,
                "RequestCountCacheNoCache": integer value,
                "RequestCountCacheUncacheable": integer value,
                "RequestCountCacheOthers": integer value,
                "EgressTotal": double value,
                "EgressHttpStatus2xx": double value,
                "EgressHttpStatus3xx": double value,
                "EgressHttpStatus4xx": double value,
                "EgressHttpStatus5xx": double value,
                "EgressHttpStatusOthers": double value,
                "EgressCacheHit": double value,
                "EgressCacheMiss": double value,
                "EgressCacheNoCache": double value,
                "EgressCacheUncacheable": double value,
                "EgressCacheOthers": double value,
            }
        }

    ]
}

Hierbei steht time für die Startzeit der Stundengrenze, für die die Statistik gemeldet wird. Eine Metrik, die von einem Content Delivery Network-Anbieter nicht unterstützt wird, ergibt anstelle eines Double- oder Integer-Werts einen Nullwert. Mit diesem NULL-Wert wird das Fehlen einer Metrik angegeben. Dies ist ein anderer Wert als der Wert 0. Auf dem Endpunkt ist pro Domäne ein Satz mit diesen Metriken konfiguriert.

Beispiele für Eigenschaften:

{
     "DomainName": "azurecdntest.azureedge.net",
     "RequestCountTotal": 480,
     "RequestCountHttpStatus2xx": 480,
     "RequestCountHttpStatus3xx": 0,
     "RequestCountHttpStatus4xx": 0,
     "RequestCountHttpStatus5xx": 0,
     "RequestCountHttpStatusOthers": 0,
     "RequestCountHttpStatus200": 480,
     "RequestCountHttpStatus206": 0,
     "RequestCountHttpStatus302": 0,
     "RequestCountHttpStatus304": 0,
     "RequestCountHttpStatus404": 0,
     "RequestCountCacheHit": null,
     "RequestCountCacheMiss": null,
     "RequestCountCacheNoCache": null,
     "RequestCountCacheUncacheable": null,
     "RequestCountCacheOthers": null,
     "EgressTotal": 0.09,
     "EgressHttpStatus2xx": null,
     "EgressHttpStatus3xx": null,
     "EgressHttpStatus4xx": null,
     "EgressHttpStatus5xx": null,
     "EgressHttpStatusOthers": null,
     "EgressCacheHit": null,
     "EgressCacheMiss": null,
     "EgressCacheNoCache": null,
     "EgressCacheUncacheable": null,
     "EgressCacheOthers": null
}

Weitere Ressourcen