Utiliser l’extension de diagnostic Linux 4.0 pour superviser les métriques et les journaux

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils d’aide relatifs à la fin de vie de CentOS.

Cet article décrit les dernières versions de l’extension de diagnostic Linux (LAD).

Important

Pour plus d’informations sur la version 3.x, consultez Utiliser l’extension de diagnostic Linux 3.0 pour superviser les métriques et les journaux. Pour plus d’informations sur la version 2.3 et sur les versions antérieures, consultez Superviser les données de performances et de diagnostic d’une machine virtuelle Linux.

L’extension de diagnostic Linux vous aide à superviser l’intégrité d’une machine virtuelle Linux sur Microsoft Azure. Elle présente les fonctionnalités suivantes :

Source de données Options de personnalisation Destinations obligatoires Destinations facultatives
Mesures Compteur, Agrégation, Échantillonnage, Spécificateurs Stockage de table Azure EventHub, Stockage Blob Azure (format JSON), Azure Monitor (nouveau dans LAD 4.0)
syslog Fonction, niveau de gravité Stockage de table Azure EventHub, Stockage Blob Azure (format JSON)
Fichiers Chemin d’accès du journal, Table de destination Stockage de table Azure EventHub, Stockage Blob Azure (format JSON)

Cette extension fonctionne avec les deux modèles de déploiement Azure : Azure Resource Manager et classique.

Prérequis

  • Agent Linux Azure version 2.2.0 ou ultérieure. La plupart des images de la galerie Linux de machines virtuelles Azure incluent la version 2.2.7 ou ultérieure. Exécutez /usr/sbin/waagent -version pour vérifier la version installée sur la machine virtuelle. Si la machine virtuelle exécute une version antérieure de l’agent invité, mettez à jour l’agent Linux.
  • Azure CLI. Configurez l’environnement Azure CLI sur votre machine.
  • La commande wget . Si vous ne l’avez pas déjà, installez-le avec le gestionnaire de package correspondant.
  • Un abonnement Azure et un compte de stockage universel pour stocker les données. Les comptes de stockage universels prennent en charge le stockage Table, qui est nécessaire. Un compte de stockage Blob ne fonctionne pas.
  • Python 2.

Distributions de Linux prises en charge

Consultez Systèmes d’exploitation de l’agent pris en charge.

Exigence relative à Python

L’extension de diagnostic Linux nécessite Python 2. Si votre machine virtuelle utilise une distribution qui n’inclut pas Python 2, installez-le.

Notes

Nous prévoyons actuellement de faire converger toutes les versions des extensions de diagnostic Linux (LAD) avec le nouvel agent de surveillance Azure, qui prend déjà en charge Python 3. Les LAD seront planifiés pour la dépréciation en attendant une annonce et une approbation.

Pour installer Python 2, exécutez l’un des exemples de commandes suivants :

  • Red Hat, CentOS, Oracle : yum install -y python2
  • Ubuntu, Debian : apt-get install -y python2
  • SUSE : zypper install -y python2

Le fichier exécutable python2 doit avoir comme alias python.

  1. Exécutez la commande suivante pour supprimer tous les alias existants.

    sudo update-alternatives --remove-all python
    
  2. Pour créer l’alias, exécutez la commande suivante.

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
    

Installer l’extension

Vous pouvez activer cette extension pour votre machine virtuelle et votre groupe de machines virtuelles identiques en utilisant les cmdlets Azure PowerShell, des scripts Azure CLI, des modèles Azure Resource Manager (modèles ARM) ou le Portail Azure. Pour plus d’informations, consultez Extensions et fonctionnalités de machine virtuelle pour Linux.

Notes

Certains composants de l’extension de machine virtuelle de diagnostic Linux sont également fournis avec l’extension de machine virtuelle Log Analytics. Des conflits peuvent survenir si les deux extensions sont instanciées dans le même modèle Resource Manager.

Pour éviter ces conflits au moment de l’installation, utilisez la directive dependsOn pour installer les extensions de façon séquentielle. Les extensions peuvent être installées dans n’importe quel ordre.

Utilisez ces instructions d’installation et un exemple de configuration téléchargeable pour configurer l’extension de diagnostic Linux 4.0 pour :

  • Capturez et stockez les mêmes métriques que celles fournies par l’extension de diagnostic Linux versions 2.3 et 3.x.
  • Envoyez des métriques au récepteur Azure Monitor avec le récepteur habituel vers Stockage Azure. Cette fonctionnalité est nouvelle dans l’extension de diagnostic Linux 4.0.
  • Capturez un ensemble pratique de métriques du système de fichiers, comme dans l’extension de diagnostic Linux 3.0.
  • Capturez la collection Syslog par défaut activée par l’extension de diagnostic Linux 2.3.
  • Activez l’expérience du portail Azure pour les graphiques et les alertes sur des métriques de machine virtuelle.

La configuration téléchargeable n’est qu’un exemple. Modifiez-la pour l’adapter à vos besoins.

Installation

Vous pouvez installer et configurer l’extension de diagnostic Linux (LAD) 4.0 dans Azure CLI ou dans Azure PowerShell.

Si vos paramètres protégés sont dans le fichier ProtectedSettings.json et que vos informations de configuration publique sont dans PublicSettings.json, exécutez cette commande :

