Si ce n’est pas déjà fait, installez l’intégration Datadog-Azure pour collecter des métriques et des journaux.
Application
Traçage
Instrumentez votre application principale avec la bibliothèque dd-trace-js. Voir Traçage des applications Node.js pour les instructions.
Metrics
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter les journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé lors des redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne taillez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés.
Instrumentez votre application principale avec la bibliothèque dd-trace-py. Voir Traçage des applications Python pour les instructions.
Metrics
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter des journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé lors des redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne taillez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés.
Instrumentez votre application principale avec la bibliothèque dd-trace-java. Voir Tracer les applications Java pour des instructions.
Metrics
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter les journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé lors des redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne taillez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés.
Instrumentez votre application principale avec la bibliothèque dd-trace-dotnet.
Ajoutez les lignes suivantes au Dockerfile de votre application principale. Cela installe et configure le traceur Datadog dans votre conteneur d’application.
RUN mkdir -p /datadog/tracer RUN mkdir -p /home/LogFiles/dotnet ADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v3.30.0/datadog-dotnet-apm-3.30.0.tar.gz /datadog/tracer RUN cd /datadog/tracer && tar -zxf datadog-dotnet-apm-3.30.0.tar.gz
Construisez l’image et poussez-la vers votre registre de conteneurs préféré.
Exemple complet de Dockerfile
# Stage 1: Build the application {#stage-1-build-the-application}FROMmcr.microsoft.com/dotnet/sdk:8.0ASbuildWORKDIR/app# Copy the project file and restore dependencies {#copy-the-project-file-and-restore-dependencies}COPY *.csproj ./RUN dotnet restore# Copy the remaining source code {#copy-the-remaining-source-code}COPY . .# Build the application {#build-the-application}RUN dotnet publish -c Release -o out# Stage 2: Create a runtime image {#stage-2-create-a-runtime-image}FROMmcr.microsoft.com/dotnet/aspnet:8.0ASruntimeWORKDIR/app# Copy the build output from stage 1 {#copy-the-build-output-from-stage-1}COPY --from=build /app/out ./# Datadog specific {#datadog-specific}RUN mkdir -p /datadog/tracerRUN mkdir -p /home/LogFiles/dotnetADD https://github.com/DataDog/dd-trace-dotnet/releases/download/v3.30.0/datadog-dotnet-apm-3.30.0.tar.gz /datadog/tracerRUNcd /datadog/tracer && tar -zxf datadog-dotnet-apm-3.30.0.tar.gz# Set the entry point for the application {#set-the-entry-point-for-the-application}ENTRYPOINT["dotnet","<your dotnet app>.dll"]
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter les journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé entre les redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne suivez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application du service Azure App liés aux démarrages et aux erreurs ne sont pas collectés.
Instrumentez votre application principale avec la bibliothèque dd-trace-go. Voir Tracer les applications Go pour des instructions.
Metrics
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter les journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé lors des redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne taillez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés.
Instrumentez votre application principale avec la bibliothèque dd-trace-php. Voir Tracer les applications PHP pour les instructions.
Metrics
Les métriques personnalisées sont également collectées via le traceur. Voir les exemples de code.
Logs
Le sidecar Datadog utilise le suivi de fichiers pour collecter les journaux. Datadog recommande d’écrire les journaux d’application dans /home/LogFiles/ car ce répertoire est conservé lors des redémarrages.
Vous pouvez également créer un sous-répertoire, tel que /home/LogFiles/myapp, si vous souhaitez plus de contrôle sur ce qui est envoyé à Datadog. Cependant, si vous ne taillez pas tous les fichiers journaux dans /home/LogFiles, alors les journaux d’application Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés.
L’instrumentation se fait à l’aide d’un conteneur sidecar. Ce conteneur sidecar collecte les traces, les métriques et les journaux de votre conteneur d’application principal et les envoie à Datadog.
Définissez votre site Datadog sur . Par défaut, c’est datadoghq.com.
Remarque : Pour les applications .NET, ajoutez le drapeau --dotnet pour inclure les variables d’environnement supplémentaires requises par le traceur .NET, et en plus le drapeau --musl si votre conteneur utilise dotnet sur une image musl libc (comme Alpine Linux).
Des drapeaux supplémentaires, comme --service et --env, peuvent être utilisés pour définir les balises de service et d’environnement. Pour une liste complète des options, exécutez datadog-ci aas instrument --help.
Azure Cloud Shell
Pour utiliser le Datadog CLI dans Azure Cloud Shell, ouvrez le cloud shell et utilisez npx pour exécuter le CLI directement. Définissez votre clé API et votre site dans les variables d’environnement DD_API_KEY et DD_SITE, puis exécutez le CLI :
Parce que la ressource Azure Web App for Containers ne prend pas directement en charge les conteneurs de site, vous devez vous attendre à des dérives dans votre configuration.
Si vous n’avez pas encore configuré Terraform, installez Terraform, créez un nouveau répertoire et créez un fichier appelé main.tf.
Ensuite, ajoutez ce qui suit à votre configuration Terraform, en le mettant à jour si nécessaire en fonction de vos besoins :
variable"datadog_api_key"{description="Your Datadog API key"type=stringsensitive=true}provider"azurerm"{features{}subscription_id="00000000-0000-0000-0000-000000000000" // Replace with your subscription ID
}resource"azurerm_service_plan""my_asp"{name="my-app-service-plan" // Replace with your app service plan name
resource_group_name="my-resource-group" // Replace with your resource group name
os_type="Linux"location="eastus"sku_name="P1v2"}module"my_web_app"{source="DataDog/web-app-datadog/azurerm//modules/linux"version="~> 1.0"name="my-web-app" // Replace with your web app name
resource_group_name="my-resource-group" // Replace with your resource group name
service_plan_id=azurerm_service_plan.my_asp.idlocation="eastus"datadog_api_key=var.datadog_api_keydatadog_service="my-service" // Replace with your service name
datadog_env="prod" // Replace with your environment (e.g. prod, staging)
datadog_version="0.0.0" // Replace with your application version
site_config={application_stack={docker_registry_url="https://index.docker.io" // Replace with your registry URL
docker_image_name="my-app:latest" // Replace with your image name
}}app_settings={DD_TRACE_ENABLED="true" // Example setting
}}
Enfin, exécutez terraform apply et suivez les invites.
Pour utiliser le sidecar avec les applications Web pour conteneurs, vous devez utiliser la SITECONTAINERS linuxFxVersion avec kind défini sur app,linux,container. Mettez à jour votre application Web existante pour inclure les paramètres d’application Datadog nécessaires et le sidecar, comme suit :
resourcewebApp'Microsoft.Web/sites@2025-03-01'={kind:'app,linux,container'// ...properties:{// ...siteConfig:{// ...linuxFxVersion:'SITECONTAINERS'appSettings:concat(datadogAppSettings,[//... Your existing app settings])}}}resourcemainContainer'Microsoft.Web/sites/sitecontainers@2025-03-01'={parent:webAppname:'main'properties:{isMain:trueimage:'index.docker.io/your/image:tag'// Replace with your Application ImagetargetPort:'8080'// Replace with your Application's Port}}@secure()paramdatadogApiKeystringvardatadogAppSettings=[{name:'DD_API_KEY',value:datadogApiKey}{name:'DD_SITE',value:'datadoghq.com'}// Replace with your Datadog site{name:'DD_SERVICE',value:'my-service'}// Replace with your service name{name:'DD_ENV',value:'prod'}// Replace with your environment (e.g. prod, staging){name:'DD_VERSION',value:'0.0.0'}// Replace with your application version{name:'WEBSITES_ENABLE_APP_SERVICE_STORAGE',value:'true'}// Uncomment for .NET applications// { name: 'DD_DOTNET_TRACER_HOME', value: '/datadog/tracer' }// { name: 'CORECLR_ENABLE_PROFILING', value: '1' }// { name: 'CORECLR_PROFILER', value: '{846F5F1C-F9AE-4B07-969E-05C26BC060D8}' }// { name: 'CORECLR_PROFILER_PATH', value: '/datadog/tracer/Datadog.Trace.ClrProfiler.Native.so' }{name:'DD_LOGS_INJECTION',value:'true'}{name:'DD_TRACE_ENABLED',value:'true'}// Add any additional options here]resourcesidecar'Microsoft.Web/sites/sitecontainers@2025-03-01'={parent:webAppname:'datadog-sidecar'properties:{image:'index.docker.io/datadog/serverless-init:latest'isMain:falsetargetPort:'8126'environmentVariables:[forvindatadogAppSettings:{name:v.name,value:v.name}]}}
Redéployez votre modèle mis à jour :
az deployment group create --resource-group <RESOURCE GROUP> --template-file <TEMPLATE FILE>
Consultez l’onglet Manuel pour des descriptions de toutes les variables d’environnement.
Mettez à jour votre application Web existante pour inclure les paramètres d’application Datadog nécessaires et le sidecar, comme suit :
{"$schema":"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion":"1.0.0.0","parameters":{"webAppName":{"type":"string"},// ...
"datadogApiKey":{"type":"securestring"}},"variables":{"datadogAppSettings":[{"name":"DD_API_KEY","value":"[parameters('datadogApiKey')]"},{"name":"DD_SITE","value":"datadoghq.com"},// Replace with your Datadog site
{"name":"DD_SERVICE","value":"my-service"},// Replace with your service name
{"name":"DD_ENV","value":"prod"},// Replace with your environment (e.g. prod, staging)
{"name":"DD_VERSION","value":"0.0.0"},// Replace with your application version
{"name":"WEBSITES_ENABLE_APP_SERVICE_STORAGE","value":"true"},// Uncomment for .NET applications
// { "name": "DD_DOTNET_TRACER_HOME", "value": "/datadog/tracer" }
// { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }
// { "name": "CORECLR_PROFILER", "value": "{846F5F1C-F9AE-4B07-969E-05C26BC060D8}" }
// { "name": "CORECLR_PROFILER_PATH", "value": "/datadog/tracer/Datadog.Trace.ClrProfiler.Native.so" }
{"name":"DD_LOGS_INJECTION","value":"true"},{"name":"DD_TRACE_ENABLED","value":"true"}// Add any additional options here
],"yourAppSettings":[// Add your app settings here
]},"resources":{"webApp":{"type":"Microsoft.Web/sites","apiVersion":"2025-03-01","name":"[parameters('webAppName')]","kind":"app,linux,container",// ...
"properties":{// ...
"siteConfig":{// ...
"linuxFxVersion":"SITECONTAINERS","appSettings":"[concat(variables('datadogAppSettings'), variables('yourAppSettings'))]"}}},"mainContainer":{"type":"Microsoft.Web/sites/sitecontainers","apiVersion":"2025-03-01","name":"[concat(parameters('webAppName'), '/main')]","properties":{"isMain":true,"image":"index.docker.io/your/image:tag",// Replace with your Application Image
"targetPort":"8080"// Replace with your Application's Port
}},"sidecar":{"type":"Microsoft.Web/sites/sitecontainers","apiVersion":"2025-03-01","name":"[concat(parameters('webAppName'), '/datadog-sidecar')]","properties":{"image":"index.docker.io/datadog/serverless-init:latest","isMain":false,"targetPort":"8126","copy":[{"name":"environmentVariables","count":"[length(variables('datadogAppSettings'))]","input":{"name":"[variables('datadogAppSettings')[copyIndex('environmentVariables')].name]","value":"[variables('datadogAppSettings')[copyIndex('environmentVariables')].name]"}}]}}}}
Redéployez votre modèle mis à jour :
az deployment group create --resource-group <RESOURCE GROUP> --template-file <TEMPLATE FILE>
Consultez l’onglet Manuel pour des descriptions de toutes les variables d’environnement.
Conteneur Sidecar
Dans le portail Azure, allez à Centre de déploiement et sélectionnez Ajouter.
Dans le formulaire Modifier le conteneur, fournissez ce qui suit :
Source de l’image : Docker Hub ou d’autres registres
Type d’image : Public
URL du serveur de registre : index.docker.io
Image et tag : datadog/serverless-init:latest
Port : 8126
Sélectionnez Appliquer.
Paramètres de l’application
Dans vos Paramètres de l’application dans Azure, définissez les variables d’environnement suivantes sur votre conteneur principal et le conteneur sidecar. Alternativement, définissez ces variables sur votre conteneur principal et activez l’option Autoriser l’accès à tous les paramètres de l’application.
DD_SERVICE : Comment vous souhaitez taguer votre service. Par exemple, sidecar-azure
DD_ENV : Comment vous souhaitez taguer votre environnement. Par exemple, prod
WEBSITES_ENABLE_APP_SERVICE_STORAGE : true. Définir cette variable d’environnement permet au /home/ montage de persister et d’être partagé avec le sidecar.
DD_SERVERLESS_LOG_PATH : Où vous écrivez vos journaux. Par exemple, /home/LogFiles/*.log ou /home/LogFiles/myapp/*.log
DD_AAS_INSTANCE_LOGGING_ENABLED : Lorsque true, la collecte des journaux est automatiquement configurée pour un chemin de fichier supplémentaire : /home/LogFiles/*$COMPUTERNAME*.log
DD_AAS_INSTANCE_LOG_FILE_DESCRIPTOR : Un descripteur de fichier optionnel utilisé pour un suivi de fichier plus précis. Recommandé pour les scénarios avec une rotation fréquente des journaux. Par exemple, définir _default_docker configure le tailleur de journaux pour ignorer les fichiers tournés et se concentrer uniquement sur le fichier journal actif d’Azure.
Si votre application a plusieurs instances, assurez-vous que le nom de fichier journal de votre application inclut la variable $COMPUTERNAME. Cela garantit que le suivi des journaux ne crée pas de journaux dupliqués provenant de plusieurs instances lisant le même fichier.
Pour les applications .NET : Variables d'environnement supplémentaires requises
Si vous configurez la surveillance d’une application .NET, configurez les variables d’environnement requises.
Do not set the following environment variables in your serverless environment. They should only be set in non-serverless environments.
DD_AGENT_HOST
DD_TRACE_AGENT_URL
Profilage
Le Profiler Continu de Datadog est disponible en aperçu pour Python et Node.js sur Linux Azure App Service.
Pour activer le Profiler Continu, définissez la variable d’environnement DD_PROFILING_ENABLED=true dans le conteneur de votre application.
Application d’exemple
L’exemple suivant contient une seule application avec le traçage, les métriques et les journaux configurés.
consttracer=require('dd-trace').init({logInjection:true,});constexpress=require("express");constapp=express();const{createLogger,format,transports}=require('winston');constlogger=createLogger({level:'info',exitOnError:false,format:format.json(),transports:[newtransports.File({filename:`/home/LogFiles/app-${process.env.COMPUTERNAME}.log`}),],});app.get("/",(_,res)=>{logger.info("Welcome!");res.sendStatus(200);});app.get("/hello",(_,res)=>{logger.info("Hello!");metricPrefix="nodejs-azure-sidecar";// Send three unique metrics, just so we're testing more than one single metric
metricsToSend=["sample_metric_1","sample_metric_2","sample_metric_3"];metricsToSend.forEach((metric)=>{for(leti=0;i<20;i++){tracer.dogstatsd.distribution(`${metricPrefix}.${metric}`,1);}});res.status(200).json({msg:"Sending metrics to Datadog"});});constport=process.env.PORT||8080;app.listen(port);