Surveillance et instrumentation d' Microsoft® Azure s à l'aide de l'agent Instana

Une fois l'agent hôte d' Instana s installé, le capteur d' Microsoft® Azure s est automatiquement installé. Vous pouvez consulter les indicateurs liés à Microsoft® Azure dans l'interface utilisateur d' Instana, une fois que vous avez configuré le capteur Microsoft® Azure comme indiqué dans la section consacrée à la configuration.

Remarque : pour surveiller à distance Azure dans un cluster Kubernetes ou Red Hat OpenShift, n'installez pas l'agent hôte Instana sur chaque nœud du cluster. Installer l'agent hôte sur une machine hôte dédiée.

Services surveillés

L'agent hôte d' Instana surveille les services gérés par Azure en collectant des données via les API de Azure. Instana prend en charge la surveillance des services suivants d' Azure :

Informations complémentaires

Systèmes d'exploitation pris en charge

Les systèmes d'exploitation pris en charge par le capteur Microsoft® Azure sont conformes aux exigences des agents hôtes. Pour plus d'informations, consultez la liste des systèmes d'exploitation pris en charge pour chaque agent hôte d' Instana.

Versions des capteurs et capacités de surveillance

La version du capteur « Azure » détermine les fonctionnalités de surveillance de l'abonnement :

Version du capteur Assistance pour les abonnements Description
1.2.x et auparavant Abonnement unique Surveille les ressources au sein d'un seul abonnement à l' Azure, dans un seul tenant
1.3.x et plus tard Abonnements multiples Permet de surveiller les ressources de plusieurs abonnements d' Azure s au sein d'un même tenant

Installation de l'agent Instana

Pour surveiller une machine virtuelle Azure ou un cluster Kubernetes fonctionnant sur Azure Kubernetes Service, consultez la section « Installation des agents hôtes Instana ».

Remarque : en fonction du nombre d'entités surveillées dans votre environnement cloud, vous devrez augmenter la mémoire allouée à votre agent hôte. Vous pouvez augmenter la mémoire de l'agent en définissant la variable d'environnement AGENT_MAX_MEM sur une valeur supérieure à la valeur par défaut 544 MiB.

Par exemple, pour allouer 1 Go de mémoire à l'agent, définissez AGENT_MAX_MEM=1024M.

Installez l'agent hôte d' Instana sur un hôte situé à l'intérieur ou à l'extérieur de votre environnement Azure. Instana permet de surveiller un ou plusieurs abonnements à l' Azure au sein d'un même tenant. Un seul agent d' Instana s prend en charge à la fois la surveillance à abonnement unique et la surveillance à abonnements multiples pour les services à distance d' Azure. Pour la surveillance à abonnement unique, suivez la procédure de configuration de la surveillance à abonnement unique. Pour surveiller plusieurs abonnements à l' Azure, suivez la procédure de configuration de la surveillance multi-abonnements.

Installation d'un agent d' Instana ation en dehors de votre environnement Azure

Si vous installez l'agent Instana en dehors de votre environnement Azure, celui-ci utilise par défaut le point de terminaison du cloud public Azure.

Pour spécifier le point de terminaison du nuage Azure que vous souhaitez utiliser, modifiez le fichier de configuration de l'agent /opt/instana/agent/etc/instana/configuration.yaml comme suit :

com.instana.plugin.azure:
  cloud: 'AzurePublicCloud'

Azure points de terminaison cloud

En fonction du point de terminaison cloud d' Azure que vous souhaitez utiliser, vous pouvez choisir parmi les valeurs de configuration cloud suivantes : AzurePublicCloud, AzureChinaCloud, AzureUSGovernmentCloud, et AzureGermanCloud. Pour plus d'informations sur les points de terminaison cloud d' Azure, consultez la page Azure cloud endpoints.

Assurez-vous d'avoir accès aux points de terminaison réseau suivants pour l'environnement cloud « Azure » que vous avez sélectionné :

Tableau 1. Azure mappages de points de terminaison cloud
Azure point de terminaison cloud Active Directory point de terminaison Noeud final de gestion
AzurePublic: Cloud public d' Microsoft Azure https://login.microsoftonline.com https://management.azure.com/
AzureChina: Le cloud national chinois de Microsoft https://login.chinacloudapi.cn/ https://management.chinacloudapi.cn/
AzureGermany: Le cloud national allemand de Microsoft https://login.microsoftonline.de/ https://management.microsoftazure.de/
AzureUsGovernment: Cloud du gouvernement américain https://login.microsoftonline.us/ https://management.usgovcloudapi.net/