az vm extension set --publisher Microsoft.Azure.Diagnostics \
  --name LinuxDiagnostic --version 4.0 --resource-group <resource_group_name> \
  --vm-name <vm_name> --protected-settings ProtectedSettings.json \
  --settings PublicSettings.json

La commande suppose que vous utilisez le mode Azure Resource Manager d’Azure CLI. Pour configurer l’extension de diagnostic Linux pour des machines virtuelles du modèle de déploiement classique, passez au mode Management des services (azure config mode asm) et omettez le nom du groupe de ressources dans la commande.

Pour plus d’informations, consultez la documentation relative à l’interface de ligne de commande multiplateforme.

Activer la mise à jour automatique

Pour activer la mise à jour automatique de l’agent, nous vous recommandons d’activer la fonctionnalité Mise à niveau automatique des extensions :

az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic \
  --version 4.0 --resource-group <resource_group_name> --vm-name <vm_name> \
  --protected-settings ProtectedSettings.json --settings PublicSettings.json \
  --enable-auto-upgrade true

Exemple d’installation

Dans ces exemples, l’exemple de configuration collecte un ensemble de données standard et les envoie au Stockage Table. L’URL de l’exemple de configuration et son contenu peut changer.

Notes

Pour les exemples suivants, renseignez les valeurs appropriées pour les variables de la première section avant d’exécuter le code.

Dans la plupart des cas, vous devez télécharger une copie du fichier JSON des paramètres du portail et la personnaliser en fonction de vos besoins. Utilisez des modèles ou votre propre automatisation pour utiliser une version personnalisée du fichier config au lieu de le télécharger à chaque fois depuis l’URL.

Quand vous activez le nouveau récepteur Azure Monitor, les machines virtuelles doivent avoir une identité affectée par le système activée pour générer des jetons d’authentification Managed Service Identity (MSI). Vous pouvez ajouter ces paramètres pendant ou après la création de la machine virtuelle. Pour obtenir des instructions pour le portail Azure, Azure CLI, PowerShell et Azure Resource Manager, consultez Configurer des identités managées.

Exemple d’installation – Azure CLI

# Set your Azure VM diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription $my_subscription_id

# Enable system-assigned identity on the existing VM.
az vm identity assign --resource-group $my_resource_group --name $my_linux_vm

# Download the sample public settings. You could instead use curl or any web browser.
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show --resource-group $my_resource_group \
  --name $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas \
  --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z \
  --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', \
  'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"

# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic \
  --version 4.0 --resource-group $my_resource_group --vm-name $my_linux_vm \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Exemple d’installation pour les groupes de machines virtuelles identiques – Azure CLI

# Set your Azure virtual machine scale set diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vmss=<your_azure_linux_vmss_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription $my_subscription_id

# Enable system-assigned identity on the existing virtual machine scale set.
az vmss identity assign --resource-group $my_resource_group --name $my_linux_vmss

