Extension Microsoft Azure App Services

Extension Microsoft Azure App Services

Ce service est en version bêta publique. Si vous souhaitez nous faire part de vos remarques, contactez l'assistance Datadog. Lors de la période bêta, l'utilisation de cette extension ne fait l'objet d'aucune facturation.

Présentation

Microsoft Azure App Services est un groupe de ressources sans serveur qui vous permettent de créer et d’héberger des applications Web, des backends mobiles, des fonctions axées sur des événements, et des API RESTful sans gérer l’infrastructure. Ce groupe de ressources peut héberger des charges de travail de toutes tailles et offre des options de scaling automatique et de haute disponibilité.

Datadog propose des fonctionnalités de surveillance pour tous les types de ressources Azure App Services :

L’extension Datadog pour Azure App Services fournit des capacités de surveillance supplémentaires pour les applications Web Azure. Cette prise en charge inclut les éléments suivants :

  • Tracing APM distribué complet via l’instrumentation automatique
  • Prise en charge de l’instrumentation APM manuelle pour personnaliser les spans
  • Injection des Trace_ID dans les logs d’application
  • Prise en charge de l’envoi de métriques custom à l’aide de DogStatsD.

Configuration

Prérequis

Si vous ne l’avez pas déjà fait, configurez d’abord l’intégration Microsoft Azure.

L’extension APM .NET Datadog prend en charge les runtimes .NET suivants (architectures x64 et x86) lorsqu’elle est exécutée dans des instances Windows (AAS ne prend pas encore en charge les extensions sous Linux). Pour en savoir plus sur les bibliothèques à instrumentation automatique, consultez la documentation relative au traceur.

  • .NET Framework 4.7 et versions ultérieures
  • .NET Core 2.1
  • .NET Core 2.2 (fin de la prise en charge Microsoft le 23/12/2019)
  • .NET Core 3.0 (fin de la prise en charge Microsoft le 03/03/2020)
  • .NET Core 3.1

Installation

  1. Ouvrez le portail Azure et accédez au dashboard de l’instance Azure App Services que vous souhaitez instrumenter avec Datadog.
  2. Accédez à l’onglet Paramètres d’application de la page Configuration.
  3. Ajoutez votre clé d’API Datadog en tant que paramètre d’application DD_API_KEY, avec pour valeur votre clé d’API Datadog.
  4. Définissez DD_SITE sur . Valeur par défaut : datadoghq.com.
  5. Accédez à la page des extensions et cliquez sur Ajouter.
  6. Sélectionnez l’extension APM Datadog.
  7. Acceptez les conditions, cliquez sur OK et attendez la fin de l’installation.
  8. Redémarrez l’application principale : cliquez sur Arrêter, attendez l’arrêt complet, puis cliquez sur Démarrer.

Journalisation de votre application à partir d’Azure Web Apps

Pour envoyer des logs depuis votre application dans Azure App Services vers Datadog, vous devez utiliser Serilog. Cet outil permet d’injecter l’ID des traces, afin d’associer les logs aux traces dans Datadog. Pour activer cette fonction avec l’extension, ajoutez le paramètre d’application DD_LOGS_INJECTION:true.

Remarque : puisque cette opération s’effectue dans votre application, les logs de la plateforme Azure que vous pouvez envoyer avec des paramètres de diagnostic ne contiennent pas l’ID des traces.

Installez le package NuGet du récepteur Serilog de Datadog, afin d’envoyer des événements et des logs à Datadog. Par défaut, le récepteur transfère les logs via HTTPS sur le port 443. Exécutez la commande suivante dans la console de gestion de package de l’application :

PM> Install-Package Serilog.Sinks.Datadog.Logs

Initialisez ensuite le logger directement dans votre application. Remplacez <CLÉ_API_DATADOG> par votre clé d’API Datadog.

using Serilog;
using Serilog.Sinks.Datadog.Logs;

          Serilog.Log.Logger = new LoggerConfiguration()
              .WriteTo.DatadogLogs("<CLÉ_API_DATADOG>")
              .Enrich.FromLogContext()
              .CreateLogger();

