> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Benutzerdefinierte Java-Instrumentierung

AppSignal ist kompatibel mit OpenTelemetry-Instrumentierungspaketen.
Einige dieser Instrumentierungspakete erfordern möglicherweise eine zusätzliche Einrichtung.

Diese Instrumentierungen enthalten nicht immer alle Informationen, die Sie zum Debuggen von Problemen benötigen.
Für ein feingranulareres Reporting können Sie benutzerdefinierte Instrumentierung hinzufügen.

Wir unterstützen [OpenTelemetry-Tracing][manual] wie in der OpenTelemetry-Dokumentation beschrieben.
Es ist möglich, einem Span mithilfe von OpenTelemetry-Span-Attributen weitere Daten hinzuzufügen.

Es gibt außerdem AppSignal-Span-Attribute, die ändern können, wie Traces gruppiert werden, sowie einige Attribute, die das Herausfiltern sensibler Daten ermöglichen.

## Einen neuen Span erstellen

Erstellen Sie mit dem Tracer aus dem globalen Tracer-Provider einen neuen Span.

<CodeGroup>
  ```java Java theme={null}
  import io.opentelemetry.api.GlobalOpenTelemetry;
  import io.opentelemetry.api.trace.Span;
  import io.opentelemetry.api.trace.Tracer;
  import io.opentelemetry.context.Scope;

  public void someFunction() {
      // Get OpenTelemetry tracer
      Tracer tracer = GlobalOpenTelemetry.getTracer("my-app");

      // Create a new span
      Span span = tracer.spanBuilder("My span").startSpan();

      // Set attributes
      span.setAttribute("operation.name", "handle_request");

      // Your application logic here

      // Close the span
      span.end();
  }
  ```
</CodeGroup>

*Hinweis: In diesen Beispielen verwenden wir den von OpenTelemetry gesetzten globalen Tracer-Provider. Möglicherweise möchten Sie den Tracer in Ihre Klassen injizieren, um die Testbarkeit zu verbessern.*

## Den aktuellen Span abrufen

Sie können auch den aktuell aktiven Span abrufen:

<CodeGroup>
  ```java Java theme={null}
  import io.opentelemetry.api.trace.Span;

  public void someFunction() {
      Span span = Span.current();

      // Set attributes on the current span
      span.setAttribute("user.id", userId);
      span.setAttribute("operation.name", "database_query");
  }
  ```
</CodeGroup>

*Hinweis: Dies gibt nur dann einen Span zurück, wenn bereits einer aktiv ist.*

Weitere Möglichkeiten zum Erstellen und Abrufen von Spans sind auf der [OpenTelemetry-Java-Instrumentierungsseite][manual] dokumentiert.

## AppSignal-Attribute

Sobald Sie einen Span erstellt oder abgerufen haben, können Sie bestimmte AppSignal-spezifische Attribute setzen, um anzupassen, wie die Daten in AppSignal eintreffen.

<CodeGroup>
  ```java Java theme={null}
  Span span = // Create a new span or fetch the current span
  span.setAttribute("attribute_name", "attribute_value");
  ```
</CodeGroup>

Weitere Informationen dazu, welche benutzerdefinierten AppSignal-Attribute unterstützt werden, finden Sie in unseren Leitfäden:

* [Tagging-Leitfaden](/guides/tagging)
* [Leitfaden zur Datenanpassung](/guides/custom-data)

[manual]: https://opentelemetry.io/docs/languages/java/api/
