Journaux de diagnostic – Azure Content Delivery Network

Les journaux de diagnostic Azure permettent d’afficher l’analytique principale et de l’enregistrer dans une ou plusieurs destinations, dont les suivantes :

  • Compte de Stockage Azure
  • Espace de travail Log Analytics
  • Azure Event Hubs

Cette fonctionnalité est disponible sur les points de terminaison de réseau de distribution de contenu à tous les niveaux tarifaires.

Les journaux de diagnostic vous permettent d’exporter des métriques d’utilisation de base de votre point de terminaison de réseau de distribution de contenu vers différents types de sources afin de pouvoir les utiliser de façon personnalisée. Voici les types d’exportation de données que vous pouvez effectuer :

  • Exporter des données vers un stockage d’objets blob, exporter au format CSV et générer des graphiques dans Excel.
  • Exporter des données vers des hubs d’événements et mettre les données en corrélation avec d’autres services Azure.
  • Exporter des données vers des journaux Azure Monitor et afficher les données dans votre propre espace de travail Log Analytics

Un profil Azure Content Delivery Network est nécessaire pour les étapes suivantes. Reportez-vous à Créer un profil et un point de terminaison Azure Content Delivery Network avant de continuer.

Activation de la journalisation avec le portail Azure

Procédez comme suit pour activer la journalisation pour votre point de terminaison Azure Content Delivery Network :

  1. Connectez-vous au portail Azure.

  2. Sur le Portail Azure, accédez à Toutes les ressources>votre-profil-cdn.

  3. Sélectionnez le point de terminaison de réseau de distribution de contenu pour lequel vous souhaitez activer les journaux de diagnostic :

    Capture d’écran de la sélection du point de terminaison de réseau de distribution de contenu.

  4. Dans la section Supervision, sélectionnez Journaux de diagnostic :

    Capture d’écran du bouton Journaux de diagnostic dans le menu Monitoring.

Activation de la journalisation avec Stockage Azure

Pour utiliser un compte de stockage afin de stocker les journaux d’activité, effectuez les étapes suivantes :

Notes

Un compte de stockage est nécessaire pour effectuer ces étapes. Consultez : Créer un compte Stockage Azure pour plus d’informations.

  1. Pour Nom des paramètres de diagnostic, entrez un nom pour les paramètres du journal de diagnostic.

  2. Sélectionnez Archiver dans un compte de stockage, puis CoreAnalytics.

  3. Dans le champ Rétention (jours) , choisissez le nombre de jours de rétention. Si la valeur zéro est appliquée à la rétention, les journaux d’activité sont stockés pour une durée indéfinie.

  4. Sélectionnez l’abonnement et le compte de stockage pour les journaux.

    Journaux de diagnostic – Stockage.

  5. Sélectionnez Enregistrer.

Envoyer à Log Analytics

Pour utiliser Log Analytics pour les journaux, suivez ces étapes :

Notes

Un espace de travail Log Analytics est nécessaire pour effectuer ces étapes. Consultez : Créer un espace de travail Log Analytics sur le portail Azure pour plus d’informations.

  1. Pour Nom des paramètres de diagnostic, entrez un nom pour les paramètres du journal de diagnostic.

  2. Sélectionnez Envoyer à Log Analytics, puis CoreAnalytics.

  3. Sélectionnez l’abonnement et l’espace de travail Log Analytics pour les journaux.

    Journaux de diagnostic – Log Analytics.

  4. Sélectionnez Enregistrer.

Diffuser vers un hub d’événements

Pour utiliser un hub d’événements pour les journaux, suivez ces étapes :

Notes

Un hub d’événements est nécessaire pour effectuer ces étapes. Consultez : Démarrage rapide : Créer un hub d’événements avec le portail Azure pour plus d’informations.

  1. Pour Nom des paramètres de diagnostic, entrez un nom pour les paramètres du journal de diagnostic.

  2. Sélectionnez Diffuser vers Event Hub, puis CoreAnalytics.

  3. Sélectionnez l’abonnement et l’espace de noms Event Hub pour les journaux.

    Journaux de diagnostic – Hub d’événements.

  4. Sélectionnez Enregistrer.

Activer la journalisation avec PowerShell

L’exemple suivant montre comment activer les journaux de diagnostic via les applets de commande Azure PowerShell.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Activer les journaux de diagnostic dans un compte de stockage

  1. Connectez-vous à Azure PowerShell :

    Connect-AzAccount 
    
  2. Pour activer les journaux de diagnostic dans un compte de stockage, entrez ces commandes. Remplacez les variables par vos valeurs :

    $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
    

Activer les journaux de diagnostic pour l’espace de travail Log Analytics

  1. Connectez-vous à Azure PowerShell :

    Connect-AzAccount 
    
  2. Pour activer les journaux de diagnostic pour un espace de travail Log Analytics, entrez ces commandes. Remplacez les variables par vos valeurs :

    $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
    

