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éploiement de l'agent Dotnet APM sous Windows
Après avoir provisionné l'agent Dotnet APM, vous pouvez déployer l'agent Dotnet APM sous Windows.
Pour déployer l'agent Dotnet APM sur une application, vous devez ajouter un ensemble de variables d'environnement avant de démarrer l'application.
- Préparez PowerShell.
Avant de déployer l'agent Dotnet APM sous Windows, vous devez préparer PowerShell.
Remarque
PowerShell version 5.1 ou supérieure est pris en charge.Si vous disposez de la version 4.0 de PowerShell, vous devez la mettre à jour vers la version 5.1 pour continuer.
- Ouvrez Windows PowerShell en tant qu'administrateur.
- Accédez au répertoire de destination dans lequel l'agent APM a été provisionné.
- Exécutez la commande suivante dans la console PowerShell :
Import-Module ./OpenTelemetry.DotNet.Auto.psm1
- Préparez les variables environnementales sur PowerShell.Vérifiez les variables d'environnement 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ù :- <data-upload-endpoint> : URL DataUploadEndpoint générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- <private-data-key> : clé d'installation d'agent utilisée par les agents Dotnet APM (dataKey privé) générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- <service-name> : nom du service surveillé. Vous pouvez ainsi effectuer un filtrage par service et afficher les traces dans l'interface utilisateur de l'explorateur de traces.
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 de 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 placée entre guillemets doubles""
.Meilleure pratique : exécutez l'historique clair 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.
- Facultatif - Enregistrez les DLL .NET Framework dans GAC.
Cette étape n'est requise que par les applications .NET Framework. Si vous ne disposez pas d'application .NET Framework, ignorez cette étape.
Pour enregistrer des DLL de structure .NET dans GAC, procédez comme suit :Register-OpenTelemetryDllsToGac
- Déployez l'agent Dotnet APM.
Déployez l'agent Dotnet APM sur les applications suivantes :
Déployer sur le serveur IIS
Register-OpenTelemetryForIIS
Déployer sur un service Windows
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>
Déploiement sur l'application de console
Voici des informations sur le déploiement de l'agent Dotnet APM sur l'application de console.
- Préparez les variables d'environnement pour déployer l'agent Dotnet APM.
Consultez les variables d'environnement suivantes nécessaires au déploiement de l'agent Dotnet APM 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 Dotnet APM est provisionné. Par exemple : C:\tracer-home
<nom-service> Nom du service surveillé. Vous pouvez ainsi filtrer par service et visualiser les traces dans l'interface utilisateur de l'explorateur de traces.
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 d'agent utilisée par l'agent Dotnet APM (privé dataKey), générée lors de la création du domaine APM. Par exemple : IMWJ5UN2C
Remarque
Pour plus d'informations sur l'adresse de téléchargement de données et les clés de données privées, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- Exécutez l'application de console.
-
Ouvrez une invite de commande.
-
Définissez les variables d'environnement à partir de l'étape 1 dans l'invite de commande.
-
Dans la même invite de commande, exécutez l'application de console.
-
Déploiement de l'agent Dotnet APM sous Linux
Après avoir provisionné 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 ensemble de variables d'environnement avant de démarrer l'application.
- Préparer les variables d'environnement
Pour déployer l'agent Dotnet APM sur n'importe quelle application, vous devez définir et exporter des variables.
Vérifiez et définissez 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 :
Valeur de réserve Description <destination> Répertoire de destination dans lequel l'agent Dotnet APM est provisionné. <nom-service> Nom du service surveillé. Vous pouvez ainsi filtrer par service et visualiser les traces dans l'interface utilisateur de l'explorateur de traces.
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, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
<private-data-key> Clé d'installation d'agent utilisée par l'agent Dotnet APM (dataKey privé) générée lors de la création du domaine APM. Par exemple : IMWJ5UN
Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- Configurez des variables d'environnement supplémentaires en exécutant le script suivant :
. $OTEL_DOTNET_AUTO_HOME/instrument.sh
- Exécutez l'application.
- Ouvrez une session shell.
- Définissez les variables d'environnement des étapes 1 et 2 de la session shell.
- Dans la même session, exécutez l'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 clusters 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 implémentation d'un opérateur K8s fournissant un moyen facile d'injecter automatiquement des agents Dotnet aux applications Dotnet exécutées sur des pods K8s.
Prérequis
Installez l'opérateur OpenTelemetry dans le cluster K8s.
Vous avez le choix entre trois options différentes : Graphique de barre d'opérateur, Manifeste de version d'opérateur ou Hub d'opérateur.
Dans la plupart des cas, un cert-manager doit être installé. Si l'option de dossier helm est utilisée, il existe une option permettant de générer un certificat autosigné à la place.
Option 1 : Graphique de barre d'opérateur
Cette option permet d'utiliser le graphique helm pour installer l'opérateur OpenTelemetry.
- Ajoutez un référentiel de graphiques helm.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update
- Créez un espace de noms Kubernetes pour l'opérateur OpenTelemetry.
kubectl create namespace opentelemetry-operator-system
- 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 version de l'opérateur
Cette option permet d'utiliser des fichiers YAML pour installer l'opérateur OpenTelemetry.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.yaml
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
Déploiement de l'agent .NET APM
Pour déployer l'agent Dotnet APM, procédez comme suit :
- Créez une ressource personnalisée Kubernetes.
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 la demande de modification sur votre cluster 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ù :- <data-upload-endpoint> est l'URL d'adresse de téléchargement de données générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
- <private-data-key> est la clé de données privée d'installation de l'agent Dotnet APM qui est générée lors de la création du domaine APM. Pour plus d'informations, reportez-vous à Obtention de l'adresse de téléchargement de données et des clés de données.
Vous pouvez interroger le CR créé en exécutant la commande suivante :
Toutes les adresses et variables d'environnement doivent être correctes pour que l'instrumentation automatique fonctionne correctement.kubectl get otelinst -n opentelemetry-operator-system
- Ajoutez l'annotation Kubernetes.
L'opérateur OpenTelemetry utilise l'annotation Kubernetes pour décider quels pods doivent être auto-injectés 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 comme suit :- Exécutez la commande :
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.
Voici 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:
- Exécutez la commande :
- Redémarrez le pod Kubernetes.
Pour redémarrer le pod dans lequel vous souhaitez injecter automatiquement l'agent Dotnet APM, exécutez la commande suivante :
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Vérifiez le pod Kubernetes.
Pour vérifier que votre pod a été automatiquement injecté avec l'agent Dotnet APM après son redémarrage, exécutez la commande suivante :
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.