# Download the sample public settings. You could also use curl or any web browser.
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
my_vmss_resource_id=$(az vmss show --resource-group $my_resource_group \
  --name $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas \
  --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z \
  --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken'}"

# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic
  --version 4.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

Mettre à jour les paramètres de l’extension

Une fois que vous avez modifié vos paramètres protégés ou publics, exécuter la même commande pour les déployer sur la machine virtuelle. Si des paramètres ont été modifiés, les mises à jour sont envoyées à l’extension. L’extension de diagnostic Linux recharge la configuration et redémarre automatiquement.

Migrer depuis des versions antérieures de l’extension

La version la plus récente de l’extension est la version 4.0, qui est actuellement disponible en préversion publique. Les versions 3.x antérieures sont toujours prises en charge. Les versions 2.x ont été dépréciées le 31 juillet 2018.

Important

Pour migrer de 3.x vers la version la plus récente de l’extension, désinstallez l’ancienne extension. Installez ensuite la version 4, qui comprend la configuration mise à jour pour l’identité affectée par le système et les récepteurs pour envoyer des métriques au récepteur Azure Monitor.

Quand vous installez la nouvelle extension, activez les mises à niveau automatiques des versions mineures :

  • Sur les machines virtuelles du modèle de déploiement Azure Resource Manager, incluez "autoUpgradeMinorVersion": true dans le modèle de déploiement des machines virtuelles.
  • Sur les machines virtuelles du modèle de déploiement classique, spécifiez la version 4.* si vous installez l’extension via Azure CLI ou PowerShell.

Vous pouvez utiliser le même compte de stockage que celui utilisé pour l’extension de diagnostic Linux 3.x.

Paramètres protégés

Cet ensemble d’informations de configuration contient des informations sensibles qui doivent être protégées d’une exposition publique. Il contient par exemple les informations d’identification du stockage. Ces paramètres sont transmis à l’extension qui les stocke sous une forme chiffrée.

{
    "storageAccountName" : "the storage account to receive data",
    "storageAccountEndPoint": "the hostname suffix for the cloud for this account",
    "storageAccountSasToken": "SAS access token",
    "mdsdHttpProxy": "HTTP proxy settings",
    "sinksConfig": { ... }
}
Nom Valeur
storageAccountName Nom du compte de stockage où les données sont écrites par l’extension.
storageAccountEndPoint (Facultatif) Point de terminaison identifiant le cloud où se trouve le compte de stockage. Si ce paramètre est absent, par défaut, l’extension de diagnostic Linux utilise le cloud public Azure, https://core.windows.net. Pour utiliser un compte de stockage dans Azure Allemagne, Azure Government ou Microsoft Azure géré par 21Vianet, définissez cette valeur de manière adéquate.
storageAccountSasToken Un jeton SAS de compte pour les services Blob et Table (ss='bt'). Ce jeton s’applique aux conteneurs et aux objets (srt='co'). Il accorde les autorisations d’ajouter, de créer, de lister, de mettre à jour et d’écrire (sp='acluw'). N’incluez pas le point d’interrogation ( ?) du début.
mdsdHttpProxy (Facultatif) Informations du proxy HTTP nécessaires pour permettre à l’extension de se connecter au compte de stockage et au point de terminaison spécifiés.
sinksConfig (Facultatif) Détails des destinations alternatives auxquelles les métriques et les événements peuvent être délivrés. Les sections suivantes fournissent des détails sur chaque récepteur de données pris en charge par l’extension.

Pour obtenir un jeton SAS dans un modèle ARM, utilisez la fonction listAccountSas. Pour obtenir un exemple de modèle, consultez Exemple de fonction de liste.

Vous pouvez construire le jeton de signature d’accès partagé nécessaire par le biais du Portail Azure :

  1. Sélectionnez le compte de stockage universel sur lequel vous voulez que l’extension écrive.
  2. Dans le menu à gauche, sous Sécurité + réseau, sélectionnez Signature d’accès partagé.
  3. Effectuez les sélections comme décrit précédemment.
  4. Sélectionnez Générer la chaîne de connexion et SAP.

Capture d’écran montrant la page de signature d’accès partagé, qui contient la chaîne Générer SAS et de connexion.

Copiez la signature d’accès partagé générée dans le champ storageAccountSasToken. Supprimez le point d’interrogation (?) figurant au début.

sinksConfig

Notes

Les paramètres publics et protégés ont une section sinksConfig facultative. La section sinksConfig dans les paramètres protégés contient uniquement les configurations des récepteurs EventHub et JsonBlob, en raison de l’inclusion de secrets comme sasURL. Les configurations du récepteur AzMonSinkne peuvent pas être incluses dans vos paramètres protégés.

"sinksConfig": {
    "sink": [
        {
            "name": "sinkname",
            "type": "sinktype",
            ...
        },
        ...
    ]
},

La section facultative sinksConfig définit des destinations supplémentaires auxquelles l’extension envoie les informations collectées. Le tableau "sink" contient un objet pour chaque récepteur de données supplémentaire. L’attribut "type" détermine les autres attributs de l’objet.

Élément Valeur
name Chaîne utilisée pour référencer ce récepteur ailleurs dans la configuration de l’extension.
type Type du récepteur défini. Détermine les autres valeurs, le cas échéant), dans les instances de ce type.

L’extension de diagnostic Linux 4.0 prend en charge deux types de récepteur protégé : EventHub et JsonBlob.

Récepteur EventHub

"sink": [
    {
        "name": "sinkname",
        "type": "EventHub",
        "sasURL": "https SAS URL"
    },
    ...
]

L’entrée "sasURL" contient l’URL complète, y compris le jeton de signature d’accès partagé, de l’Event Hub sur lequel les données doivent être publiées. L’extension de diagnostic Linux nécessite une signature d’accès partagé pour nommer une stratégie qui active la revendication d’envoi. Voici un exemple :

  • Créez un espace de noms Event Hubs appelé contosohub.
  • Créez un hub d’événements dans l’espace de noms appelé syslogmsgs.
  • Créez une stratégie d’accès partagé sur le hub d’événements nommé writer qui active la revendication d’envoi.

Si vous avez créé une signature d’accès partagé valide jusqu’à minuit UTC le 1er janvier 2018, la valeur de sasURL peut être similaire à l’exemple suivant.

https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer

Pour plus d’informations sur la génération et l’extraction d’informations sur les jetons SAS pour Event Hubs, consultez Générer un jeton SAS.

Récepteur JsonBlob

"sink": [
    {
        "name": "sinkname",
        "type": "JsonBlob"
    },
    ...
]

Les données dirigées vers un récepteur JsonBlob sont stockées dans des blobs dans Stockage Azure. Chaque instance de l’extension de diagnostic Linux crée un objet blob toutes les heures pour chaque nom de récepteur. Chaque blob contient toujours un tableau syntaxiquement valide d’objets JSON. Les nouvelles entrées sont ajoutées au tableau de manière atomique.

Les blobs sont stockés dans un conteneur du même nom que le récepteur. Les règles du Stockage Azure pour les noms de conteneur d’objets blob s’appliquent aux noms des récepteurs JsonBlob. Les noms doivent comporter entre 3 et 63 caractères ASCII alphanumériques en minuscules ou des tirets.

Paramètres publics

Cette structure de paramètres publics contient différents blocs de paramètres qui contrôlent les informations collectées par l’extension. Chaque paramètre, excepté ladCfg, est facultatif. Si vous spécifiez la collection de métriques ou syslog dans ladCfg, vous devez également spécifier StorageAccount. Vous devez spécifier l’élément sinksConfig pour activer le récepteur Azure Monitor pour les métriques de l’extension de diagnostic Linux 4.0.

{
    "ladCfg":  { ... },
    "fileLogs": { ... },
    "StorageAccount": "the storage account to receive data",
    "sinksConfig": { ... },
    "mdsdHttpProxy" : ""
}
Élément Valeur
StorageAccount Nom du compte de stockage où les données sont écrites par l’extension. Il doit s’agir du nom spécifié dans les paramètres protégés.
mdsdHttpProxy (Facultatif) Le proxy spécifié dans les paramètres protégés. Si la valeur privée est définie, elle remplace la valeur publique. Placez les paramètres de proxy qui contiennent un secret, comme un mot de passe, dans les paramètres protégés.

Les sections suivantes fournissent des détails sur les éléments restants.

ladCfg

"ladCfg": {
    "diagnosticMonitorConfiguration": {
        "eventVolume": "Medium",
        "metrics": { ... },
        "performanceCounters": { ... },
        "syslogEvents": { ... }
    },
    "sampleRateInSeconds": 15
}

La structure ladCfg contrôle la collecte des métriques et des journaux pour les délivrer au service des métriques Azure Monitor et à d’autres récepteurs. Spécifiez performanceCounters ou syslogEvents, ou les deux. Spécifiez aussi la structure metrics.

Si vous ne voulez pas activer Syslog ou la collecte de métriques, spécifiez une structure vide pour l’élément ladCfg :

"ladCfg": {
    "diagnosticMonitorConfiguration": {}
}
Élément Valeur
eventVolume (facultatif) Contrôle le nombre de partitions créées dans la table de stockage. La valeur doit être "Large", "Medium" ou "Small". La valeur par défaut est "Medium".
sampleRateInSeconds (Facultatif) Intervalle par défaut entre les collectes des métriques brutes (non agrégées). L’échantillonnage le plus petit pris en charge de 15 secondes. Par défaut, il s’agit de 15.

Mesures

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
Élément Valeur
resourceId L’ID de ressource Azure Resource Manager de la machine virtuelle ou du groupe de machines virtuelles identiques auquel la machine virtuelle appartient. Spécifiez aussi ce paramètre si la configuration utilise un récepteur JsonBlob.
scheduledTransferPeriod Fréquence à laquelle les métriques agrégées doivent être calculées et transférées à Azure Monitor Metrics. La fréquence est exprimée sous la forme d’un intervalle de temps ISO 8601. La périodicité de transfert la plus petite est de 60 secondes, c’est-à-dire PT1M. Spécifiez au moins une fréquence scheduledTransferPeriod.

Des échantillons des métriques spécifiées dans la section performanceCounters sont collectés toutes les 15 secondes ou selon l’échantillonnage explicitement défini pour le compteur. Si plusieurs fréquences scheduledTransferPeriod apparaissent, comme dans l’exemple, chaque agrégation est calculée indépendamment.

performanceCounters

"performanceCounters": {
    "sinks": "",
    "performanceCounterConfiguration": [
        {
            "type": "builtin",
            "class": "Processor",
            "counter": "PercentIdleTime",
            "counterSpecifier": "/builtin/Processor/PercentIdleTime",
            "condition": "IsAggregate=TRUE",
            "sampleRate": "PT15S",
            "unit": "Percent",
            "annotation": [
                {
                    "displayName" : "cpu idle time",
                    "locale" : "en-us"
                }
            ]
        }
    ]
}

La section facultative performanceCounters contrôle la collecte des métriques. Les échantillons bruts sont agrégés pour chaque scheduledTransferPeriod pour produire ces valeurs :

  • Moyenne
  • Minimum
  • Maximale
  • Dernière valeur collectée
  • Nombre d’échantillons bruts utilisés pour calculer l’agrégation
Élément Valeur
sinks (Facultatif) Liste, séparée par des virgules, des noms des récepteurs auxquels l’extension de diagnostic Linux envoie les résultats des métriques agrégées. Toutes les métriques agrégées sont publiées sur chaque récepteur répertorié. Par exemple : "MyEventHubSink, MyJsonSink, MyAzMonSink". Pour plus d’informations, consultez sinksConfig (paramètres protégés) et sinksConfig (paramètres publics).
type Identifie le fournisseur réel de la mesure.
class Avec "counter", identifie la métrique spécifique dans l’espace de noms du fournisseur.
counter Avec "class", identifie la métrique spécifique dans l’espace de noms du fournisseur. Consultez la liste des compteurs disponibles.
counterSpecifier Identifie la métrique dans l’espace de noms Azure Monitor Metrics.
condition (Facultatif) Sélectionne une instance de l’objet auquel la métrique s’applique, ou sélectionne l’agrégation sur toutes les instances de cet objet.
sampleRate Intervalle ISO 8601 qui définit la fréquence à laquelle des échantillons bruts sont collectés pour cette métrique. Si la valeur n’est pas définie, la valeur de sampleRateInSeconds définit l’intervalle de collecte. L’échantillonnage le plus court pris en charge est de 15 secondes (PT15S).
unité Définit l’unité pour la métrique. Doit être une des chaînes suivantes : "Count", "Bytes", "Seconds", "Percent", "CountPerSecond", "BytesPerSecond", "Millisecond". Les consommateurs des données collectées attendent des valeurs de données collectées correspondant à cette unité. L’extension de diagnostic Linux ignore ce champ.
displayName Étiquette à attacher aux données dans Azure Monitor Metrics lors de l’affichage dans l’espace de noms de métriques Guest (classic). Cette étiquette est dans la langue spécifiée par les paramètres régionaux associés. L’extension de diagnostic Linux ignore ce champ. Remarque : Si vous affichez la même métrique dans l’espace de noms de métriques azure.vm.linux.guestmetrics, qui est disponible si AzMonSink est configuré, le nom d’affichage dépend entièrement du compteur. Pour trouver le mappage entre les compteurs et les noms, consultez Métriques prises en charge par le fournisseur intégré.