Pour permettre la surveillance externe des services d' Azure, configurez votre pare-feu afin d'autoriser l'accès aux points de terminaison REST API mentionnés ci-dessus, en fonction de votre environnement cloud Azure. Veillez également à ce que le pare-feu autorise l'accès au point de terminaison Log Analytics à l'adresse https://api.loganalytics.io, ce qui est nécessaire principalement pour Databricks, indépendamment des points de terminais Azure.

Suivi de l' Azure par Instana

Instana Découvrez les ressources d' Azure. en utilisant deux méthodes principales :

  1. VM Service de métadonnées : l'agent d' Instana interroge le service de métadonnées de l'instance d' Azure (IMDS) à l'adresse http://169.254.169.254/metadata/instance afin de recueillir les informations de base concernant l'instance d' VM sur laquelle l'agent est installé.
  2. Azure Resource Manager (ARM) API : Instana utilise l'interface de programmation d'applications (API) ARM API pour identifier les ressources Azure disponibles dans un abonnement.

Vous pouvez indiquer l'ID client, la clé secrète du client et l'ID du tenant dans les fichiers de configuration. Instana récupère et actualise automatiquement les jetons d'accès, puis les utilise pour accéder aux API d' Azure s requises en fonction des autorisations accordées.

URL s relatives à l'autorisation : {activeDirectoryEndpoint} + {TenantId} + /oauth2/token

Le capteur associé à chaque ressource détectée recueille périodiquement des indicateurs et des métadonnées concernant cette ressource à l'aide des API de surveillance d' Azure.

Azure API

Azure Resource Manager (ARM) API : Instana utilise l'interface de programmation d'applications (API) ARM API pour identifier les ressources Azure au sein d'un abonnement et recueille des informations de configuration telles que les noms, les types, les emplacements et les balises. Instana utilise également ces informations pour comprendre comment les ressources sont reliées entre elles.

Les points de terminaison ARM API suivent généralement ce modèle : https://{managementendpoint}/subscriptions/{subscriptionId}/...

Le point de terminaison de gestion varie en fonction du point de terminaison cloud d' Azure. Consultez les exemples suivants :
  • https://management.azure.com/subscriptions/{subscriptionId}/...
  • https://management.usgovcloudapi.net/subscriptions/{subscriptionId}/...

Azure API de Monitor : Instana utilise le même service Azure Monitor API, qui partage le point de terminaison de gestion ARM, pour collecter des données de surveillance telles que des métriques, des journaux et des informations sur l'état de santé des ressources Azure.

Azure Les points de terminaison de l' API de Monitor suivent généralement ce modèle : https://{managementendpoint}/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...

Le point de terminaison de gestion varie en fonction du point de terminaison cloud d' Azure. Consultez les exemples suivants :
  • https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...
  • https://management.usgovcloudapi.net/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...

Principal de service

1. Création d'un principal de service

Pour activer la surveillance d' Azure, configurez l'agent hôte avec un principal de service disposant au minimum des autorisations de lecture. Vous pouvez créer un principal de service à l'aide du portail Azure, de l'interface de ligne de commande (CLI) Azure ou de l'interface de ligne de commande Azure PowerShell.

Créer un principal de service dans le portail Azure

Les étapes suivantes décrivent comment créer un compte d'entité de service disposant d'un accès en lecture à vos ressources dans le portail Azure.

Créez un principal de service en enregistrant une application sur le portail Azure :

  1. Ouvrez le portail de gestion Azure et sélectionnez Microsoft Entra ID.
  2. Copiez la valeur de l'identifiant du locataire. Vous avez besoin de cette valeur pour configurer l'agent afin qu'il se connecte à votre compte Azure.
  3. Sélectionnez Enregistrements d'application dans le panneau de navigation.
  4. Créez une nouvelle application en sélectionnant « Nouvel enregistrement » en haut de l'onglet « Enregistrements d'applications ».
  5. Saisissez le nom de votre application, conservez les valeurs par défaut pour tous les autres paramètres, puis cliquez sur « Enregistrer ».
  6. Copiez la valeur de l'identifiant de l'application (client). Vous avez besoin de cette valeur pour configurer l 'identifiant d'entité de service que l'agent utilise pour se connecter au compte Azure.
  7. Ouvrez l'application que vous venez de créer, puis sélectionnez « Certificats et secrets » > « Nouveau secret client » dans le menu de navigation pour créer une nouvelle clé de sécurité.
  8. Copiez la valeur de la nouvelle clé et enregistrez-la. Vous avez besoin de cette valeur pour configurer le secret d'entité de service que l'agent utilise pour se connecter à votre compte Azure.
