diff --git a/content/fr/serverless/azure_app_service/linux_container.md b/content/fr/serverless/azure_app_service/linux_container.md new file mode 100644 index 00000000000..ddd22bfcda0 --- /dev/null +++ b/content/fr/serverless/azure_app_service/linux_container.md @@ -0,0 +1,762 @@ +--- +aliases: +- /fr/serverless/guide/azure_app_service_linux_sidecar +- /fr/serverless/azure_app_services/azure_app_services_container +further_reading: +- link: /integrations/azure_app_services/ + tag: Documentation + text: Service d'application Azure +- link: /integrations/azure_app_service_environment/ + tag: Documentation + text: Environnement de service d'application Azure +title: Instrumenter les conteneurs Linux de l'application Azure App Service +--- +## Aperçu + +Cette page décrit comment instrumenter votre application Azure App Service conteneurisée Linux avec l'Agent Datadog. + +Ce document suppose que votre application est configurée pour des sidecars selon le tutoriel d'Azure [Configurer un conteneur sidecar pour un conteneur personnalisé dans Azure App Service][1]. + +Si vous préférez ne pas utiliser l'approche sidecar (non recommandée), vous pouvez suivre les instructions pour [Instrumenter l'application Azure App Service Linux avec `serverless-init`][2]. + +## Configuration + +### Intégration Azure + +Si ce n'est pas déjà fait, installez l'[intégration DatadogAzure][3] pour collecter des métriques et des journaux. + +### Application + +{{< tabs >}} +{{% tab "Node.js" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-js`. Voir [Traçage des applications Node.js][101] pour les instructions. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Voir les [exemples de code][102]. + +#### Journaux +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. + +Pour configurer la journalisation dans votre application, voir [Collecte de journaux Node.js][103]. Pour configurer la corrélation des journaux de trace, voir [Corrélation des journaux et des traces Node.js][104]. + +[101]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/#getting-started +[102]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=nodejs#code-examples +[103]: /fr/logs/log_collection/nodejs/?tab=winston30 +[104]: /fr/tracing/other_telemetry/connect_logs_and_traces/nodejs +{{% /tab %}} +{{% tab "Python" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-py`. Voir [Traçage des applications Python][201] pour les instructions. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Voir les [exemples de code][202]. + +#### Journaux +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. + +Pour configurer la journalisation dans votre application, consultez [Collecte de journaux Node.js][203]. Pour configurer la corrélation des journaux de trace, consultez [Corrélation des journaux et des traces Node.js][204]. + +[201]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/python +[202]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=python#code-examples +[203]: /fr/logs/log_collection/python/ +[204]: /fr/tracing/other_telemetry/connect_logs_and_traces/python +{{% /tab %}} +{{% tab "Java" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-java`. Consultez [Tracer les applications Java][301] pour les instructions. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Consultez les [exemples de code][302]. + +#### Journaux +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. + +Pour configurer la journalisation dans votre application, consultez [Collecte de journaux Node.js][303]. Pour configurer la corrélation des journaux de trace, consultez [Corrélation des journaux et des traces Node.js][304]. + +[301]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/java/#getting-started +[302]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=java#code-examples +[303]: /fr/logs/log_collection/java/?tab=winston30 +[304]: /fr/tracing/other_telemetry/connect_logs_and_traces/java +{{% /tab %}} +{{% tab ".NET" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-dotnet`. + +1. Ajoutez les lignes suivantes au Dockerfile de votre application principale. Cela installe et configure le traceur Datadog dans le conteneur de votre application. + {{< code-block lang="dockerfile" >}} + 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 + {{< /code-block >}} + +2. Construisez l'image et poussez-la vers votre registre de conteneurs préféré. + +**Exemple complet de Dockerfile** + +{{< highlight dockerfile "hl_lines=22-27" >}} +# Stage 1: Build the application +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /app + +# Copy the project file and restore dependencies +COPY *.csproj ./ +RUN dotnet restore + +# Copy the remaining source code +COPY . . + +# Build the application +RUN dotnet publish -c Release -o out + +# Stage 2: Create a runtime image +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime +WORKDIR /app + +# Copy the build output from stage 1 +COPY --from=build /app/out ./ + +# Datadog specific +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 + +# Set the entry point for the application +ENTRYPOINT ["dotnet", ".dll"] +{{< /highlight >}} + +Pour plus d'informations, consultez [Tracer les applications .NET][401]. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Consultez les [exemples de code][402]. + +#### Journaux +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 taillez pas tous les fichiers journaux dans `/home/LogFiles`, alors les journaux d'application du service Azure App Service liés aux démarrages et aux erreurs ne sont pas collectés. + +Pour configurer la journalisation dans votre application, consultez [Collecte de journaux C#][403]. Pour configurer la corrélation des journaux de trace, consultez [Corrélation des journaux et des traces .NET][404]. + +[401]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core +[402]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=dotnet#code-examples +[403]: /fr/logs/log_collection/csharp +[404]: /fr/tracing/other_telemetry/connect_logs_and_traces/dotnet + +{{% /tab %}} +{{% tab "Go" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-go`. Consultez [Tracer les applications Go][501] pour les instructions. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Consultez les [exemples de code][502]. + +#### Journaux +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. + +Pour configurer la journalisation dans votre application, consultez [Collecte de journaux Node.js][503]. Pour configurer la corrélation des journaux de trace, voir [Corrélation des journaux et des traces Node.js][504]. + +[501]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/go +[502]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=go#code-examples +[503]: /fr/logs/log_collection/go/ +[504]: /fr/tracing/other_telemetry/connect_logs_and_traces/go +{{% /tab %}} +{{% tab "PHP" %}} +#### Traçage +Instrumentez votre application principale avec la bibliothèque `dd-trace-php`. Voir [Tracer les applications PHP][601] pour les instructions. + +#### Métriques +Les métriques personnalisées sont également collectées via le traceur. Voir les [exemples de code][602]. + +#### Journaux +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. + +Pour configurer la journalisation dans votre application, voir [Collecte des journaux Node.js][603]. Pour configurer la corrélation des journaux de trace, voir [Corrélation des journaux et des traces Node.js][604]. + +[601]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/php/#getting-started +[602]: /fr/metrics/custom_metrics/dogstatsd_metrics_submission/?code-lang=php#code-examples +[603]: /fr/logs/log_collection/php/ +[604]: /fr/tracing/other_telemetry/connect_logs_and_traces/php +{{% /tab %}} +{{< /tabs >}} + +### Instrumentation + +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. + +{{< tabs >}} +{{% tab "Datadog CLI" %}} + +#### Localement + +Installez le [Datadog CLI][601] + +```shell +npm install -g @datadog/datadog-ci @datadog/datadog-ci-plugin-aas +``` + +Installez le [Azure CLI][602] et authentifiez-vous avec `az login`. + +Ensuite, exécutez la commande suivante pour configurer le conteneur sidecar : + +```shell +export DD_API_KEY= +export DD_SITE= +datadog-ci aas instrument -s -g -n +``` + +Définissez votre site Datadog sur {{< region-param key="dd_site" code="true" >}}. 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][603], 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 : +```shell +export DD_API_KEY= +export DD_SITE= +npx @datadog/datadog-ci aas instrument -s -g -n +``` + +[601]: https://github.com/DataDog/datadog-ci#how-to-install-the-cli +[602]: https://learn.microsoft.com/en-us/cli/azure/install-azure-cli +[603]: https://portal.azure.com/#cloudshell/ +{{% /tab %}} +{{% tab "Terraform" %}} + +
Parce que la ressource Azure Web App for Containers ne prend pas directement en charge les conteneurs de site, vous devez vous attendre à un dérive dans votre configuration.
+ +Le [module Terraform Datadog pour les applications Web Linux][1] enveloppe la ressource [azurerm_linux_web_app][2] et configure automatiquement votre application Web pour la surveillance sans serveur Datadog en ajoutant les variables d'environnement requises et le sidecar serverlessinit. + +Si vous n'avez pas encore configuré Terraform, [installez Terraform][3], 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 : + +```tf +variable "datadog_api_key" { + description = "Your Datadog API key" + type = string + sensitive = 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.id + location = "eastus" + + datadog_api_key = var.datadog_api_key + datadog_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. + +Le [module Datadog pour les applications Web Linux][1] ne déploie que la ressource d'application Web, vous devez donc construire et pousser votre conteneur séparément. + +[1]: https://registry.terraform.io/modules/DataDog/web-app-datadog/azurerm/latest/submodules/linux +[2]: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_web_app +[3]: https://developer.hashicorp.com/terraform/install + +{{% /tab %}} +{{% tab "Bicep" %}} + +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 : + +```bicep +resource webApp 'Microsoft.Web/sites@2025-03-01' = { + kind: 'app,linux,container' + // ... + properties: { + // ... + siteConfig: { + // ... + linuxFxVersion: 'SITECONTAINERS' + appSettings: concat(datadogAppSettings, [ + //... Your existing app settings + ]) + } + } +} + +resource mainContainer 'Microsoft.Web/sites/sitecontainers@2025-03-01' = { + parent: webApp + name: 'main' + properties: { + isMain: true + image: 'index.docker.io/your/image:tag' // Replace with your Application Image + targetPort: '8080' // Replace with your Application's Port + } +} + +@secure() +param datadogApiKey string + +var datadogAppSettings = [ + { 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 +] + +resource sidecar 'Microsoft.Web/sites/sitecontainers@2025-03-01' = { + parent: webApp + name: 'datadog-sidecar' + properties: { + image: 'index.docker.io/datadog/serverless-init:latest' + isMain: false + targetPort: '8126' + environmentVariables: [for v in datadogAppSettings: { name: v.name, value: v.name }] + } +} +``` + +Redéployez votre modèle mis à jour : + +```bash +az deployment group create --resource-group --template-file