counterSpecifier est un identificateur arbitraire. Les consommateurs de métriques, comme les fonctionnalités de graphiques et d’alertes du portail Azure, utilisent counterSpecifier comme la clé qui identifie une métrique ou l’instance d’une métrique.

Pour les métriques builtin, nous recommandons des valeurs de counterSpecifier commençant par /builtin/. Si vous collectez une instance spécifique d’une métrique, attachez l’identificateur de l’instance à la valeur de counterSpecifier. Voici quelques exemples :

  • /builtin/Processor/PercentIdleTime. Temps d’inactivité moyen pour tous les processeurs virtuels
  • /builtin/Disk/FreeSpace(/mnt). Espace libre pour le système de fichiers /mnt
  • /builtin/Disk/FreeSpace. Espace libre moyen pour tous les systèmes de fichiers montés

L’extension de diagnostic Linux et le portail Azure ne s’attendent pas à ce que la valeur de counterSpecifier corresponde à un modèle particulier. Soyez cohérent dans la façon dont vous construisez les valeurs de counterSpecifier.

Quand vous spécifiez performanceCounters, l’extension de diagnostic Linux écrit toujours les données dans une table de Stockage Azure. Les mêmes données peuvent être écrites dans des blobs JSON ou des Event Hubs, ou les deux. Vous ne pouvez pas désactiver le stockage des données dans une table.

Toutes les instances de l’extension de diagnostic Linux qui utilisent le même nom et le même point de terminaison de compte de stockage ajoutent leurs métriques et leurs journaux à la même table. Si un trop grand nombre de machines virtuelles écrivent dans la même partition de table, Azure peut limiter les écritures sur cette partition.

Le paramètre eventVolume permet de répartir les entrées entre 1 (Small), 10 (Medium) ou 100 (Large) partitions. En règle générale, 10 partitions (Medium) sont suffisantes pour éviter la limitation du trafic.

La fonctionnalité Azure Monitor Metrics du portail Azure utilise les données de cette table pour produire des graphes ou déclencher des alertes. Le nom de la table est la concaténation des chaînes suivantes :

  • WADMetrics
  • "scheduledTransferPeriod" pour les valeurs agrégées stockées dans la table
  • P10DV2S
  • Une date, sous la forme AAAAMMJJ, qui change tous les 10 jours

Exemples : WADMetricsPT1HP10DV2S20170410 et WADMetricsPT1MP10DV2S20170609.

syslogEvents

"syslogEvents": {
    "sinks": "",
    "syslogEventConfiguration": {
        "facilityName1": "minSeverity",
        "facilityName2": "minSeverity",
        ...
    }
}

La section facultative syslogEvents contrôle la collecte des événements des journaux auprès de Syslog. Si la section est omise, les événements Syslog ne sont pas capturés du tout.

La collection syslogEventConfiguration a une entrée pour chaque fonction Syslog qui présente un intérêt. Si minSeverity est défini sur "NONE" pour une fonction donnée ou si cette fonction n’apparaît pas du tout dans l’élément, aucun événement de cette fonction n’est capturé.

Élément Valeur
sinks Une liste séparée par des virgules de noms de récepteurs sur lesquels des événements de journaux sont publiés. Tous les événements de journaux correspondant aux restrictions de syslogEventConfiguration sont publiés sur chaque récepteur listé. Exemple : "EHforsyslog"
facilityName Nom de la fonction Syslog, comme "LOG_USER" ou "LOG_LOCAL0". Pour plus d’informations, consultez Valeurs pour la fonctionnalité dans la page du manuel syslog.
minSeverity Niveau de gravité Syslog, comme "LOG_ERR" ou "LOG_INFO". Pour plus d’informations, consultez Valeurs pour le niveau dans la page du manuel syslog. L’extension capture les événements envoyés à la fonction à un niveau supérieur ou égal au niveau spécifié.

Quand vous spécifiez syslogEvents, l’extension de diagnostic Linux écrit toujours les données dans une table de Stockage Azure. Les mêmes données peuvent être écrites dans des blobs JSON ou des Event Hubs, ou les deux. Vous ne pouvez pas désactiver le stockage des données dans une table.

Le comportement de partitionnement pour cette table est identique à celui décrit pour performanceCounters. Le nom de la table est la concaténation des chaînes suivantes :

  • LinuxSyslog
  • Une date, sous la forme AAAAMMJJ, qui change tous les 10 jours

Exemples : LinuxSyslog20170410 et LinuxSyslog20170609.

sinksConfig

La section sinksConfig publique facultative permet d’envoyer des métriques au récepteur Azure Monitor en plus du compte de stockage et de l’affichage par défaut des Métriques d’invité.

Notes

Les paramètres publics et protégés ont une section sinksConfig facultative. La section sinksConfig dans les paramètres publics contient uniquement la configuration du récepteur AzMonSink. Les configurations des récepteurs EventHub et JsonBlobne peuvent pas être incluses dans vos paramètres publics.

Notes