Remarque : vous ne pouvez consulter les valeurs des secrets client qu'après leur création. Veillez à enregistrer la clé secrète dès sa création et avant de quitter la page.

Créer un principal de service à l'aide de l'interface de ligne de commande (CLI) d' Azure

Vous pouvez utiliser l 'interface de ligne de commande (CLI) d' Azure, une méthode rapide et simple pour créer un principal de service et lui attribuer un rôle en une seule commande.

  1. Installez l'interface de ligne de commande (CLI) d' Azure.
  2. Exécutez la az login commande dans votre terminal pour vous connecter à votre compte Azure, puis suivez les instructions à l'écran.
  3. Ouvrez votre terminal ou rendez-vous sur Azure Cloud Shell.
  4. Exécutez la commande suivante pour trouver votre identifiant d'abonnement :
    az account show --query id --output tsv
  5. Exécutez la commande suivante pour créer un principal de service. Remplacez service-principal-name, role, et subscription-ID par vos propres valeurs.
    az ad sp create-for-rbac --name "<service-principal-name>" --role "<role>" --scopes "/subscriptions/<subscription-id>"
    • --name: Un nom unique pour votre entité de service.
    • --role: Le rôle RBAC à attribuer, tel que contributeur, lecteur ou propriétaire.
    • --scopes: Le périmètre de ressources Azure auquel appliquer le rôle, par exemple votre abonnement, votre groupe de ressources ou une ressource spécifique.
  6. Le résultat de la commande précédente fournit les informations d'identification de l'entité de service. Copiez et conservez en lieu sûr l'identifiant appId client (Client ID), le mot de passe (Client secret) et l'identifiant du tenant (Tenant ID) figurant dans la sortie de la commande « JSON ». Le mot de passe n'est affiché qu'une seule fois et ne peut pas être récupéré par la suite.
  7. Exécutez la commande suivante pour vérifier l'attribution du nouveau rôle. Remplacez le appId par votre identifiant client :
    az role assignment list --assignee "<appId>"

2. Accorder au lecteur l'autorisation d'accéder à votre entité de service

En utilisant le portail Azure :

  1. Dans le portail Azure, sélectionnez « Tous les services » > « Général » > « Abonnements ».
  2. Sur la page des abonnements, sélectionnez votre abonnement, puis sélectionnez Contrôle d'accès (IAM).
  3. Sélectionnez « Ajouter une attribution de rôle », puis choisissez « Lecteur ». Cliquez sur Suivant.
  4. Dans la section « Membres », saisissez les informations suivantes :
    • Pour Assigner l'accès à, sélectionnez user, group ou service principal.
    • Pour les membres, cliquez sur « Sélectionner les membres », puis sélectionnez votre entité de service dans la liste de gauche.
  5. Cliquez sur Suivant, puis sélectionnez Révision + affectation.

En utilisant l'interface de ligne de commande (CLI) d' Azure :

Si vous attribuez le rôle dans Reader la même commande lors de la création de l'entité de service, l'interface de ligne de commande accorde automatiquement des droits de lecture à cette entité de service :
az ad sp create-for-rbac --name "<service-principal-name>" --role "Reader" --scopes /subscriptions/{subscription-id}

Pour vérifier le rôle de lecteur d'un principal de service à l'aide du script « Python » (facultatif), consultez le script « Python ».

3. Activez le capteur « Azure » dans l'agent

Pour activer la surveillance d' Azure, configurez le capteur « Azure » dans le fichier de configuration.yaml l'agent. Une configuration minimale pour la surveillance d'un seul abonnement ressemble à l'exemple suivant :
com.instana.plugin.azure:
  enabled: true
  subscription: "Your-Subscription-Id"
  tenant: "Your-Tenant-Id"
  principals:
    - id: "Your-Service-Principal-Account-Id"
      secret: "Your-Service-Principal-Secret"

Redémarrez l'agent hôte pour appliquer la nouvelle configuration. Une fois le redémarrage effectué, l'agent peut détecter automatiquement les services distants pris en charge sur l'abonnement spécifié.

