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.

  1. 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.

    1. Öffnen Sie Windows PowerShell als Administrator.
    2. Navigieren Sie zu dem Zielverzeichnis, in dem der APM-Agent bereitgestellt wurde.
    3. Führen Sie den folgenden Befehl in der PowerShell-Konsole aus:
      Import-Module ./OpenTelemetry.DotNet.Auto.psm1
  2. 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.

  3. 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
  4. Stellen Sie den APM-Dotnet-Agent bereit.

    Stellen Sie den APM Dotnet-Agent in den folgenden Anwendungen bereit:

Auf IIS-Server bereitstellen

Führen Sie den folgenden Befehl in der PowerShell-Konsole aus:
Register-OpenTelemetryForIIS

Auf Windows-Service bereitstellen

Führen Sie den folgenden Befehl in der PowerShell-Konsole aus:
Register-OpenTelemetryForWindowsService -WindowsServiceName <WindowsServiceName>

In Konsolenanwendung bereitstellen

Im Folgenden wird beschrieben, wie Sie den APM Dotnet-Agent in der Konsolenanwendung bereitstellen.

  1. 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.

  2. Führen Sie die Konsolenanwendung aus.
    1. Öffnen Sie eine Eingabeaufforderung.

    2. Legen Sie die Umgebungsvariablen aus Schritt 1 in der Eingabeaufforderung fest.

    3. 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.

  1. 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.

  2. Konfigurieren Sie zusätzliche Umgebungsvariablen, indem Sie das folgende Skript ausführen:
    . $OTEL_DOTNET_AUTO_HOME/instrument.sh
  3. Führen Sie die Anwendung aus.
    1. Öffnen Sie eine Shell-Session.
    2. Legen Sie Umgebungsvariablen aus Schritt 1 und Schritt 2 in der Shellsession fest.
    3. 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.

  1. Helm-Diagramm-Repository hinzufügen.
    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
    helm repo update
  2. Erstellen Sie den Kubernetes-Namespace für den Operator OpenTelemetry.
    kubectl create namespace opentelemetry-operator-system
  3. 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.

Um den Cert-Manager zu installieren, führen Sie Folgendes aus:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.yaml
Um den Operator OpenTelemetry zu installieren, führen Sie Folgendes aus:
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:

  1. 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:
    Die erstellte CR kann mit dem folgenden Befehl abgefragt werden:
    kubectl get otelinst -n opentelemetry-operator-system
    Alle Endpunkte und Umgebungsvariablen müssen korrekt sein, damit die automatische Instrumentierung ordnungsgemäß funktioniert.
  2. 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:
  3. 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>
  4. 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.