La section sinksConfig nécessite l’activation de l’identité affectée par le système sur les machines virtuelles ou sur le groupe de machines virtuelles identiques. Vous pouvez activer l’identité affectée par le système via le portail Azure, l’interface CLI, PowerShell ou Azure Resource Manager. Suivez les instructions détaillées ou consultez les exemples d’installations précédents dans cet article.

  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },

fileLogs

La section fileLogs contrôle la capture des fichiers journaux. L’extension de diagnostic Linux capture les nouvelles lignes de texte à mesure qu’elles sont écrites dans le fichier. Elle les écrit dans les lignes de la table et dans les récepteurs spécifiés, comme JsonBlob et EventHub.

Notes

Les fileLogs sont capturés par un sous-composant de l’extension de diagnostic Linux appelé omsagent. Pour collecter les fileLogs, vérifiez que l’utilisateur omsagent dispose des autorisations de lecture sur les fichiers que vous spécifiez. Il doit également disposer d’autorisations d’exécution sur tous les répertoires dans le chemin vers ce fichier. Une fois LAD installé, pour vérifier les autorisations, exécutez sudo su omsagent -c 'cat /path/to/file'.

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
Élément Valeur
fichier Nom du chemin complet du fichier journal à observer et à capturer. Le chemin d’accès ne peut pas spécifier de répertoire ou contenir des caractères génériques. Le compte d’utilisateur omsagent doit avoir un accès en lecture sur le chemin du fichier.
table (Facultatif) Table de Stockage Azure dans laquelle les nouvelles lignes de la fin du fichier sont écrites. La table doit se trouver dans le compte de stockage désigné, comme spécifié dans la configuration protégée.
sinks (Facultatif) Une liste séparée par des virgules des noms des récepteurs supplémentaires auxquels les lignes des journaux sont envoyées.

Vous devez spécifier "table", "sinks" ou les deux.

Métriques prises en charge par le fournisseur intégré

Les métriques par défaut prises en charge par l’extension de diagnostic Linux sont agrégées pour l’ensemble des systèmes de fichiers, des disques ou des noms. Pour les métriques non agrégées, reportez-vous à la prise en charge des métriques plus récentes du récepteur Azure Monitor.

Notes

Les noms d’affichage de chaque métrique varient en fonction de l’espace de noms de métriques auquel elle appartient :

  • Guest (classic) renseigné à partir de votre compte de stockage : le displayName spécifié dans la section performanceCounters, ou le nom d’affichage par défaut tel qu’il apparaît dans le Portail Azure. Pour la machine virtuelle, sous Paramètres de diagnostic de surveillance> par défaut, sélectionnez l’onglet Métriques.
  • azure.vm.linux.guestmetrics renseigné à partir de AzMonSink, si configuré : le « Nom d’affichage azure.vm.linux.guestmetrics » spécifié dans les tableaux ci-dessous.

Les valeurs de métriques entre les versions Guest (classic) et azure.vm.linux.guestmetrics diffèrent. Alors que certaines agrégations étaient appliquées aux métriques classiques dans l’agent, les nouvelles métriques sont des compteurs non agrégés, ce qui donne aux clients la flexibilité nécessaire pour les agréger au moment de l’affichage/alerte.

Le fournisseur de métriques builtin est une source de métriques parmi les plus intéressantes pour un large éventail d’utilisateurs. Ces métriques se répartissent en cinq classes principales :

  • Processeur
  • Mémoire
  • Réseau
  • Système de fichiers
  • Disque

métriques intégrées pour la classe Processeur

La classe de métriques Processeur fournit des informations sur l’utilisation du processeur dans la machine virtuelle. Quand des pourcentages sont agrégés, le résultat est la moyenne pour tous les UC.

Dans une machine virtuelle à 2 processeurs virtuels, si un processeur virtuel est occupé à 100 % et que l’autre est inactif à 100 %, le PercentIdleTime signalé est de 50. Si chaque processeur virtuel est occupé à 50 % pendant la même période, le résultat signalé est également de 50. Dans une machine virtuelle à 4 processeurs virtuels, si un processeur virtuel est occupé à 100 % et que les autres sont inactifs, le PercentIdleTime signalé est de 75.

Compteur Nom d’affichage azure.vm.linux.guestmetrics Signification
PercentIdleTime cpu idle time Pourcentage de temps de la fenêtre d’agrégation pendant lequel les UC ont exécuté la boucle d’inactivité du noyau
percentProcessorTime cpu percentage guest os Pourcentage de temps passé à exécuter un thread actif
PercentIOWaitTime cpu io wait time Pourcentage de temps passé à attendre la fin d’opérations d’E/S
PercentInterruptTime cpu interrupt time Pourcentage de temps passé à exécuter des interruptions matérielles ou logicielles et des appels de procédure différés (DPC)
PercentUserTime cpu user time Relativement au temps d’activité de la fenêtre d’agrégation, pourcentage de temps passé en mode utilisateur à une priorité normale
PercentNiceTime cpu nice time Pourcentage de temps passé à une priorité abaissée (commande nice), relativement au temps d’activité
PercentPrivilegedTime cpu privileged time Pourcentage de temps passé en mode privilégié (noyau), relativement au temps d’activité

La somme des 4 premiers compteurs doit être de 100 %. La somme des 3 premiers compteurs est également de 100 %. Ces trois compteurs subdivisent la somme de PercentProcessorTime, PercentIOWaitTime et PercentInterruptTime.

métriques intégrées pour la classe Mémoire