Azure Resource Manager (ARM) utilise un modèle de régulation basé sur un « token bucket », qui autorise de courtes rafales de requêtes (par exemple, 250 lectures) avec un taux de réapprovisionnement constant (25 requêtes par seconde). La surveillance « Azure » de Instana recueille des métriques et des données sur les ressources dans l'ensemble des abonnements, ce qui peut générer un nombre élevé de requêtes « API », en particulier dans les environnements de grande envergure. Pour contourner cette limitation, vous pouvez créer plusieurs principaux de service. Pour savoir comment créer des entités de service, consultez l'article « Utilisation d' Azure PowerShell pour créer une entité de service avec un certificat ».

Une fois les entités de service créées, mettez à jour le /opt/instana/agent/etc/instana/configuration.yaml fichier sur l'agent hôte Instana comme suit :

com.instana.plugin.azure:
  enabled: true
  subscription: "Your-Subscription-Id"
  tenant: "Your-Tenant-Id"
  principals:
    - id: "Your-Service-Principal-Account-Id-1"
      secret: "Your-Base64-encoded-Service-Principal-Secret-1"
    - id: "Your-Service-Principal-Account-Id-2"
      secret: "Your-Base64-encoded-Service-Principal-Secret-2"
Remarque : les modifications apportées à ces configurations principales prennent effet immédiatement, sans qu'il soit nécessaire de redémarrer l'agent hôte.

Configuration

Configuration de proxy

Pour configurer l'agent hôte d' Instana. afin qu'il utilise un proxy, ajoutez les paramètres suivants à la configuration de l'agent :

com.instana.plugin.azure:
  proxy_host: 'example.com' # proxy host name or ip address
  proxy_port: 3128 # proxy port
  proxy_username: 'username' # OPTIONAL: proxy username
  proxy_password: 'password' # OPTIONAL: proxy password
 

Définissez les champs proxy_host et proxy_port pour permettre à l'agent d'acheminer le trafic via un serveur proxy.

Une fois le proxy configuré, redémarrez l'agent d' Instana pour que les modifications prennent effet.

Filtrage et balisage

L'agent hôte d' Instana prend en charge le filtrage des services d' Azure. Le filtrage des services et de leurs instances est basé sur des étiquettes et des groupes de ressources.

Pour plus d'informations sur l'ajout de balises aux ressources d' Azure, consultez la section « Utiliser les balises pour organiser vos ressources d' Azure et votre hiérarchie de gestion ».

Pour plus d'informations sur la définition des groupes de ressources dans l' Azure, consultez la page « Qu'est-ce que l' Azure? » à l'adresse Resource Manager?.

Appliquez le filtrage en modifiant le fichier de configuration de l'agent hôte Instana comme /opt/instana/agent/etc/instana/configuration.yaml suit :

com.instana.plugin.azure:
  # Comma separated list of tags in key:value format
  include_tags:
  # Comma separated list of tags in key:value format
  exclude_tags:
  # Comma separated list of resource groups
  include_resource_groups:
  # Comma separated list of resource groups
  exclude_resource_groups:
 

Vous pouvez également appliquer un filtrage au niveau de services spécifiques. Pour plus d'informations, voir la section Services surveillés pour plus de détails sur des services spécifiques.

Filtrage de l'API par service de gestion d'API

Lorsque vous avez trop d'API sous un même service API Management, il peut être difficile de collecter et d'analyser les données de manière efficace. Pour cibler les API importantes, configurez le filtrage d' API s en définissant une expression régulière inclusive ou exclusive, comme illustré dans l'exemple de fichier ` YAML ` suivant :

com.instana.plugin.azure.apimanagement:
  monitorApiList:
    - serviceName: 'robotShopApiGateway'
      #inclusiveApiRegex: '^(API name 1|API name 2)$'
      exclusiveApiRegex: '^(API name 1|API name 2)$'
 

Comme le montre l'exemple précédent, vous pouvez utiliser des expressions complexes avec la logique or et and. Si vous définissez à la fois inclusiveApiRegex et exclusiveApiRegex, l'agent hôte donne la priorité à exclusiveApiRegex.

Pour surveiller un très grand nombre de ressources, vous pouvez soit configurer plusieurs abonnements par agent, soit déployer plusieurs agents, chacun disposant d'un seul abonnement. Dans les deux cas, veillez à ce que les abonnements ne soient pas partagés entre les agents et restent mutuellement exclusifs.

Configuration de la surveillance multi-abonnements d' Azure (préversion publique)

