Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

.NET-Anwendungen

Automatische Instrumentierung

Die automatische Instrumentierung für .NET kann automatisch Traces und Metriken für eine Vielzahl von Bibliotheken und Frameworks erfassen.

Die automatische Instrumentierung erfordert keine Änderungen an der Anwendung. Um es einzurichten, folgen Sie diesen Schritten:

  1. Laden Sie die glibc oder musl Version der Instrumentierungsbibliotheken (musl für Alpine, glibc für die meisten anderen Docker-Images) von den Releases des opentelemetry-dotnet-instrumentation Repository herunter. Entpacken Sie die Dateien und fügen Sie sie in Ihr Anwendungs-Docker-Image in ein Verzeichnis ein, hier verwenden wir /autoinstrumentation.

  2. Setzen Sie die folgenden Umgebungsvariablen, hier tun wir dies über die env des Containers in der Kubernetes-Pod-Spezifikation:

    env:
    - name: CORECLR_ENABLE_PROFILING
      value: "1"
    - name: CORECLR_PROFILER
      value: "{918728DD-259F-4A6A-AC2B-B85E1B658318}"
    - name: CORECLR_PROFILER_PATH
      # for glibc:
      value: "/autoinstrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so"
      # For musl use instead:
      # value: "/autoinstrumentation/linux-musl-x64/OpenTelemetry.AutoInstrumentation.Native.so"
    - name: DOTNET_ADDITIONAL_DEPS
      value: "/autoinstrumentation/AdditionalDeps"
    - name: DOTNET_SHARED_STORE
      value: "/autoinstrumentation/store"
    - name: DOTNET_STARTUP_HOOKS
      value: "/autoinstrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll"
    - name: OTEL_DOTNET_AUTO_HOME
      value: "/autoinstrumentation"
  3. Fügen Sie auch die zusätzlichen Umgebungsvariablen zum Konfigurieren des Dienstnamens und des Exporter-Endpunkts im Pod hinzu, unterstützte Protokolle sind gRPC und protobuf über HTTP.

  4. Stellen Sie Ihre Anwendung mit den Änderungen bereit.

  5. Überprüfen Sie, ob SUSE Observability Traces und/oder Metriken empfängt, indem Sie nach den Metriken/Traces im Metriken-/Trace-Explorer für Ihren Dienstnamen suchen.

Für weitere Details konsultieren Sie bitte die Open Telemetry-Dokumentation.

Manuelle Instrumentierung

Die manuelle Instrumentierung kann verwendet werden, wenn Sie Metriken, Traces oder Protokolle aus Teilen des Codes benötigen, die nicht von der automatischen Instrumentierung unterstützt werden. Zum Beispiel nicht unterstützte Bibliotheken, interner Code oder geschäftsbezogene Metriken.

Um diese Daten zu erfassen, müssen Sie Ihre Anwendung ändern.

  1. Fügen Sie das Open Telemetry SDK als Abhängigkeit hinzu.

  2. Fügen Sie Code zu Ihrer Anwendung hinzu, um Metriken, Spans oder Protokolle dort zu erfassen, wo es nötig ist.

Es gibt eine detaillierte Dokumentation dazu auf den Open Telemetry .NET SDK-Dokumentationsseiten.

Stellen Sie sicher, dass Sie den OTLP-Exporter verwenden (dies ist der Standard) und Auto-Konfiguration. Beim Bereitstellen der Anwendung werden der Dienstname und der Exporter über Umgebungsvariablen konfiguriert.

Metriken in SUSE Observability

Für einige .NET-Metriken, zum Beispiel Metriken des Garbage Collectors, hat SUSE Observability Diagramme für die entsprechenden Komponenten definiert. Für Kubernetes sind die Diagramme auf den Pods verfügbar. Es ist möglich, Diagramme für weitere Metriken hinzuzufügen, dies funktioniert sowohl für Metriken aus automatischer Instrumentierung als auch für anwendungsspezifische Metriken aus manueller Instrumentierung.