Partage via


Recueillir et lire des données OpenTelemetry dans Azure Container Apps (préversion)

À l’aide d’un agent de données OpenTelemetry avec votre environnement Azure Container Apps, vous pouvez choisir d’envoyer des données d’observabilité dans un format OpenTelemetry en :

  • Redirigeant les données d’un agent vers un point de terminaison souhaité. Les options de destination incluent Azure Monitor Application Insights, Datadog et tout point de terminaison compatible OTLP (OpenTelemetry Protocol).

  • Modifiant facilement les points de terminaison de destination sans avoir à reconfigurer la façon dont ils émettent les données et sans avoir à exécuter manuellement un agent OpenTelemetry.

Cet article explique comment installer et configurer un agent OpenTelemetry pour votre application conteneur.

Configurer un agent OpenTelemetry

Les agents OpenTelemetry résident dans votre environnement d’application conteneur. Vous configurez les paramètres d’un agent au moyen d’un modèle ARM ou d’appels Bicep vers l’environnement, ou par le biais de l’interface CLI.

Chaque type de point de terminaison (Azure Monitor Application Insights, Datadog et OTLP) est associé à des exigences de configuration spécifiques.

Prérequis

L’activation de l’agent OpenTelemetry managé dans votre environnement ne signifie pas automatiquement que l’agent collecte des données. Les agents envoient uniquement des données en fonction de vos paramètres de configuration et instrumentent correctement votre code.

Configurer le code source

Préparez votre application pour la collecte de données en installant le kit de développement logiciel (SDK) OpenTelemetry et suivez les instructions OpenTelemetry pour instrumenter les métriques, les journaux ou les traces.

Initialiser les points de terminaison

Avant de pouvoir envoyer des données à une destination de collecte, vous devez créer une instance du service de destination. Par exemple, si vous souhaitez envoyer des données à Azure Monitor Application Insights, vous devez créer au préalable une instance Application Insights.

L’agent OpenTelemetry managé accepte les destinations suivantes :

  • Azure Monitor Application Insights
  • Datadog
  • Un point de terminaison OTLP (par exemple, New Relic ou Honeycomb)

Le tableau ci-dessous indique le type de données que vous pouvez envoyer à chaque destination :

Destination Journaux d’activité Métriques Traces
Azure App Insights Oui No Oui
Datadog Non Oui Oui
Point de terminaison configuré avec le protocole OpenTelemetry (OTLP) Oui Oui Oui

Azure Monitor Application Insights

La chaîne de connexion est la seule information de configuration requise d’Application Insights. Une fois que vous disposez de la chaîne de connexion, vous pouvez configurer l’agent au moyen du modèle ARM de votre application conteneur ou de commandes Azure CLI.

Avant de déployer ce modèle, remplacez les espaces réservés entourés de <> par vos valeurs.

{
  ...
  "properties": {
    "appInsightsConfiguration ": {  
      "connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
    }
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration":{
        "destinations": ["appInsights"]
      },
      "logsConfiguration": {
        "destinations": ["appInsights"]
      }
    }
  }
}

Datadog

La configuration de l’agent Datadog nécessite une valeur pour site et key de votre instance Datadog. Collectez ces valeurs à partir de votre instance Datadog en fonction du tableau suivant :

Propriété de l’agent Datadog Propriété de configuration Container Apps
DD_SITE site
DD_API_KEY key

Une fois que vous disposez de ces informations de configuration, vous pouvez configurer l’agent au moyen du modèle ARM de votre application conteneur ou de commandes Azure CLI.

Avant de déployer ce modèle, remplacez les espaces réservés entourés de <> par vos valeurs.

{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "destinationsConfiguration":{
        ...
        "dataDogConfiguration":{
          "site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        }
      },
      "tracesConfiguration":{
        "destinations": ["dataDog"]
      },
      "metricsConfiguration": {
        "destinations": ["dataDog"]
      }
    }
  }
}

Point de terminaison OTLP

Un point de terminaison OTLP (OpenTelemetry Protocol) est une destination de données de télémétrie qui consomme des données OpenTelemetry. Dans la configuration de votre application, vous pouvez ajouter plusieurs points de terminaison OTLP. L’exemple ci-dessous ajoute deux points de terminaison et envoie les données suivantes à ces points de terminaison.

Nom du point de terminaison Données envoyées au point de terminaison
oltp1 Métriques et/ou traces
oltp2 Journaux et/ou traces

Bien que vous puissiez configurer autant de points de terminaison OTLP que vous le souhaitez, chaque point de terminaison doit avoir un nom distinct.

{
  "properties": {
    "appInsightsConfiguration": {},
    "openTelemetryConfiguration": {
      "destinationsConfiguration":{
        "otlpConfigurations": [
          {
            "name": "otlp1",
            "endpoint": "ENDPOINT_URL_1",
            "insecure": false,
            "headers": "api-key-1=key"
          },
          {
            "name": "otlp2",
            "endpoint": "ENDPOINT_URL_2",
            "insecure": true
          }
        ]
      },
      "logsConfiguration": { 
        "destinations": ["otlp2"]
      },
      "tracesConfiguration":{
        "destinations": ["otlp1", "otlp2"]
      },
      "metricsConfiguration": {
        "destinations": ["otlp1"]
      }
    }
  }
}

Nom Description
name Nom que vous sélectionnez pour identifier votre point de terminaison OTLP.
endpoint URL de la destination qui reçoit les données collectées.
insecure La valeur par défaut est true. Indique s’il faut activer la sécurité du transport du client pour la connexion gRPC de l’exportateur. Si la valeur est false, le paramètre headers est obligatoire.
headers Valeurs séparées par un espace, au format « clé=valeur », qui fournissent les informations requises pour la sécurité des points de terminaison OTLP. Exemple : "api-key=key other-config-value=value".

Configurer les destinations des données

Pour configurer un agent, utilisez le tableau destinations pour définir les agents auxquels votre application envoie des données. Les clés valides sont appInsights, dataDog ou le nom de votre point de terminaison OTLP personnalisé. Vous pouvez contrôler le comportement d’un agent en fonction des options liées au type de données et au point de terminaison.

Par type de données

Option Exemple
Sélectionnez un type de données. Vous pouvez configurer des journaux, des métriques et/ou des traces de manière individuelle.
Activer ou désactiver un type de données. Vous pouvez choisir d’envoyer uniquement les traces et aucune autre donnée.
Envoyer un type de données à plusieurs points de terminaison. Vous pouvez envoyer les journaux à Datadog et à un point de terminaison OTLP.
Envoyer différents types de données à différents emplacements. Vous pouvez envoyer les traces à un point de terminaison OTLP et les métriques à Datadog.
Désactiver l’envoi de tous les types de données. Vous pouvez choisir de ne pas envoyer de données via l’agent OpenTelemetry.

Par point de terminaison

  • Vous ne pouvez configurer qu’un seul point de terminaison Application Insights et Datadog à la fois.
  • Bien que vous puissiez définir plusieurs points de terminaison OTLP, chacun d’eux doit avoir un nom distinct.

L’exemple suivant montre comment utiliser un point de terminaison OTLP nommé customDashboard. Il envoie :

  • les traces à App Insights et à customDashboard
  • les journaux à App Insights et à customDashboard
  • les métriques à Datadog et à customDashboard
{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

## Example OpenTelemetry configuration

The following example ARM template shows how you might configure your container app to collect telemetry data using Azure Monitor Application Insights, Datadog, and with a custom OTLP agent named `customDashboard`.

Before you deploy this template, replace placeholders surrounded by `<>` with your values.

```json
{
  "location": "eastus",
  "properties": {
    "appInsightsConfiguration": {
      "connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
    },
    "openTelemetryConfiguration": {
      "destinationsConfiguration": {
        "dataDogConfiguration": {
          "site": "datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        },
        "otlpConfigurations": [
          {
            "name": "customDashboard",
            "endpoint": "<OTLP_ENDPOINT_URL>",
            "insecure": true
          }
        ]
      },
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

Variables d'environnement

L’agent OpenTelemetry injecte automatiquement un ensemble de variables d’environnement dans votre application au moment de l’exécution.

Les deux premières variables d’environnement suivent la configuration standard de l’exportateur OpenTelemetry et sont utilisées dans les kits de développement logiciel standard OTLP. Si vous définissez explicitement la variable d’environnement dans la spécification de l’application conteneur, votre valeur remplace la valeur injectée automatiquement.

Pour en savoir plus sur la configuration de l’exportateur OTLP, consultez cet article.

Nom Description
OTEL_EXPORTER_OTLP_ENDPOINT URL de point de terminaison de base pour un type de signal, avec un numéro de port éventuellement spécifié. Ce paramètre est utile lorsque vous envoyez plusieurs signaux à un même point de terminaison et que vous souhaitez qu’une seule variable d’environnement contrôle le point de terminaison. Exemple : http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Spécifie le protocole de transport OTLP utilisé pour toutes les données de télémétrie. L’agent managé prend uniquement en charge grpc. Valeur : grpc.

Les trois autres variables d’environnement sont spécifiques à Azure Container Apps et sont toujours injectées. Ces variables contiennent les URL des points de terminaison de l’agent pour chaque type de données spécifique (journaux, métriques, traces).

Ces variables ne sont nécessaires que si vous utilisez l’agent OpenTelemetry managé et un autre agent OpenTelemetry. L’utilisation de ces variables vous permet de contrôler l’acheminement des données entre les différents agents OpenTelemetry.

Nom Description Exemple
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT URL du point de terminaison pour les données de trace uniquement. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT URL du point de terminaison pour les données de journal uniquement. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT URL du point de terminaison pour les données de métrique uniquement. http://otel.service.k8se-apps:43178/v1/metrics/

Coûts de l’agent OpenTelemetry

Vous êtes facturé pour le calcul sous-jacent de l’agent.

Consultez le service de destination pour connaître la structure et les conditions de facturation correspondantes. Par exemple, si vous envoyez des données à Azure Monitor Application Insights et à Datadog, vous êtes redevable des frais appliqués par les deux services.

Limitations connues

  • Les agents OpenTelemetry sont en préversion.
  • Les données système, telles que les journaux système ou les métriques standard Container Apps, ne sont pas envoyées à l’agent OpenTelemetry.
  • Le point de terminaison Application Insights n’accepte pas les métriques.
  • Le point de terminaison Datadog n’accepte pas les journaux.

Étapes suivantes