Instana permet de surveiller plusieurs abonnements à l' Azure au sein d'un même tenant à l'aide d'un seul agent hôte. Cette fonctionnalité offre une visibilité complète sur l'ensemble de votre infrastructure d' Azure, sans nécessiter d'agents distincts pour chaque abonnement.

Prérequis

  • Tous les abonnements doivent appartenir au même tenant Azure.
  • Chaque abonnement nécessite au moins un principal de service disposant des autorisations du rôle « Reader ».

Configuration pour plusieurs abonnements

Pour surveiller plusieurs abonnements à l' Azure, configurez l'agent hôte Instana en indiquant les informations relatives à l'abonnement et à l'entité de service dans le /opt/instana/agent/etc/instana/configuration.yaml fichier :

com.instana.plugin.azure:
  enabled: true
  tenant: 'Your-Tenant-Id'
  subscriptions:
    - id: 'Subscription-Id-1'
      principals:
        - id: 'Service-Principal-Client-Id-1'
          secret: 'Service-Principal-Client-Secret-1'
        - id: 'Service-Principal-Client-Id-2'
          secret: 'Service-Principal-Client-Secret-2'
    - id: 'Subscription-Id-2'
      principals:
        - id: 'Service-Principal-Client-Id-3'
          secret: 'Service-Principal-Client-Secret-3'
        - id: 'Service-Principal-Client-Id-4'
          secret: 'Service-Principal-Client-Secret-4'

Chaque abonnement peut comporter plusieurs entités de service configurées pour répartir la charge d' API.

Bonnes pratiques pour la surveillance des abonnements multiples

  • Planification des entités de service : créez au moins 2 à 3 entités de service par abonnement afin d'éviter toute limitation de débit lors de la surveillance d'un grand nombre de ressources.
  • Répartition des ressources : lorsque vous surveillez un grand nombre de ressources, pensez à les répartir entre plusieurs abonnements et différentes régions, comme indiqué dans la documentation d' Azure.
  • Autorisations requises : assurez-vous que chaque entité de service dispose au minimum d'un rôle de lecteur pour accéder à l'abonnement. Les entités de service ne disposant pas des autorisations requises sont ignorées lors de la configuration du client d' API.

Remarques sur le dimensionnement des agents et l'évolutivité des ressources pour la surveillance multi-abonnements

Les remarques suivantes décrivent les limites de performance validées pour l'agent d' Instana s lors de la surveillance des ressources d' Azure s synthétiques. Ces résultats s'appuient sur des tests de résistance effectués sur Ubuntu 24.04 afin de déterminer la limite de sécurité garantissant un fonctionnement stable.

Remarque :

L'augmentation des ressources de la machine et de la taille du tas d' Java s permet de gérer un plus grand nombre d'entités. Toutefois, sachez que le dépassement de ces limites peut augmenter la fréquence des erreurs HTTP 429 (Trop de requêtes) de l' API Azure Resource Manager, en particulier pour certains types de ressources, tels que le stockage et les équilibreurs de charge.

Résultats validés des essais de charge

Le tableau suivant présente les seuils stables identifiés lors des tests. Le dépassement de ces seuils sans augmentation correspondante de la mémoire du tas pourrait entraîner java.lang.OutOfMemoryError.

Azure VM taille Caractéristiques techniques Agent Max Heap (INSTANA_AGENT_MAX_MEM) Ressources d' Azure s surveillées Principaux services utilisés par abonnement
D4ds_v6 standard 4 vCPU, 16 GiB RAM 2 048 Mo 3 000 3
D8s_v6 standard 8 vCPU, 32 GiB RAM 2 048 Mo 7 000 4

Évolutivité et contraintes d' API

Azure API limitation du débit (erreurs 429)

Bien que l'agent Instana puisse techniquement être adapté pour surveiller davantage de ressources en augmentant la puissance de la machine et l'allocation de mémoire, le portail Azure API impose ses propres limites.

  • Une surveillance à haute fréquence augmente le risque de recevoir des réponses d'erreur 429 de la part de Azure.
  • Les types de ressources tels que Microsoft.Storage/storageAccounts sont particulièrement sensibles à ces limites.
  • Des erreurs 429 fréquentes peuvent entraîner des lacunes dans la collecte des métriques et retarder la détection de nouvelles ressources.

Calcul des coûts liés à l'utilisation d' Azure API

Pour plus d'informations sur le calcul des coûts d'utilisation d' Azure API, consultez Azure API.