APM-Dotnet-Agent bereitstellen
Wenn Sie den APM Dotnet-Agent erfolgreich durch Provisioning bereitstellen, können Sie den APM Dotnet-Agent in Windows oder Linux bereitstellen.
APM-Dotnet-Agent in Windows bereitstellen
Nach erfolgreichem Provisioning des APM Dotnet-Agent können Sie den APM Dotnet-Agent in Windows bereitstellen.
Um den APM Dotnet-Agent in einer beliebigen Anwendung bereitzustellen, müssen Sie vor dem Starten der Anwendung eine Gruppe von Umgebungsvariablen hinzufügen.
- Bereiten Sie PowerShell vor.
Bevor Sie den APM Dotnet-Agent unter Windows bereitstellen, müssen Sie PowerShell vorbereiten.
Hinweis
PowerShell Version 5.1 oder höher wird unterstützt.Wenn Sie PowerShell Version 4.0 verwenden, müssen Sie es auf 5.1 aktualisieren, um fortzufahren.
- Öffnen Sie Windows PowerShell als Administrator.
- Navigieren Sie zu dem Zielverzeichnis, in dem der APM-Agent bereitgestellt wurde.
- Führen Sie den folgenden Befehl in der PowerShell-Konsole aus:
Import-Module ./OpenTelemetry.DotNet.Auto.psm1
- Bereiten Sie Umgebungsvariablen auf PowerShell vor.Prüfen Sie die folgenden Umgebungsvariablen, die für das Deployment des APM Dotnet-Agent erforderlich sind:
$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>"
Dabei gilt:- <data-upload-endpoint>: DataUploadEndpoint URL, die beim Erstellen der APM-Domain generiert wird. Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
- <private-data-key>: Der von APM-Dotnet-Agents verwendete Agent-Installationsschlüssel (private dataKey), der beim Erstellen der APM-Domain generiert wird. Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
- <service-name>: Der Name des überwachten Service. Auf diese Weise können Sie auf der Benutzeroberfläche von Trace-Explorer nach Service filtern und Traces anzeigen.
Beispiel:$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"
Sie können bei Bedarf weitere Umgebungsvariablen hinzufügen. Beispiel: Sie müssen die Browser-Agent-Injection oder das gekürzte Trace konfigurieren. Der Umgebungsvariablenname muss das Präfix
$env:
verwenden, und der Umgebungsvariablenwert muss in Anführungszeichen gesetzt werden""
.Best Practice: Führen Sie die Clear-History nach dem Deployment des APM-.NET-Agent aus. Dadurch werden sensible Daten wie der private Datenschlüssel aus der PowerShell-Historie bereinigt.
- Optional - Registrieren Sie .NET Framework DLLs in GAC.
Dieser Schritt ist nur für .NET-Framework-Anwendungen erforderlich. Wenn Sie keine .NET-Framework-Anwendung haben, überspringen Sie diesen Schritt.
So registrieren Sie .NET-Framework-DLLs in GAC:Register-OpenTelemetryDllsToGac
- Stellen Sie den APM-Dotnet-Agent bereit.
Stellen Sie den APM Dotnet-Agent in den folgenden Anwendungen bereit:
Auf IIS-Server bereitstellen
Register-OpenTelemetryForIIS
Auf Windows-Service bereitstellen
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>
In Konsolenanwendung bereitstellen
Im Folgenden wird beschrieben, wie Sie den APM Dotnet-Agent in der Konsolenanwendung bereitstellen.
- Bereiten Sie die Umgebungsvariablen für das Deployment des APM Dotnet-Agents vor.
Prüfen Sie die folgenden Umgebungsvariablen, die für das Deployment des APM Dotnet-Agents für die Konsolenanwendung erforderlich sind:
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
Folgende Werte müssen ersetzt werden:
Platzhalter Beschreibung <Ziel> Das Zielverzeichnis, in dem der APM Dotnet-Agent durch Provisioning bereitgestellt wird. Beispiel: C:\tracer-home
<Dienstname> Der Name des überwachten Service. Auf diese Weise können Sie in der Trace-Explorer-Benutzeroberfläche nach Service filtern und Traces anzeigen.
Beispiel: apm_service
<data-upload-endpoint> Die dataUploadEndpoint-URL, die beim Erstellen der APM-Domain generiert wird. Beispiel: https://dataUploadEndpoint.com
<private-data-key> Der Agent-Installationsschlüssel, der vom APM Dotnet-Agent (privat dataKey) verwendet wird und beim Erstellen der APM-Domain generiert wird. Beispiel: IMWJ5UN2C
Hinweis
Informationen zum Datenuploadendpunkt und zu privaten Datenschlüsseln finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
- Führen Sie die Konsolenanwendung aus.
-
Öffnen Sie eine Eingabeaufforderung.
-
Legen Sie die Umgebungsvariablen aus Schritt 1 in der Eingabeaufforderung fest.
-
Führen Sie in derselben Eingabeaufforderung die Konsolenanwendung aus.
-
APM-Dotnet-Agent in Linux bereitstellen
Nach erfolgreichem Provisioning des APM Dotnet-Agent können Sie den APM Dotnet-Agent in Linux bereitstellen.
Um den APM Dotnet-Agent in einer beliebigen Anwendung bereitzustellen, müssen Sie vor dem Starten der Anwendung eine Gruppe von Umgebungsvariablen hinzufügen.
- Umgebungsvariablen vorbereiten
Um den APM Dotnet-Agent in einer beliebigen Anwendung bereitzustellen, müssen Sie Variablen festlegen und exportieren.
Prüfen und legen Sie die folgenden Umgebungsvariablen fest, die für das Deployment des APM Dotnet-Agent erforderlich sind: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>"
Folgende Werte müssen ersetzt werden:
Platzhalter Beschreibung <Ziel> Das Zielverzeichnis, in dem der APM Dotnet-Agent durch Provisioning bereitgestellt wird. <Dienstname> Der Name des überwachten Service. Auf diese Weise können Sie in der Trace-Explorer-Benutzeroberfläche nach Service filtern und Traces anzeigen.
Beispiel: apm_service
<data-upload-endpoint> Die dataUploadEndpoint-URL, die beim Erstellen der APM-Domain generiert wird. Beispiel: https://dataUploadEndpoint.com
Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
<private-data-key> Der vom APM-Dotnet-Agent verwendete Agent-Installationsschlüssel (private dataKey), der beim Erstellen der APM-Domain generiert wird. Beispiel: IMWJ5UN
Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
- Konfigurieren Sie zusätzliche Umgebungsvariablen, indem Sie das folgende Skript ausführen:
. $OTEL_DOTNET_AUTO_HOME/instrument.sh
- Führen Sie die Anwendung aus.
- Öffnen Sie eine Shell-Session.
- Legen Sie Umgebungsvariablen aus Schritt 1 und Schritt 2 in der Shellsession fest.
- Führen Sie die Anwendung in derselben Session aus.
Stellen Sie den APM Dotnet-Agent in Kubernetes mit dem Operator OpenTelemetry bereit
Im Folgenden wird beschrieben, wie Sie einen APM Dotnet-Agent mit dem Operator OpenTelemetry bereitstellen, um den APM Dotnet-Agent automatisch in Ihre Dotnet-Anwendungspods auf Kubernetes-(K8s-)Clustern zu injizieren und zu konfigurieren.
Mit dem APM Dotnet-Agent können Sie Dotnet-Anwendungen überwachen. Der Operator OpenTelemetry wird zum Deployment des APM Dotnet-Agent verwendet. Er ist eine Implementierung eines K8s-Operators, mit dem Dotnet-Agents einfach automatisch in Dotnet-Anwendungen injiziert werden können, die auf K8s-Pods ausgeführt werden.
Erforderlich
Installieren Sie den Operator OpenTelemetry im Cluster K8s.
Es stehen drei verschiedene Optionen zur Auswahl: Operator-Helm-Diagramm, Operatorreleasemanifest oder Operatorhub.
In den meisten Fällen muss ein cert-manager installiert werden. Wenn die Option "Helm-Diagramm" verwendet wird, können Sie stattdessen ein selbstsigniertes Zertifikat generieren.
Option 1: Operator-Helm-Diagramm
Mit dieser Option wird der OpenTelemetry-Operator mit dem Helm-Diagramm installiert.
- Helm-Diagramm-Repository hinzufügen.
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update
- Erstellen Sie den Kubernetes-Namespace für den Operator OpenTelemetry.
kubectl create namespace opentelemetry-operator-system
- Installieren Sie den Operator 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: Operatorreleasemanifest
Mit dieser Option werden YAML-Dateien zum Installieren des OpenTelemetry-Operators verwendet.
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
APM-Dotnet-Agent durch Deployment bereitstellen
So stellen Sie den APM Dotnet-Agent bereit:
- Erstellen Sie eine benutzerdefinierte Kubernetes-Ressource (CR).
Um die automatische Instrumentierung zu verwalten, muss der Operator OpenTelemetry mit Informationen zum APM Dotnet-Agent und seiner Konfiguration bereitgestellt werden, die mit der Benutzerdefinierten Ressourcendefinition (CRD) vorgenommen wurde.
Diese benutzerdefinierte Ressource wird vom Operator verwendet, um den Agent in den Pod zu kopieren und die erforderliche Konfiguration hinzuzufügen.
Führen Sie den folgenden Befehl aus, um die CR in Ihrem Kubernetes-Cluster zu erstellen:
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
Dabei gilt:- <data-upload-endpoint> ist die Endpunkt-URL für den Datenupload, die beim Erstellen der APM-Domain generiert wird. Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
- <private-data-key> ist der private Datenschlüssel für die APM-Dotnet-Agent-Installation, der beim Erstellen der APM-Domain generiert wird. Weitere Informationen finden Sie unter Datenuploadendpunkt und Datenschlüssel abrufen.
Die erstellte CR kann mit dem folgenden Befehl abgefragt werden:
Alle Endpunkte und Umgebungsvariablen müssen korrekt sein, damit die automatische Instrumentierung ordnungsgemäß funktioniert.kubectl get otelinst -n opentelemetry-operator-system
- Fügen Sie die Kubernetes-Annotation hinzu.
Der Operator OpenTelemetry verwendet eine Kubernetes-Annotation, um zu entscheiden, welche Pods automatisch mit dem APM Dotnet-Agent injiziert werden sollen.
Die Annotation kann einem Namespace hinzugefügt werden. In diesem Fall werden alle Pods in diesem Namespace injiziert. Die Annotation kann auch einzelnen PodSpec-Objekten hinzugefügt werden, die als Teil von Deployment, Statefulset und anderen Ressourcen verfügbar sind.
Anmerkung für x64 glibc:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet
Anmerkung für x64 musl:annotations: instrumentation.opentelemetry.io/inject-dotnet: opentelemetry-operator-system/inst-apm-dotnet instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: linux-musl-x64
So beginnen Sie mit der Bearbeitung Ihres Namespace:- Führen Sie den folgenden Befehl aus:
kubectl edit namespace <your-namespace-name>
- Nachdem Sie den obigen Befehl ausgeführt haben, bearbeiten Sie den Namespace, sobald der Editor geöffnet ist. Beispiel: Verwenden Sie den Editor
vi
. - Anmerkung zum Namespace hinzufügen. Denken Sie daran, Einrückung ist sehr wichtig, um es als gültige YAML-Datei zu machen.
Nachfolgend finden Sie ein Beispiel für einen Namespace mit der hinzugefügten Anmerkung: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:
- Führen Sie den folgenden Befehl aus:
- Starten Sie den Kubernetes-Pod neu.
Um den Pod neu zu starten, in den Sie den APM Dotnet-Agent automatisch injizieren möchten, führen Sie Folgendes aus:
kubectl delete pod <your-pod-name> -n <your-namespace-name>
- Prüfen Sie den Kubernetes-Pod.
Um zu prüfen, ob Ihr Pod nach dem Neustart automatisch mit dem APM Dotnet-Agent injiziert wurde, führen Sie Folgendes aus:
kubectl get pod <your-pod-name> -n <your-namespace-name> -o yaml
Sie können jetzt mit dem nächsten Schritt fortfahren: Deployment des APM-Dotnet-Agent prüfen.