La classe de métriques Mémoire fournit des informations sur l’utilisation, la pagination et les échanges de la mémoire.

Compteur Nom d’affichage azure.vm.linux.guestmetrics Signification
AvailableMemory memory available Mémoire physique disponible en Mio
PercentAvailableMemory mem. percent available Mémoire physique disponible sous forme de pourcentage de la mémoire totale
UsedMemory memory used Mémoire physique utilisée (Mio)
PercentUsedMemory memory percentage Mémoire physique utilisée sous forme de pourcentage de la mémoire totale
PagesPerSec pages Pagination totale (lecture/écriture)
PagesReadPerSec page reads Pages lues à partir du magasin de stockage, comme le fichier d’échange, les fichiers programme et les fichiers mappés
PagesWrittenPerSec page writes Pages écrites dans le magasin de stockage, comme le fichier d’échange et les fichiers mappés
AvailableSwap swap available Espace d’échange non utilisé (Mio)
PercentAvailableSwap swap percent available Espace d’échange non utilisé sous forme de pourcentage de l’espace d’échange total
UsedSwap swap used Espace d’échange utilisé (Mio)
PercentUsedSwap swap percent used Espace d’échange utilisé sous forme de pourcentage de l’espace d’échange total

Cette classe de métriques n’a qu’une seule instance. L’attribut "condition" n’a pas de paramètres utiles et doit être omis.

métriques intégrées pour la classe Réseau

La classe de métriques Réseau fournit des informations sur l’activité réseau sur une interface réseau individuelle depuis le démarrage.

L’extension de diagnostic Linux n’expose pas les métriques de la bande passante. Vous pouvez obtenir ces métriques à partir des métriques de l’hôte.

Compteur Nom d’affichage azure.vm.linux.guestmetrics Signification
BytesTransmitted network out guest os Nombre total d’octets envoyés depuis le démarrage
BytesReceived network in guest os Nombre total d’octets reçus depuis le démarrage
BytesTotal network total bytes Nombre total d’octets envoyés ou reçus depuis le démarrage
PacketsTransmitted packets sent Nombre total de paquets envoyés depuis le démarrage
PacketsReceived packets received Nombre total de paquets reçus depuis le démarrage
TotalRxErrors packets received errors Nombre d’erreurs de réception depuis le démarrage
TotalTxErrors packets sent errors Nombre d’erreurs de transmission depuis le démarrage
TotalCollisions network collisions Nombre de collisions signalées par les ports réseau depuis le démarrage

Métriques intégrées pour la classe Système de fichiers

La classe de métriques Système de fichiers fournit des informations sur l’utilisation du système de fichiers. Les valeurs absolues et en pourcentage sont indiquées comme elles sont affichées pour un utilisateur ordinaire, non racine.

Compteur Nom d’affichage azure.vm.linux.guestmetrics Signification
FreeSpace filesystem free space Espace disque disponible en octets
UsedSpace filesystem used space Espace disque utilisé en octets
PercentFreeSpace filesystem % free space Pourcentage d’espace libre
PercentUsedSpace filesystem % used space Pourcentage d’espace utilisé
PercentFreeInodes filesystem % free inodes Pourcentage de nœuds d’index non utilisés (inodes)
PercentUsedInodes filesystem % used inodes Pourcentage total d’inodes alloués (utilisés) pour tous les systèmes de fichiers
BytesReadPerSecond filesystem read bytes/sec Octets lus par seconde
BytesWrittenPerSecond filesystem write bytes/sec Octets écrits par seconde
BytesPerSecond filesystem bytes/sec Octets lus ou écrits par seconde
ReadsPerSecond filesystem reads/sec Opérations de lecture par seconde
WritesPerSecond filesystem writes/sec Opérations d’écriture par seconde
TransfersPerSecond filesystem transfers/sec Opérations de lecture ou d’écriture par seconde

métriques intégrées pour la classe Disque

La classe de métriques Disque fournit des informations sur l’utilisation du disque. Ces statistiques s’appliquent à la totalité du lecteur.

Quand un périphérique a plusieurs systèmes de fichiers, les compteurs pour ce périphérique sont agrégés pour tous les systèmes de fichiers.

Compteur Nom d’affichage azure.vm.linux.guestmetrics Signification
ReadsPerSecond disk reads Opérations de lecture par seconde
WritesPerSecond disk writes Opérations d’écriture par seconde
TransfersPerSecond disk transfers Nombre total d’opérations par seconde
AverageReadTime disk read time Nombre moyen de secondes par opération de lecture
AverageWriteTime disk write time Nombre moyen de secondes par opération d’écriture
AverageTransferTime disk transfer time Nombre moyen de secondes par opération
AverageDiskQueueLength disk queue length Nombre moyen d’opérations disque en file d’attente
ReadBytesPerSecond disk read guest os Nombre d’octets lus par seconde
WriteBytesPerSecond disk write guest os Nombre d’octets écrits par seconde
BytesPerSecond disk total bytes Nombre d’octets lus ou écrits par seconde

Exemple de configuration de l’extension de diagnostic Linux 4.0

À partir des définitions précédentes, cette section fournit un exemple de configuration de l’extension de diagnostic Linux 4.0 et quelques explications. Pour appliquer cet exemple, vous devez utiliser le nom de votre compte de stockage, le jeton de signature d’accès partagé de votre compte et vos jetons SAP pour Event Hubs.

Notes