Activer les journaux de diagnostic pour l’espace de noms Event Hub

  1. Connectez-vous à Azure PowerShell :

    Connect-AzAccount 
    
  2. Pour activer les journaux de diagnostic pour un espace de travail Log Analytics, entrez ces commandes. Remplacez les variables par vos valeurs :

    $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
    

Utilisation des journaux de diagnostic à partir de Stockage Azure

Cette section décrit le schéma de l’analytique principale du réseau de distribution de contenu et l’organisation dans un compte de Stockage Azure, et fournit un exemple de code pour télécharger les journaux dans un fichier CSV.

Utilisation de l’explorateur de stockage Microsoft Azure

Pour télécharger l’outil, consultez Explorateur de stockage Azure. Après le téléchargement et l’installation du logiciel, configurez-le pour utiliser le même compte de Stockage Azure que celui qui a été configuré en tant que destination pour les journaux de diagnostic du réseau de distribution de contenu.

  1. Ouvrez l’explorateur de stockage Microsoft Azure
  2. Localiser le compte de stockage
  3. Développez le nœud Conteneurs d’objets Blob sous ce compte de stockage.
  4. Sélectionnez le conteneur nommé journaux-insights-coreanalytics.
  5. Les résultats s’affichent dans le volet droit, en commençant par le premier niveau, soir resourceId= . Continuez à sélectionner chaque niveau jusqu’à atteindre le fichier PT1H.json. Pour obtenir une explication sur le chemin, consultez Format du chemin des objets blob.
  6. Chaque fichier d’objet blob PT1H.json représente les journaux d’activité d’analyse pendant une heure pour un point de terminaison de réseau de distribution de contenu spécifique ou son domaine personnalisé.
  7. Le schéma du contenu de ce fichier JSON est décrit dans la section Schéma des journaux d’activité Core Analytics.

Format du chemin des objets blob

Les journaux d’activité Core Analytics sont générés toutes les heures et les données sont collectées et stockées dans un objet blob Azure unique sous forme de charge utile JSON. L’outil Explorateur de stockage interprète '/' comme un séparateur de répertoire et affiche la hiérarchie. Le chemin de l’objet blob Azure apparaît comme s’il existait une structure hiérarchique et représente le nom de l’objet blob. Ce nom d’objet blob suit la convention d’affectation de noms suivante :

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

Description des champs :

Valeur Description
Identifiant d’abonnement ID de l’abonnement Azure au format GUID (Global Unique Identifier, Identificateur global unique).
Nom du groupe de ressources Nom du groupe de ressources auquel appartiennent les ressources de réseau de distribution de contenu.
Nom de profil Nom du profil de réseau de distribution de contenu
Nom du point de terminaison Nom du point de terminaison de réseau de distribution de contenu
Year Représentation à quatre chiffres de l’année, par exemple, 2017
Month Représentation à deux chiffres du mois de l’année. 01 = Janvier ... 12 = Décembre
jour Représentation à deux chiffres du jour du mois
PT1H.json Fichier JSON où sont effectivement stockées les données d’analyse

Exportation des données de Core Analytics vers un fichier CSV

Pour accéder à l’analytique principale, un exemple de code pour un outil est fourni. Cet outil permet de télécharger les fichiers JSON dans un format de fichier plat avec séparation par virgules, qui peut être utilisé pour créer des graphiques ou autres agrégations.

Voici comment vous pouvez utiliser l’outil :

  1. Consultez le lien GitHub : https://github.com/Azure-Samples/azure-cdn-samples/tree/master/CoreAnalytics-ExportToCsv
  2. Téléchargez le code.
  3. Suivez les instructions pour la compilation et la configuration.
  4. Exécutez l’outil.
  5. Le fichier CSV résultant présente les données d’analyse dans une hiérarchie plate simple.

Retards des données de journal

Le tableau suivant présente les retards des données de journal pour Azure CDN Standard fourni par Microsoft et Azure CDN Standard/Premium fourni par Edgio.

Retards des données de journal Microsoft Retards des données de journal Edgio
Retard de 1 heure. Retard de 1 heure et possibilité de nécessiter jusqu’à 2 heures pour commencer à apparaître après l’achèvement de la propagation du point de terminaison.

Types de journaux de diagnostic pour l’analytique principale du réseau de distribution de contenu

Actuellement, Microsoft propose uniquement les journaux d’activité de l’analytique principale, qui contiennent les métriques affichant les statistiques de réponse HTTP et de sortie, comme dans les points de présence/périmètres du réseau de distribution de contenu.

Détails des métriques de Core Analytics

Le tableau suivant présente la liste des métriques disponibles dans les journaux de l’analytique principale pour :

  • Azure CDN Standard par Microsoft
  • Azure CDN Standard/Premium fourni par Edgio

Toutes les métriques ne sont pas disponibles auprès tous les fournisseurs, même si ces différences sont minimes. Ce tableau indique également si une métrique donnée est disponible à partir d’un fournisseur particulier. Les métriques sont disponibles uniquement pour les points de terminaison de réseau de distribution de contenu recevant du trafic.

