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.
- 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.
- 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.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ù :- <data-upload-endpoint> : URL DataUploadEndpoint générée lors de la création du domaine APM. 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 les agents Dotnet APM (dataKey privés) qui est générée lors de la création du domaine APM. Pour plus d'informations, voir Obtenir un point d'extrémité de chargement de données et des clés de données.
- <service-name> : Nom du service surveillé. Vous pouvez ainsi filtrer par service et voir les traces dans l'interface utilisateur de l'explorateur de trace.
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.
- 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
- 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 le service Windows
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.
- 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.
- 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.
-
À 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.
- 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.
- 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 à partir des étapes 1 et 2 de la session shell.
- 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.
- 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
- 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 lancement d'opérateur
Cette option consiste à 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éployer l'agent Dotnet APM
Pour déployer l'agent Dotnet APM, procédez comme suit :
- 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ù :- <data-upload-endpoint> est l'URL du point d'extrémité de chargement des données générée lors de la création du domaine APM. 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> 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, voir Obtenir un point d'extrémité de chargement de données et des clés de données.
Le CR créé peut être interrogé en exécutant la commande suivante :
Tous les points d'extrémité et variables d'environnement doivent être corrects 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 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:
- Exécutez la commande suivante :
- 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>
- 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.