Vous pouvez également remplacer le comportement par défaut et transférer des logs via TCP en précisant manuellement les propriétés requises suivantes : url, port, useSSL et useTCP. Si vous le souhaitez, vous pouvez préciser les tags source et service ainsi que des tags personnalisés.

Par exemple, pour transférer des logs vers le site américain de Datadog via TCP, utilisez la configuration de récepteur suivante :

using Serilog; 
using Serilog.Sinks.Datadog.Logs;

          var config = new DatadogConfiguration(
              url:"https://http-intake.logs.datadoghq.com", 
              port:10516, 
              useSSL:true, 
              useTCP:false);

          Serilog.Log.Logger = new LoggerConfiguration()
              .WriteTo.DatadogLogs(
                  "eb7c615e5fca779871203b7de9209b6c",
                  source: "<NOM_SOURCE>",
                  service: "<NOM_SERVICE>",
                  tags: new string[] { "<TAG_1>:<VALEUR_1>", "<TAG_2>:<VALEUR_2>" },
                  configuration: config
              )
              .Enrich.FromLogContext()
              .CreateLogger();

Désormais, les nouveaux logs sont directement envoyés à Datadog.

Par ailleurs, depuis la version 0.2.0, vous pouvez configurer le récepteur Datadog à l’aide d’un fichier appsettings.json et du package NuGet Serilog.Settings.Configuration.

Dans la matrice Serilog.WriteTo(), ajoutez une entrée pour DatadogLogs. Exemple :

"Serilog": {
  "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Datadog.Logs" ],
  "MinimumLevel": "Debug",
  "WriteTo": [
    { "Name": "Console" },
    {
      "Name": "DatadogLogs",
      "Args": {
        "apiKey": "<CLÉ_API>",
        "source": "<NOM_SOURCE>",
        "host": "<HOSTNAME>",
        "tags": ["<TAG_1>:<VALEUR_1>", "<TAG_2>:<VALEUR_2>"],
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
  "Properties": {
    "Application": "Sample"
  }
}

Métriques custom avec DogStatsD

Depuis la version 0.3.14-prerelease, l’extension App Services comprend une instance de DogStatsD (le service d’agrégation de métriques de Datadog). Grâce à l’extension, vous pouvez ainsi envoyer des métriques custom, des checks de service et des événements directement à Datadog depuis des apps Web Azure.

L’écriture de métriques custom et de checks dans une app Web suit les mêmes lignes que pour une application sur un host exécutant l’Agent Datadog. Toutefois, il n’est pas nécessaire de configurer des ports. Cette étape est effectuée automatiquement par l’extension. Pour envoyer des métriques custom à Datadog depuis Azure App Services à l’aide de l’extension :

  1. Ajoutez le package NuGet DogStatsD à votre projet Visual Studio.
  2. Initialisez DogStatsD et rédigez des métriques custom dans votre application.
  3. Déployez votre code dans une app Web .NET Azure prise en charge.
  4. Installez l’extension App Service Datadog.

En savoir plus sur les métriques custom.

Dépannage

Erreurs 5XX

Si votre application commence à renvoyer des erreurs 5XX immédiatement après l’installation, essayez de réinstaller l’extension après l’arrêt complet de l’application. Procédez comme suit :

  1. Arrêtez l’application.
  2. Supprimez l’extension Datadog.
  3. Réinstallez l’extension Datadog.
  4. Redémarrez votre application.

Le fait de réinstaller l’extension après l’arrêt complet de l’application résout généralement le problème. Toutefois, si les erreurs 5XX persistent, cela peut être dû à un paramètre de debugging activé, qui peut ralentir le démarrage de votre application et ainsi entraîner une erreur 500. Essayez les solutions suivantes :

  • Ajustez vos paramètres de logging et de debugging
  • Optez pour un plan App Service supérieur

Traces manquantes

Si vous ne recevez aucune trace ou seulement une partie d’entre elles, vérifiez que vous n’avez pas modifié les paramètres de port manuellement. Dans l’extension, l’Agent du traceur communique avec votre application pour identifier le bon port à utiliser pour le trafic externe. La modification des paramètres de port peut interférer avec ce processus, empêchant alors les traces d’être envoyées.

Besoin d’aide supplémentaire ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: