Déployer l'agent Dotnet APM

Après avoir provisionné l'agent Dotnet APM, vous pouvez déployer l'agent Dotnet APM sous Windows ou Linux.

Déployer l'agent Dotnet APM sous Windows

Lors du provisionnement de l'agent Dotnet APM, vous pouvez déployer l'agent Dotnet APM dans Windows.

Pour déployer l'agent APM Dotnet sur n'importe quelle application, vous devez ajouter un jeu de variables d'environnement avant de démarrer l'application.

  1. Préparez PowerShell.

    Avant de déployer l'agent Dotnet APM sous Windows, vous devez préparer PowerShell.

    Note

    La version PowerShell 5.1 ou supérieure est prise en charge.

    Si vous disposez de la version 4.0 de PowerShell, vous devez la mettre à jour vers la version 5.1 pour continuer.

    1. Ouvrez Windows PowerShell en tant qu'administrateur.
    2. Accédez au répertoire de destination dans lequel l'agent APM a été provisionné.
    3. Exécutez la commande suivante dans la console PowerShell :
      Import-Module ./OpenTelemetry.DotNet.Auto.psm1
  2. Préparez les variables environnementales sur PowerShell.
    Passez en revue les variables environnementales suivantes nécessaires au déploiement de l'agent Dotnet APM :
    $env:OTEL_EXPORTER_OTLP_ENDPOINT="<data-upload-endpoint>/20200101/opentelemetry"
    $env:OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey <private-data-key>"
    $env:OTEL_SERVICE_NAME="<service-name>"
    Où :
    Exemple :
    $env:OTEL_EXPORTER_OTLP_ENDPOINT="https://aaaaaaaaaaaaaaaaaaaaaa.apm-agt.us-phoenix-1.oci.oraclecloud.com/20200101/opentelemetry"
    $env:OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB"
    $env:OTEL_SERVICE_NAME="myservice"

    Vous pouvez ajouter d'autres variables d'environnement si nécessaire. Par exemple, si vous devez configurer l'injection d'agent dans le navigateur ou la trace abrégée. Le nom de la variable d'environnement doit utiliser le préfixe $env: et la valeur de la variable d'environnement doit être entre guillemets doubles "".

    Meilleures pratiques : Exécutez clear-history après avoir déployé l'agent .NET APM. Cela nettoie les données sensibles telles que la clé de données privée de l'historique PowerShell.

  3. Facultatif - Enregistrer les DLL .NET Framework dans GAC.

    Cette étape n'est requise que par les applications .NET Framework. Si vous n'avez pas d'application .NET Framework, ignorez cette étape.

    Pour enregistrer des DLL .NET Framework dans GAC, procédez comme suit :
    Register-OpenTelemetryDllsToGac
  4. Déployez l'agent Dotnet APM.

    Déployez l'agent Dotnet APM sur les applications suivantes :

Déployer sur le serveur IIS

Exécutez la commande suivante sur la console PowerShell :
Register-OpenTelemetryForIIS

Déployer sur le service Windows

Exécutez la commande suivante sur la console PowerShell :
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>

Déployer sur l'application de console

Voici des informations sur le déploiement de l'agent APM Dotnet dans l'application de console.

  1. Préparez les variables d'environnement pour déployer l'agent APM Dotnet.

    Vérifiez les variables d'environnement suivantes nécessaires au déploiement de l'agent APM Dotnet pour l'application de console :

    set COR_ENABLE_PROFILING=1
    set COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
    set COR_PROFILER_PATH_64=<destination>\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll
    set COR_PROFILER_PATH_32=<destination>\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll
    set CORECLR_ENABLE_PROFILING=1
    set CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318}
    set CORECLR_PROFILER_PATH_64=<destination>\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll
    set CORECLR_PROFILER_PATH_32=<destination>\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll
    set DOTNET_ADDITIONAL_DEPS=<destination>\AdditionalDeps
    set DOTNET_SHARED_STORE=<destination>\store
    set DOTNET_STARTUP_HOOKS=<destination>\net\OpenTelemetry.AutoInstrumentation.StartupHook.dll
    set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper
    set OTEL_DOTNET_AUTO_HOME=<destination>
    set OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES=OpenTelemetry.ODP
    set OTEL_SERVICE_NAME=<service-name>
    set OTEL_LOGS_EXPORTER=none
    set OTEL_DOTNET_AUTO_EXCLUDE_PROCESSES=dotnet.exe,dotnet
    set OTEL_EXPORTER_OTLP_ENDPOINT=<data-upload-endpoint>/20200101/opentelemetry
    set OTEL_EXPORTER_OTLP_HEADERS=Authorization=dataKey <private-data-key>
    set OTEL_DOTNET_ENABLE_BACKGROUND_ODP=true
    set OTEL_DOTNET_ENABLE_CONNECTION_ODP=true

    Les valeurs suivantes doivent être remplacées par les valeurs correctes :

    Espace réservé Description
    <destination> Répertoire de destination dans lequel l'agent APM Dotnet est provisionné.

    Par exemple : C:\tracer-home

    <nom du service> Nom du service surveillé.

    Vous pouvez ainsi filtrer par service et voir les traces dans l'interface utilisateur de l'explorateur de trace.

    Par exemple : apm_service

    <data-upload-endpoint> URL dataUploadEndpoint générée lors de la création du domaine APM.

    Par exemple : https://dataUploadEndpoint.com

    <private-data-key> Clé d'installation de l'agent utilisée par l'agent APM Dotnet (dataKey privé), qui est générée lors de la création du domaine APM.

    Par exemple : IMWJ5UN2C

    Note

    Pour plus d'informations sur le point d'extrémité de chargement de données et les clés de données privées, voir Obtenir un point d'extrémité de chargement de données et des clés de données.

  2. Exécutez l'application de console.
    1. Ouvrez une invite de commande.

    2. Définissez les variables d'environnement à partir de l'étape 1 dans l'invite de commande.

    3. À la même invite de commande, exécutez votre application de console.

Déployer l'agent Dotnet APM dans Linux

Lors du provisionnement de l'agent Dotnet APM, vous pouvez déployer l'agent Dotnet APM sous Linux.

Pour déployer l'agent Dotnet APM sur n'importe quelle application, vous devez ajouter un jeu de variables d'environnement avant de démarrer l'application.

  1. Préparer des variables d'environnement

    Pour déployer l'agent Dotnet APM sur n'importe quelle application, vous devez définir et exporter des variables.

    Réviser et définir les variables d'environnement suivantes nécessaires au déploiement de l'agent Dotnet APM :
    export OTEL_DOTNET_AUTO_HOME=<destination>
    export OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES=OpenTelemetry.ODP
    export OTEL_SERVICE_NAME=<service-name>
    export OTEL_LOGS_EXPORTER=none
    export OTEL_EXPORTER_OTLP_ENDPOINT=<data-upload-endpoint>/20200101/opentelemetry
    export OTEL_EXPORTER_OTLP_HEADERS="Authorization=dataKey <private-data-key>"
    

    Les valeurs suivantes doivent être remplacées par les valeurs correctes :

    Paramètre fictif Description
    <destination> Répertoire de destination dans lequel l'agent APM Dotnet est provisionné.
    <nom du service> Nom du service surveillé.

    Vous pouvez ainsi filtrer par service et voir les traces dans l'interface utilisateur de l'explorateur de trace.

    Par exemple : apm_service

    <data-upload-endpoint> URL dataUploadEndpoint générée lors de la création du domaine APM.

    Par exemple : https://dataUploadEndpoint.com

    Pour plus d'informations, voir Obtenir un point d'extrémité de chargement de données et des clés de données.

    <private-data-key> Clé d'installation de l'agent utilisée par l'agent Dotnet APM (dataKey privé) qui est générée lors de la création du domaine APM.

    Par exemple : IMWJ5UN

    Pour plus d'informations, voir Obtenir un point d'extrémité de chargement de données et des clés de données.

  2. Configurez des variables d'environnement supplémentaires en exécutant le script suivant :
    . $OTEL_DOTNET_AUTO_HOME/instrument.sh
  3. Exécutez l'application.
    1. Ouvrez une session shell.
    2. Définissez les variables d'environnement à partir des étapes 1 et 2 de la session shell.
    3. Dans la même session, exécutez votre application.

Déployer l'agent Dotnet APM dans Kubernetes à l'aide de l'opérateur OpenTelemetry

Voici des informations sur le déploiement d'un agent Dotnet APM à l'aide de l'opérateur OpenTelemetry pour injecter et configurer automatiquement l'agent Dotnet APM dans vos pods d'application Dotnet sur des grappes Kubernetes (K8s).

Vous pouvez utiliser l'agent Dotnet APM pour surveiller les applications Dotnet. L'opérateur OpenTelemetry est utilisé pour déployer l'agent Dotnet APM et est une mise en oeuvre d'un opérateur K8s qui fournit un moyen facile d'injecter automatiquement des agents Dotnet dans des applications Dotnet exécutées sur des pods K8s.

Conditions requises

Installez l'opérateur OpenTelemetry dans la grappe K8s.

Trois options différentes sont disponibles : Graphique d'aide de l'opérateur, Manifeste de version de l'opérateur ou Centre d'exploitation.

Dans la plupart des cas, un gestionnaire de certificats doit être installé. Si l'option de graphique de barre est utilisée, il existe une option pour générer un certificat auto-signé à la place.

Option 1 : Graphique d'aide de l'opérateur

Cette option consiste à utiliser le graphique d'aide pour installer l'opérateur OpenTelemetry.

  1. Ajouter un référentiel de graphiques d'aide.
    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
    helm repo update
  2. Créez un espace de noms Kubernetes pour l'opérateur OpenTelemetry.
    kubectl create namespace opentelemetry-operator-system
  3. Installez l'opérateur OpenTelemetry.
    helm install opentelemetry-operator open-telemetry/opentelemetry-operator \
    --namespace opentelemetry-operator-system \
    --set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s"\
    --set admissionWebhooks.certManager.enabled=false\
    --set admissionWebhooks.autoGenerateCert.enabled=true

Option 2 : Manifeste de lancement d'opérateur

Cette option consiste à utiliser des fichiers YAML pour installer l'opérateur OpenTelemetry.

Pour installer le gestionnaire de certificats, exécutez les opérations suivantes :
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.yaml
Pour installer l'opérateur OpenTelemetry, exécutez les opérations suivantes :
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml

Déployer l'agent Dotnet APM

Pour déployer l'agent Dotnet APM, procédez comme suit :

  1. Créer une ressource personnalisée Kubernetes (CR).

    Pour gérer l'instrumentation automatique, l'opérateur OpenTelemetry doit recevoir des informations sur l'agent Dotnet APM et sa configuration à l'aide de la définition de ressource personnalisée (CRD).

    Cette ressource personnalisée sera utilisée par l'opérateur pour copier l'agent dans le pod et lui ajouter la configuration requise.

    Exécutez la commande suivante pour créer le CR sur votre grappe Kubernetes :

    kubectl apply -f - <<EOF
    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: inst-apm-dotnet
      namespace: opentelemetry-operator-system
    spec:
      dotnet:
        image: us-ashburn-1.ocir.io/idpyjkbcc9tk/apm-net-agent:latest
        env:
          - name: OTEL_EXPORTER_OTLP_ENDPOINT
            value: <data-upload-endpoint>/20200101/opentelemetry
          - name: OTEL_EXPORTER_OTLP_HEADERS
            value: "Authorization=dataKey <private-data-key>"
          - name: OTEL_LOGS_EXPORTER
            value: "none"
          - name: OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES
            value: "OpenTelemetry.ODP"
    EOF
    Où :
    Le CR créé peut être interrogé en exécutant la commande suivante :
    kubectl get otelinst -n opentelemetry-operator-system
    Tous les points d'extrémité et variables d'environnement doivent être corrects pour que l'instrumentation automatique fonctionne correctement.
  2. Ajoutez l'annotation Kubernetes.

    L'opérateur OpenTelemetry utilise l'annotation Kubernetes pour décider quels pods doivent être injectés automatiquement avec l'agent Dotnet APM.

    L'annotation peut être ajoutée à un espace de noms. Dans ce cas, tous les pods de cet espace de noms seront injectés. L'annotation peut également être ajoutée à des objets PodSpec individuels, disponibles dans le cadre du déploiement, de Statefulset et d'autres ressources.

    Annotation pour x64 glibc :
    annotations:
      instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
    Annotation pour x64 musl :
    annotations:
      instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
      instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: linux-musl-x64
    Pour commencer à modifier votre espace de noms, procédez de la façon suivante :
    • Exécutez la commande suivante :
      kubectl edit namespace <your-namespace-name>
    • Après avoir exécuté la commande ci-dessus, modifiez l'espace de noms une fois l'éditeur ouvert. Par exemple, à l'aide de l'éditeur vi.
    • Ajoutez l'annotation à l'espace de noms. Gardez à l'esprit que l'indentation est très importante pour en faire un fichier YAML valide.
    Voir ci-dessous un exemple d'espace de noms avec l'annotation ajoutée :
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        kubernetes.io/metadata.name: mynamespace
      annotations:
        instrumentation.opentelemetry.io/inject-dotnet: "opentelemetry-operator-system/inst-apm-dotnet"
      name: mynamespace
    spec:
  3. Redémarrez le pod Kubernetes.

    Pour redémarrer le pod dans lequel vous souhaitez injecter automatiquement l'agent Dotnet APM, exécutez les opérations suivantes :

    kubectl delete pod <your-pod-name> -n <your-namespace-name>
  4. Vérifiez le pod Kubernetes.
    Pour vérifier que votre pod a été injecté automatiquement avec l'agent Dotnet APM après son redémarrage, exécutez les opérations suivantes :
    kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml

Vous pouvez maintenant passer à l'étape suivante : Vérifier le déploiement de l'agent Dotnet APM.