Métrique Description Microsoft Edgio
RequestCountTotal Nombre total d’occurrences de requêtes pendant cette période. Oui Oui
RequestCountHttpStatus2xx Nombre total des requêtes ayant abouti à un code HTTP 2xx (par exemple, 200, 202). Oui Oui
RequestCountHttpStatus3xx Nombre total des requêtes ayant abouti à un code HTTP 3xx (par exemple, 300, 302). Oui Oui
RequestCountHttpStatus4xx Nombre total des requêtes ayant abouti à un code HTTP 4xx (par exemple, 400, 404). Oui Oui
RequestCountHttpStatus5xx Nombre total des requêtes ayant abouti à un code HTTP 5xx (par exemple, 500, 504). Oui Oui
RequestCountHttpStatusOthers Nombre total des autres codes HTTP (en dehors de 2xx-5xx). Oui Oui
RequestCountHttpStatus200 Nombre total des requêtes ayant abouti à un code HTTP 200. Oui Non
RequestCountHttpStatus206 Nombre total des requêtes ayant abouti à un code HTTP 206. Oui Non
RequestCountHttpStatus302 Nombre total des requêtes ayant abouti à un code HTTP 302. Oui Non
RequestCountHttpStatus304 Nombre total des requêtes ayant abouti à un code HTTP 304. Oui Non
RequestCountHttpStatus404 Nombre total des requêtes ayant abouti à un code HTTP 404. Oui Non
RequestCountCacheHit Nombre de toutes les requêtes qui ont abouti à un accès au cache. La ressource a été traitée directement du point de présence vers le client. Oui Oui
RequestCountCacheMiss Nombre de toutes les requêtes qui ont abouti à un échec de cache. Un échec de cache signifie que la ressource est introuvable sur le point de présence le plus proche du client et qu’elle a été récupérée à l’origine. Oui Oui
RequestCountCacheNoCache Nombre de requêtes vers une ressource qui sont empêchées d’être mises en cache en raison d’une configuration utilisateur sur le périmètre. Oui Oui
RequestCountCacheUncacheable Nombre de toutes les demandes envoyées aux ressources ne pouvant pas être mises en cache en raison de leurs en-têtes Cache-Control et Expires. Ce nombre indique qu’elles ne doivent pas être mises en cache sur un point de présence ou par le client HTTP. Oui Oui
RequestCountCacheOthers Nombre de toutes les demandes avec un état de cache non couvert par les métriques listées précédemment. Non Oui
EgressTotal Transfert de données sortantes en Go Oui Oui
EgressHttpStatus2xx Transfert de données sortantes* pour les réponses avec des codes d’état HTTP 2xx en Go. Oui Oui
EgressHttpStatus3xx Transfert de données sortantes pour les réponses avec des codes d’état HTTP 3xx en Go. Oui Oui
EgressHttpStatus4xx Transfert de données sortantes pour les réponses avec des codes d’état HTTP 4xx en Go. Oui Oui
EgressHttpStatus5xx Transfert de données sortantes pour les réponses avec des codes d’état HTTP 5xx en Go. Oui Oui
EgressHttpStatusOthers Transfert de données sortantes pour les réponses avec d’autres codes d’état HTTP en Go. Oui Oui
EgressCacheHit Transfert de données sortantes pour les réponses qui ont été livrées directement à partir du cache de réseau de distribution de contenu sur les points de présence/périmètres de réseau de distribution de contenu. Oui Oui
EgressCacheMiss. Transfert de données sortantes pour les réponses qui n’ont pas été trouvées sur le serveur POP le plus proche et qui ont été récupérées à partir du serveur d’origine. Oui Oui
EgressCacheNoCache Transferts de données sortants pour les ressources qui sont empêchés d’être mises en cache en raison d’une configuration l’utilisateur sur le périmètre. Oui Oui
EgressCacheUncacheable Transfert de données sortant pour les ressources ne pouvant pas être mises en cache en raison de leurs en-têtes Cache-Control et/ou Expires. Cela indique qu’elles ne doivent pas être mises en cache sur un point de présence ou par le client HTTP. Oui Oui
EgressCacheOthers Transfère les données sortantes pour d’autres scénarios de cache. Non Oui

* Le transfert de données sortantes fait référence au trafic produit des serveurs POP de réseau de distribution de contenu vers le client.

Schéma des journaux d’activité Core Analytics

Tous les journaux d’activité sont stockés au format JSON, et chaque entrée comprend des champs de chaîne conformément au schéma suivant :

    "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,
            }
        }

    ]
}

time représente l’heure de début des limites d’heure pour lesquelles les statistiques sont rapportées. Une métrique non prise en charge par un fournisseur de réseau de distribution de contenu donne une valeur Nulle et non un entier ou un double. Cette valeur null indique l’absence de métrique, et diffère de la valeur 0. Un ensemble de ces métriques par domaine est configuré sur le point de terminaison.

Exemple de propriétés :

{
     "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
}

Plus de ressources