Selon que vous utilisez Azure CLI ou Azure PowerShell pour installer l’extension de diagnostic Linux, la méthode pour fournir des paramètres publics et protégés diffère :

  • Si vous utilisez Azure CLI, enregistrez les paramètres suivants dans ProtectedSettings.json et PublicSettings.json pour utiliser l’exemple de commande précédent.
  • Si vous utilisez PowerShell, exécutez $protectedSettings = '{ ... }' et $publicSettings = '{ ... }'pour enregistrer les paramètres suivants dans $protectedSettings et $publicSettings.

Configuration des paramètres protégés

Les paramètres protégés configurent :

  • Un compte de stockage.
  • Un jeton de signature d’accès partagé de compte correspondant.
  • Plusieurs récepteurs : JsonBlob ou EventHub avec des jetons SAS.
{
  "storageAccountName": "yourdiagstgacct",
  "storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
  "sinksConfig": {
    "sink": [
      {
        "name": "SyslogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "FilelogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "MyJsonMetricsBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
      },
      {
        "name": "MyMetricEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
      },
      {
        "name": "LoggingEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
      }
    ]
  }
}

Configuration des paramètres publics

Les paramètres publics font que l’extension de diagnostic Linux :

  • Charge les métriques percent-processor-time et used-disk-space metrics dans la table WADMetrics*.
  • Charge les messages depuis la fonction Syslog "user" et le niveau de gravité "info" dans la table LinuxSyslog*.
  • Charge les lignes ajoutées au fichier /var/log/myladtestlog dans la table MyLadTestLog.

Dans chaque cas, les données sont également chargées dans :

  • Stockage Blob Azure. Le nom du conteneur est défini dans le récepteur JsonBlob.
  • Un point de terminaison Event Hubs, tel que spécifié dans le récepteur EventHub.
{
  "StorageAccount": "yourdiagstgacct",
  "ladCfg": {
    "sampleRateInSeconds": 15,
    "diagnosticMonitorConfiguration": {
      "performanceCounters": {
        "sinks": "MyMetricEventHub,MyJsonMetricsBlob",
        "performanceCounterConfiguration": [
          {
            "unit": "Percent",
            "type": "builtin",
            "counter": "PercentProcessorTime",
            "counterSpecifier": "/builtin/Processor/PercentProcessorTime",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "cpu percentage guest os"
              }
            ],
            "condition": "IsAggregate=TRUE",
            "class": "Processor"
          },
          {
            "unit": "Bytes",
            "type": "builtin",
            "counter": "UsedSpace",
            "counterSpecifier": "/builtin/FileSystem/UsedSpace",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Used disfilesystem used space"
              }
            ],
            "condition": "Name=\"/\"",
            "class": "Filesystem"
          }
        ]
      },
      "metrics": {
        "metricAggregation": [
          {
            "scheduledTransferPeriod": "PT1H"
          },
          {
            "scheduledTransferPeriod": "PT1M"
          }
        ],
        "resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
      },
      "eventVolume": "Large",
      "syslogEvents": {
        "sinks": "SyslogJsonBlob,LoggingEventHub",
        "syslogEventConfiguration": {
          "LOG_USER": "LOG_INFO"
        }
      }
    }
  },
  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },
  "fileLogs": [
    {
      "file": "/var/log/myladtestlog",
      "table": "MyLadTestLog",
      "sinks": "FilelogJsonBlob,LoggingEventHub"
    }
  ]
}

Le resourceId dans la configuration doit correspondre à celui de la machine virtuelle ou du groupe de machines virtuelles identiques.

  • Les graphiques et les alertes des métriques de la plateforme Azure connaissent le resourceId de la machine virtuelle sur laquelle vous travaillez. Il s’attend à trouver les données de votre machine virtuelle en utilisant le resourceId comme clé de recherche.
  • Si vous utilisez la mise à l’échelle automatique d’Azure, le resourceId dans la configuration de la mise à l’échelle automatique doit correspondre au resourceId utilisé par l’extension de diagnostic Linux (LAD).
  • Le resourceId est intégré aux noms des blobs JSON écrits par l’extension de diagnostic Linux.

Affichage de vos données

Utilisez le portail Azure pour afficher les données de performances ou pour définir des alertes :

Capture d’écran montrant la page Métriques dans le Portail Azure et la disponibilité sélectionnée.

Les données de performanceCounters sont toujours stockées dans une table de Stockage Azure. Les API Stockage Azure sont disponibles pour de nombreux langages et de nombreuses plateformes.

Les données envoyées aux récepteurs JsonBlob sont stockées dans des objets blob dans le compte de stockage nommé dans les paramètres protégés. Vous pouvez consommer les données blob dans n’importe quelle API de Stockage Blob Azure.

Vous pouvez aussi utiliser ces outils d’interface utilisateur pour accéder aux données de Stockage Azure :

La capture d’écran suivante d’une session de l’Explorateur Stockage Azure montre les tables et les conteneurs Stockage Azure générés à partir d’une extension de diagnostic Linux 4.0 correctement configurée sur une machine virtuelle de test. L’image ne correspond pas exactement à l’exemple de configuration de l’extension de diagnostic Linux 4.0.

Capture d’écran montrant l’Explorateur Stockage Azure.

Pour plus d’informations sur la façon de consommer des messages publiés sur un point de terminaison Event Hubs, consultez la documentation correspondante d’Event Hubs.

Étapes suivantes