Distribuisci agente Dotnet APM
Una volta eseguito correttamente il provisioning dell'agente Dotnet APM, è possibile distribuire l'agente Dotnet APM in Windows o Linux.
Distribuire l'agente Dotnet APM in Windows
Una volta eseguito correttamente il provisioning dell'agente Dotnet APM, è possibile distribuire l'agente Dotnet APM in Windows.
Per distribuire l'agente Dotnet APM su qualsiasi applicazione, è necessario aggiungere un set di variabili di ambiente prima di avviare l'applicazione.
- Preparare PowerShell.
Prima di distribuire l'agente APM Dotnet su Windows, è necessario preparare PowerShell.
Nota
PowerShell versione 5.1 o successiva è supportata.Se si dispone di PowerShell versione 4.0, è necessario aggiornarlo alla versione 5.1 per continuare.
- Aprire Windows PowerShell come amministratore.
- Passare alla directory di destinazione in cui è stato eseguito il provisioning dell'agente APM.
- Eseguire il comando seguente nella console PowerShell:
Import-Module ./OpenTelemetry.DotNet.Auto.psm1
- Preparare le variabili ambientali su PowerShell.Esaminare le seguenti variabili ambientali necessarie per la distribuzione dell'agente 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>"
Where:- <data-upload-endpoint>: URL DataUploadEndpoint generato quando viene creato il dominio APM. Per informazioni, vedere Ottenere endpoint di caricamento dati e chiavi dati.
- <private-data-key>: la chiave di installazione dell'agente utilizzata dagli agenti Dotnet APM (dataKey privato) generata al momento della creazione del dominio APM. Per informazioni, vedere Ottenere endpoint di caricamento dati e chiavi dati.
- <service-name>: il nome del servizio monitorato. Ciò consente di filtrare per servizio e visualizzare i trace nell'interfaccia utente di Trace Explorer.
Ad esempio:$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"
Se necessario, è possibile aggiungere altre variabili di ambiente. Ad esempio, se è necessario configurare l'iniezione dell'agente del browser o la traccia abbreviata. Il nome della variabile di ambiente deve utilizzare il prefisso
$env:
e il valore della variabile di ambiente deve essere racchiuso tra virgolette doppie""
.Best Practice: esegue la cancellazione della cronologia dopo aver distribuito l'agente APM .NET. In questo modo i dati riservati, ad esempio la chiave dati privata, vengono eliminati dalla cronologia PowerShell.
- Facoltativo: registra le DLL di .NET Framework in GAC.
Questo passo è richiesto solo dalle applicazioni del framework .NET. Se non si dispone di un'applicazione .NET Framework, saltare questo passo.
Per registrare le DLL del framework .NET in GAC, effettuare le operazioni riportate di seguito.Register-OpenTelemetryDllsToGac
- Distribuire l'agente Dotnet APM.
Distribuire l'agente APM Dotnet nelle seguenti applicazioni:
Distribuisci su server IIS
Register-OpenTelemetryForIIS
Distribuisci su servizio Windows
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>
Distribuzione nell'applicazione Console
Di seguito sono riportate informazioni su come distribuire l'agente APM Dotnet nell'applicazione Console.
- Preparare le variabili di ambiente per distribuire l'agente Dotnet APM.
Esaminare le seguenti variabili di ambiente necessarie per la distribuzione dell'agente Dotnet APM per l'applicazione 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
I valori seguenti devono essere sostituiti da quelli corretti:
Segnaposto descrizione; <destinazione> Directory di destinazione in cui viene eseguito il provisioning dell'agente Dotnet APM. Ad esempio: C:\tracer-home
<service-name> Il nome del servizio monitorato. Ciò consente di filtrare per servizio e visualizzare i trace nell'interfaccia utente di Trace Explorer.
Ad esempio apm_service
<data-upload-endpoint> L'URL dataUploadEndpoint generato quando viene creato il dominio APM. Ad esempio: https://dataUploadEndpoint.com
<chiave dati privata> Chiave di installazione dell'agente utilizzata dall'agente APM Dotnet (dataKey privato), generata al momento della creazione del dominio APM. Ad esempio IMWJ5UN2C
Nota
Per informazioni sull'endpoint di caricamento dati e sulle chiavi dati private, vedere Ottenere l'endpoint di caricamento dati e le chiavi dati.
- Eseguire l'applicazione Console.
-
Avviare un prompt dei comandi.
-
Impostare le variabili di ambiente dal passaggio 1 nel prompt dei comandi.
-
Nello stesso prompt dei comandi, eseguire l'applicazione console.
-
Distribuire l'agente Dotnet APM in Linux
Quando si esegue correttamente il provisioning dell'agente APM Dotnet, è possibile distribuire l'agente APM Dotnet in Linux.
Per distribuire l'agente Dotnet APM su qualsiasi applicazione, è necessario aggiungere un set di variabili di ambiente prima di avviare l'applicazione.
- Prepara variabili ambientali
Per distribuire l'agente Dotnet APM su qualsiasi applicazione, è necessario impostare ed esportare le variabili.
Rivedere e impostare le seguenti variabili ambientali necessarie per la distribuzione dell'agente 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>"
I valori seguenti devono essere sostituiti da quelli corretti:
Segnaposto descrizione; <destinazione> Directory di destinazione in cui viene eseguito il provisioning dell'agente Dotnet APM. <service-name> Il nome del servizio monitorato. Ciò consente di filtrare per servizio e visualizzare i trace nell'interfaccia utente di Trace Explorer.
Ad esempio apm_service
<data-upload-endpoint> L'URL dataUploadEndpoint generato quando viene creato il dominio APM. Ad esempio: https://dataUploadEndpoint.com
Per informazioni, vedere Ottenere l'endpoint di caricamento dati e le chiavi dati.
<chiave dati privata> Chiave di installazione dell'agente utilizzata dall'agente APM Dotnet (dataKey privato) generata al momento della creazione del dominio APM. Ad esempio: IMWJ5UN
Per informazioni, vedere Ottenere l'endpoint di caricamento dati e le chiavi dati.
- Configurare variabili di ambiente aggiuntive eseguendo lo script seguente:
. $OTEL_DOTNET_AUTO_HOME/instrument.sh
- Eseguire l'applicazione.
- Aprire una sessione della shell.
- Impostare le variabili ambientali dai passi 1 e 2 nella sessione shell.
- Nella stessa sessione, eseguire l'applicazione.
Distribuire l'agente Dotnet APM in Kubernetes utilizzando l'operatore OpenTelemetry
Di seguito sono riportate informazioni su come distribuire un agente Dotnet APM utilizzando l'operatore OpenTelemetry per iniettare e configurare automaticamente l'agente Dotnet APM nei pod dell'applicazione Dotnet sui cluster Kubernetes (K8s).
È possibile utilizzare l'agente Dotnet APM per monitorare le applicazioni Dotnet. L'operatore OpenTelemetry viene utilizzato per distribuire l'agente APM Dotnet ed è un'implementazione di un operatore K8s che fornisce un modo semplice per inserire automaticamente gli agenti Dotnet nelle applicazioni Dotnet in esecuzione su pod K8s.
Requisito
Installare OpenTelemetry Operator nel cluster K8s.
Sono disponibili tre diverse opzioni tra cui scegliere: Grafico timbro operatore, File manifesto di rilascio operatore o Hub operatore.
Nella maggior parte dei casi, è necessario installare un cert-manager. Se si utilizza l'opzione del grafico helm, è possibile generare un certificato con firma automatica.
Opzione 1: grafico helm operatore
Questa opzione consente di utilizzare il grafico helm per installare l'operatore OpenTelemetry.
- Aggiungere il repository del grafico helm.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update
- Crea lo spazio di nomi Kubernetes per l'operatore OpenTelemetry.
kubectl create namespace opentelemetry-operator-system
- Installare l'operatore 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
Opzione 2: file manifesto di rilascio dell'operatore
Questa opzione consente di utilizzare i file YAML per installare l'operatore 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
Distribuisci agente Dotnet APM
Per distribuire l'agente Dotnet APM, effettuare le operazioni riportate di seguito.
- Crea una risorsa personalizzata (CR) Kubernetes.
Per gestire la strumentazione automatica, è necessario che all'operatore OpenTelemetry vengano fornite informazioni sull'agente Dotnet APM e sulla relativa configurazione che viene eseguita utilizzando la definizione di risorse personalizzate (CRD).
Questa risorsa personalizzata verrà utilizzata dall'operatore per copiare l'agente nel pod e aggiungervi la configurazione richiesta.
Eseguire il comando seguente per creare la CR sul 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
Where:- <data-upload-endpoint> è l'URL dell'endpoint di caricamento dati generato quando viene creato il dominio APM. Per informazioni, vedere Ottenere l'endpoint di caricamento dati e le chiavi dati.
- <private-data-key> è la chiave dati privata di installazione dell'agente Dotnet APM generata quando viene creato il dominio APM. Per informazioni, vedere Ottenere l'endpoint di caricamento dati e le chiavi dati.
È possibile eseguire la query sulla CR creata eseguendo il seguente comando:
Tutti gli endpoint e le variabili di ambiente devono essere corretti affinché la strumentazione automatica funzioni correttamente.kubectl get otelinst -n opentelemetry-operator-system
- Aggiungere l'annotazione Kubernetes.
L'operatore OpenTelemetry utilizza l'annotazione Kubernetes per decidere quali pod devono essere iniettati automaticamente con l'agente Dotnet APM.
L'annotazione può essere aggiunta a uno spazio di nomi. In tal caso, tutti i pod all'interno di tale spazio di nomi verranno iniettati. L'annotazione può essere aggiunta anche a singoli oggetti PodSpec, disponibili come parte di Distribuzione, Statefulset e altre risorse.
Annotazione per x64 glibc:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
Annotazione per x64 musl:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: linux-musl-x64
Per iniziare a modificare lo spazio di nomi, effettuare le operazioni riportate di seguito.- Eseguire il comando:
kubectl edit namespace <your-namespace-name>
- Dopo aver eseguito il comando precedente, modificare lo spazio dei nomi una volta aperto l'editor. Ad esempio, utilizzare l'editor
vi
. - Aggiungere l'annotazione allo spazio di nomi. Tenere presente che il rientro è molto importante per renderlo un file YAML valido.
Di seguito è riportato un esempio di spazio di nomi con l'annotazione aggiunta.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:
- Eseguire il comando:
- Riavviare il pod Kubernetes.
Per riavviare il pod in cui si desidera inserire automaticamente l'agente Dotnet APM, eseguire le operazioni riportate di seguito.
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Verificare il pod Kubernetes.
Per verificare che il pod sia stato iniettato automaticamente con l'agente APM Dotnet dopo il riavvio, eseguire le operazioni riportate di seguito.
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
È ora possibile passare al passo successivo: Verifica distribuzione agente Dotnet APM.