Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Dans ce didacticiel, vous ajoutez un collecteur OpenTelemetry en tant que conteneur side-car à une application Linux (Bring Your Own Code) dans Azure App Service. Pour les conteneurs personnalisés, consultez Tutoriel : Configurer un conteneur side-car pour un conteneur personnalisé dans Azure App Service.
Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
Les conteneurs sidecar dans App Service vous permettent de déployer des services et fonctionnalités supplémentaires sur vos applications Linux sans les associer étroitement au conteneur principal intégré ou personnalisé. Les conteneurs side-car fonctionnent aux côtés du conteneur principal de l’application dans le même plan App Service.
Vous pouvez ajouter jusqu’à neuf conteneurs sidecar pour chaque application Linux dans App Service. Par exemple, vous pouvez ajouter des services de surveillance, de journalisation, de configuration et de mise en réseau en tant que conteneurs sidecar. Un sidecar collecteur OpenTelemetry est un exemple de surveillance.
1. Configurer les ressources nécessaires
Vous commencez par créer les ressources utilisées par le tutoriel. Elles sont utilisées pour ce scénario spécifique et ne sont pas nécessaires pour les conteneurs sidecar en général.
Dans Azure Cloud Shell, exécutez les commandes suivantes. Assurez-vous de fournir le
<environment-name>.git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new <environment-name> azd provisionLorsque vous y êtes invité, indiquez l'abonnement et la région de votre choix. Exemple :
- Abonnement : Votre abonnement
- Région : (Europe) Europe Ouest.
Une fois le déploiement terminé, la sortie suivante doit s’afficher :
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Azure container registry name = <registry-name> Managed identity resource ID = <managed-identity-resource-id> Managed identity client ID = <managed-identity-client-id> Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/<subscription-id>/resourceGroups/<group-name>
Copiez ces valeurs de sortie pour une utilisation ultérieure. Vous pouvez également les trouver sur le portail, dans les pages de gestion des ressources respectives.
Remarque
azd provisionutilise les modèles inclus pour créer les ressources Azure suivantes :- Un groupe de ressources basé sur le nom de l'environnement.
- Un registre de conteneurs avec deux images déployées :
- Image Nginx avec le module OpenTelemetry ;
- Image collecteur OpenTelemetry configurée pour l’exportation vers Azure Monitor.
- Une identité gérée attribuée par l’utilisateur avec l’autorisation
AcrPullsur le groupe de ressources (pour extraire des images du registre). - Un espace de travail d'analyse des journaux.
- Un composant Application Insights.
2. Créer une application web
Dans cette étape, vous déployez un modèle d’application ASP.NET Core. De retour dans Azure Cloud Shell, exécutez les commandes suivantes. Remplacez <app-name> par un nom d’application unique.
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
Après quelques minutes, cette application Web .NET est déployée en tant que MyFirstAzureWebApp.dll sur une nouvelle application App Service.
3. Ajouter un conteneur sidecar
Dans cette section, vous ajoutez un conteneur sidecar à votre application Linux.
Dans le Portail Microsoft Azure, accédez à la page de gestion de l’application
Dans la page de gestion de l’application, dans le menu de gauche, sélectionnez Centre de déploiement.
Sélectionnez la bannière Intéressé par l’ajout de conteneurs à exécuter en même temps que votre application ? Cliquez ici pour essayer.
Lorsque la page se recharge, sélectionnez l’onglet Conteneurs (nouveau).
Sélectionnez Ajouter et configurez le nouveau conteneur comme suit :
- Nom : otel-collector
- Source d’image : Azure Container Registry
- Authentification : Informations d'identification de l'administrateur
-
Registre : Registre créé par
azd provision - Image : otel-collector
- Balise : la plus récente
Sélectionnez Appliquer.
4. Configurer des variables d’environnement
Pour l’exemple de scénario, le sidecar otel-collector est configuré pour exporter les données OpenTelemetry vers Azure Monitor, mais il a besoin de la chaîne de connexion comme variable d’environnement (consultez le fichier de configuration OpenTelemetry pour l’image otel-collector).
Vous configurez des variables d’environnement pour les conteneurs comme n’importe quelle application App Service, en configurant les paramètres d’application. La totalité des conteneurs de l’application peuvent accéder aux paramètres d’application.
Accédez à la page de gestion de l’application App Service.
Dans le menu de gauche, sélectionnez Variables d’environnement.
Ajoutez un paramètre d’application en sélectionnant Ajouter et configurez-le de la façon suivante :
- Nom : APPLICATIONINSIGHTS_CONNECTION_STRING
-
Valeur : chaîne de connexion dans la sortie de
azd provision. Si vous avez perdu la session Cloud Shell, vous pouvez également la trouver dans la page Vue d’ensemble de la ressource Application Insight, sous Chaîne de connexion.
Sélectionnez Appliquer, puis Appliquer, puis Confirmer.
5. Configurer l’instrumentation au démarrage
Dans cette étape, vous créez l’instrumentation de votre application selon les étapes décrites dans l’instrumentation zéro code OpenTelemetry .NET.
De retour dans Cloud Shell, créez startup.sh avec les lignes suivantes.
cat > startup.sh << 'EOF' #!/bin/bash # Download the bash script curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh -O # Install core files sh ./otel-dotnet-auto-install.sh # Enable execution for the instrumentation script chmod +x $HOME/.otel-dotnet-auto/instrument.sh # Setup the instrumentation for the current shell session . $HOME/.otel-dotnet-auto/instrument.sh export OTEL_SERVICE_NAME="MyFirstAzureWebApp-Azure" export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" # Run your application with instrumentation OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet /home/site/wwwroot/MyFirstAzureWebApp.dll EOFDéployez ce fichier sur votre application avec la commande Azure CLI suivante. Si vous êtes toujours dans le répertoire ~/MyFirstAzureWebApp, aucun autre paramètre n’est nécessaire car
az webapp uppar défaut sont déjà définies pour le groupe de ressources et le nom de l’application.az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type staticConseil
Cette approche déploie le fichier startup.sh séparément de votre application. De cette façon, la configuration de l’instrumentation est distincte de votre code d’application. Cependant, vous pouvez utiliser d’autres méthodes de déploiement pour déployer le script avec votre application.
De retour dans la page de gestion de l'application, dans le menu de gauche, sélectionnez Configuration.
Définissez la commande de démarrage sur /home/site/startup.sh.Il s’agit du même chemin que celui que vous avez déployé à l’étape précédente.
Sélectionnez Enregistrer, puis Continuer.
5. Vérifier dans Application Insights
Le sidecar otel-collector doit maintenant exporter des données vers Application Insights.
De retour dans l’onglet de navigateur pour
https://<app-name>.azurewebsites.net, actualisez la page quelques fois pour générer certaines requêtes web.Revenez à la page de présentation du groupe de ressources, puis sélectionnez la ressource Application Insights créée par
azd up. Désormais, des données doivent apparaître dans les graphiques par défaut.
Remarque
Dans ce scénario de surveillance très courant, Application Insights n’est qu’une des cibles OpenTelemetry que vous pouvez utiliser, telles que Jaeger, Prometheus et Zipkin.
6. Nettoyer les ressources
Lorsque vous n’avez plus besoin de l’environnement, vous pouvez supprimer les groupes de ressources et toutes les ressources associées. Exécutez simplement ces commandes dans Cloud Shell :
cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down