Konfigurieren der Filterung für „ Java “-Anwendungen
Sie können das Volumen der Trace-Daten für „ Java “-Anwendungen reduzieren, indem Sie bestimmte Spans anhand ihrer Attribute herausfiltern. Diese Funktion hilft Ihnen, die Kosten für die Datenerfassung zu optimieren und sich auf die für Ihre Anwendungsüberwachung relevantesten Traces zu konzentrieren.
Die attributbasierte Filterung ist für Spans in „ HTTP “ und „ JDBC “ in „ Java “-Anwendungen verfügbar. Weitere Informationen zur Reduzierung der aus der Ablaufverfolgung erfassten Daten finden Sie unter „Optimieren der Datenerfassung“ unter Instana.
Filteroptionen
Sie können die Anwendungsverlaufsdaten von „ Java “ mit den folgenden Methoden filtern:
- Methodenbasierte Filterung : Informationen zum Filtern von Spannen aus den Bereichen DynamoDB,, Redis und Kafka finden Sie unter „Endpunkte ignorieren “. Mit dieser Funktion können Sie Traces anhand von Methodennamen (wie z. B.
GET,consume, oderquery) und Endpunkten (wie z. B. Kafka Themennamen) ausschließen. - Filterung anhand von Span-Attributen : Verwenden Sie zur Filterung von Spans unter HTTP und JDBC die Filterung anhand von Span-Attributen. Diese Funktion bietet erweiterte Filteroptionen auf der Grundlage verschiedener Span-Attribute, wie beispielsweise URLs, SQL-Anweisungen oder Methoden von HTTP. Dieser Ansatz unterstützt flexiblen Musterabgleich (
strict,startswith,endswith, undcontains) und ermöglicht es, mehrere Attribute in einer einzigen Regel zu kombinieren.
Ausführliche Anweisungen zur Konfiguration der Filterung anhand von Span-Attributen finden Sie in den folgenden Abschnitten.
Beispiel für eine Referenzkurve
Das folgende Beispiel zeigt einen vollständigen Trace ohne Filterung, der in diesem Dokument als Referenz dient:

Filterung auf Basis von Span-Attributen
Die auf Span-Attributen basierende Filterung für „ Java “-Anwendungen kann ausschließlich über die configuration.yaml Agent-Datei konfiguriert werden. Umgebungsvariablen und Systemeigenschaften werden für die Filterkonfiguration nicht unterstützt.
Filterkonfiguration
Sie können Filterregeln konfigurieren, um Spans von HTTP und JDBC anhand von Attributen wie URLs, SQL-Anweisungen oder HTTP -Methoden auszuschließen.
Filterregeln werden im com.instana.tracing.filter Abschnitt der configuration.yaml Agent-Datei (instanaAgentDir/etc/instana/configuration.yaml) definiert. Die Konfiguration nutzt eine Struktur vom Typ „ YAML “, um Filterregeln auf der Grundlage von Span-Attributen zu definieren.
Verwenden Sie zur Definition von Filterregeln die folgende Konfiguration:
com.instana.tracing:
filter:
deactivate: <boolean>
exclude:
- name: <string>
attributes:
- key: <string>
values: [<string>, ...]
match_type: <string>
exclude Richtlinie mehrere Filterregeln definieren. Jede Regel kann mehrere Attribute haben, die alle übereinstimmen müssen, damit die Regel angewendet wird.| Feld | Erforderlich | Beschreibung |
|---|---|---|
filter |
Obligatorisch | Wurzelknoten für alle Filterregeln. |
deactivate |
Optional | Funktion zum Deaktivieren der Filterung, ohne die konfigurierten Filterregeln zu löschen. Wenn auf gesetzt true, ist die Filterung deaktiviert. Der Standardwert ist false (die Filterung bleibt aktiv). |
exclude |
Obligatorisch | Richtlinie, die die Ausschlussregeln zum Ausschließen von Spans aus einer Ablaufverfolgung enthält. Derzeit wird nur die exclude Richtlinie unterstützt. |
name |
Obligatorisch | Für Menschen lesbarer Name, der die Filterregel beschreibt. |
attributes |
Obligatorisch | Liste der Span-Attribute, die alle übereinstimmen müssen, damit eine Regel angewendet wird. |
key |
Obligatorisch | Span-Attributschlüssel. |
values |
Obligatorisch | Liste der Werte, die für das Attribut „span“ keyübereinstimmen müssen. Ein Attribut passt, wenn eines seiner values übereinstimmt. Verwenden Sie '*' als Platzhalter, um jeden Wert für den angegebenen Attributschlüssel abzugleichen (nützlich für die Filterung basierend auf dem Vorhandensein eines Attributs, unabhängig vom Wert). |
match_type |
Optional | Legt fest, wie die values von Span-Attributen abgeglichen werden. Gültige Werte: strict (Standard), startswith, endswith und contains. |
Unterdrückungsverhalten
- HTTP Filterung : Unterdrückung wird standardmäßig angewendet. Wenn ein „ HTTP “-Span ausgeschlossen wird, werden alle untergeordneten Spans und nachgelagerten Tracing-Vorgänge automatisch unterdrückt. Für Datenbankaufrufe, externe Dienstaufrufe oder andere Vorgänge, die durch die ausgeschlossene Anfrage „ HTTP “ ausgelöst werden, werden keine Spannen generiert.
- JDBC Filterung : Unterdrückung wird nicht angewendet. Wenn ein „ JDBC “-Span ausgeschlossen wird, werden untergeordnete Spans und nachfolgende Vorgänge in der Ablaufverfolgung weiterhin erfasst.
suppression Konfigurationsparameter kann nicht konfiguriert werden. Das Unterdrückungsverhalten wird automatisch anhand des Spannweiten-Typs bestimmt.Verwendung von Platzhaltern
Sie können den Platzhalter "*" im values Feld verwenden, um einen beliebigen Wert für ein bestimmtes Span-Attribut abzugleichen. Dies ist nützlich, wenn Sie Spans anhand des Vorhandenseins eines Attributs unabhängig von dessen Wert filtern möchten. Die Wildcard kann sowohl für die Filterung von HTTP als auch von JDBC verwendet werden.
Beispiel: Um alle Spans auszuschließen, die ein Fehlerattribut haben (unabhängig von der Fehlermeldung), verwenden Sie die folgende Konfiguration:
com.instana.tracing:
filter:
exclude:
- name: exclude all HTTP error spans
attributes:
- key: http.error
values: ["*"]
match_type: strict
- name: exclude all JDBC error spans
attributes:
- key: jdbc.error
values: ["*"]
match_type: strict
Regelausführungsreihenfolge
Filterregeln werden in der Reihenfolge ausgewertet, in der sie in der Konfiguration erscheinen. Wenn ein Bereich einer Filterregel entspricht, wird diese Regel angewendet und es werden keine nachfolgenden Regeln für diesen Bereich ausgewertet. Innerhalb der exclude Richtlinie bestimmt die erste übereinstimmende Regel das Filterverhalten.
Beispiel:
com.instana.tracing:
filter:
exclude:
- name: exclude specific internal health endpoint
attributes:
- key: http.url
values: [/api/internal/health]
match_type: strict
- name: exclude all health endpoints
attributes:
- key: http.url
values: [/health]
match_type: contains
In diesem Beispiel gilt die erste Regel, wenn eine Spanne mit übereinstimmt /api/internal/health. Wenn eine Spanne aber nicht /health/api/internal/health übereinstimmt, gilt die zweite Regel. Die Reihenfolge ist wichtig, da die erste übereinstimmende Regel verwendet wird.
HTTP Endpunktfilterung
Mit der Endpunktfilterung von „ HTTP “ können Sie „ HTTP “-Spans basierend auf Attributen wie „ URL “, „method“ und „headers“ ausschließen. Diese Funktion wird für die folgenden „ HTTP “-Frameworks unterstützt:
- Servlet : Anwendungen, die das Servlet „ Java “ verwenden API
- Spring Web : Anwendungen, die „ Spring MVC” und „ Spring Boot ” verwenden
Span-Attribute für die Endpunktfilterung „ HTTP “
Sie können die folgenden Span-Attribute verwenden, um Endpunkte von HTTP zu filtern. Die Spalte „UI-Anzeigename“ zeigt, wie jedes Attribut in der Benutzeroberfläche von „ Instana “ angezeigt wird, wenn Sie Spanne-Details anzeigen.
| Span-Attribut | Anzeigename der Benutzeroberfläche | Beschreibung | Beispielwert | Filterunterstützung |
|---|---|---|---|---|
http.url |
URL | URL oder Pfad | /api/users |
Ja |
http.method |
Methode | HTTP-Methode | GET |
Ja |
http.status |
Statuscode | HTTP Antwortstatuscode | 200 |
Begrenzt* |
http.host |
Host | Hostname mit Port | localhost:8080 |
Ja |
http.path |
Anforderungspfad | Anforderungspfad | /api/users |
Ja |
http.path_tpl |
Pfadvorlage | Routenvorlage oder Muster | /api/users/{id} |
Ja |
http.params |
Parameter | HTTP Abfragezeichenfolge | action=edit&id=5 |
Ja |
http.error |
Fehler | Fehlernachricht | Fehlerbeschreibung | Begrenzt* |
http.header.<header-name> |
Header | HTTP Anfrage-Header | header-value |
Ja |
http.header.<response-header-name> |
Header | HTTP-Antwortheader | header-value |
Begrenzt* |
http.status und Antwort-Header http.header.<response-header-name>), verfügen über eingeschränkte Filterfunktionen. Filterregeln, die auf diesen Attributen basieren, können Spans ausschließen, jedoch nicht die Unterdrückung von untergeordneten Spans und nachgelagerten Tracing-Prozessen erzwingen, da die Attributwerte zum Zeitpunkt der Entscheidung über die Unterdrückung nicht bekannt sind.Variationen der Benutzeroberfläche
Während die Schlüssel des Attributs „span“ für die Filterkonfiguration konstant bleiben, können die tatsächlich angezeigten Werte in der Benutzeroberfläche „ Instana “ je nach Kontext variieren:
http.statusZeigt den Statuscode mit einer für Menschen lesbaren Beschreibung an (z. B.200 – OK,404 – Not Found, oder500 – Internal Server Error). Verwenden Sie beim Filtern nur den numerischen Statuscode-Wert.http.error: Wird nur dann in der Benutzeroberfläche angezeigt, wenn der Fehlerwert eine nicht leere Zeichenfolge ist. Darüber hinaus kann dieses Attribut redigiert werden, wenn es sensible Daten enthält, wie sie in der Konfiguration für sensible Daten von Java Tracer definiert sind. Leere oder redigierte Fehler werden in der Benutzeroberfläche nicht angezeigt.http.paramsWenn die Abfragezeichenfolge leer oder unbeschrieben ist, zeigt die<no query parameters>Benutzeroberfläche anstelle eines leeren Werts an. Beim Filtern den tatsächlichen Wert der Abfragezeichenfolge abgleichen oder eine leere Zeichenfolge verwenden.http.url: Wird nur dann in der Benutzeroberfläche angezeigt, wenn es sich von unterscheidethttp.path. Wenn beide Werte identisch sind, wird nur der Pfad angezeigt, um Redundanzen zu vermeiden.
Beispiel für die Konfiguration der Endpunktfilterung in „ HTTP “
Das folgende Beispiel zeigt eine Filterkonfiguration für den Endpunkt „ HTTP “:
com.instana.tracing:
filter:
exclude:
- name: exclude HTTP health check endpoints
attributes:
- key: http.url
values: [/health, /ping, /ready]
match_type: endswith
- name: exclude HTTP OPTIONS requests
attributes:
- key: http.method
values: [OPTIONS]
match_type: strict
Im vorstehenden Beispiel erzwingt die Filterkonfiguration die folgenden Regeln:
- Schließt „ HTTP “-Spannen aus, deren „ URL “ mit
/health„,/ping“ oder/ready„.“ endet. Child-Spans und Downstream-Tracing werden automatisch unterdrückt. - Schließt „ HTTP “-Spannen mit der Methode „ HTTP
OPTIONS“ aus. Child-Spans und Downstream-Tracing werden automatisch unterdrückt.
Das folgende Beispiel zeigt die Wirkung der Filterung „ HTTP “ mit Unterdrückung. Wenn Sie diese Ablaufverfolgung mit der vollständigen Ablaufverfolgung ohne Filterung vergleichen (Abbildung 1), sehen Sie, dass Aufrufe von „ HTTP “ mit dem Parameter zusammen mit allen untergeordneten author=test2 Spans herausgefiltert werden:

JDBC Span-Filterung
Mit der Spannenfilterung von „ JDBC “ können Sie Datenbankspannen basierend auf Attributen wie SQL-Anweisungen, Verbindungszeichenfolgen und Fehlermeldungen ausschließen.
Span-Attribute für die Span-Filterung von „ JDBC “
Sie können die folgenden Span-Attribute verwenden, um Spans in „ JDBC “ zu filtern. Die Spalte „UI-Anzeigename“ zeigt, wie jedes Attribut in der Benutzeroberfläche von „ Instana “ angezeigt wird, wenn Sie Spannen-Details anzeigen.
| Span-Attribut | Anzeigename der Benutzeroberfläche | Beschreibung | Beispielwert |
|---|---|---|---|
jdbc.connection |
Verbindung | JDBC-Verbindungszeichenfolge | jdbc:mysql://localhost:3306/mydb |
jdbc.statement |
Anweisung | SQL-Anweisung | SELECT * FROM users |
jdbc.error |
Fehler | Fehlernachricht | Beschreibung des SQL-Fehlers |
Variationen der Benutzeroberfläche
Ähnlich wie bei den Attributen „ HTTP “ können die Attribute „ JDBC “ in der Benutzeroberfläche „ Instana “ Abweichungen aufweisen:
jdbc.error: Wird nur dann in der Benutzeroberfläche angezeigt, wenn der Fehlerwert eine nicht leere Zeichenfolge ist. Dieses Attribut kann redigiert werden, wenn es sensible Daten enthält, wie in der Konfiguration für sensible Daten von Java Tracer definiert. Leere oder redigierte Fehler werden in der Benutzeroberfläche nicht angezeigt.jdbc.statementSQL-Anweisungen können in der Benutzeroberfläche zu Anzeigezwecken gekürzt werden, wenn sie eine bestimmte Länge überschreiten, aber für die Filterauswertung wird die vollständige Anweisung verwendet.
Beispiel für die Konfiguration der Spannenfilterung in „ JDBC “
Das folgende Beispiel zeigt eine Konfiguration für die Filterung von „ JDBC “-Spannen:
com.instana.tracing:
filter:
exclude:
- name: exclude JDBC spans for audit tables
attributes:
- key: jdbc.statement
values: [audit_log, session_data]
match_type: contains
- name: exclude SELECT queries on MySQL database
attributes:
- key: jdbc.statement
values: [SELECT]
match_type: startswith
- key: jdbc.connection
values: [mysql]
match_type: contains
- name: exclude all JDBC error spans
attributes:
- key: jdbc.error
values: ['*']
match_type: strict
Im vorstehenden Beispiel erzwingt die Filterkonfiguration die folgenden Regeln:
- Schließt „ JDBC “-Spans aus, deren SQL-Anweisung oder
audit_logsession_dataenthält. - Schließt „ JDBC “-Spans mit SQL-Anweisungen, die mit beginnen
SELECT, und Verbindungszeichenfolgen, die enthaltenmysql, aus. - Alle JDBC -Spans ausschließen, die eine Fehlermeldung enthalten (die den
'*'Platzhalter verwenden, um mit einem beliebigen Fehlerwert übereinzustimmen).
Das folgende Beispiel zeigt die Wirkung der Filterung „ JDBC “. Wenn Sie diese Ablaufverfolgung mit der vollständigen Ablaufverfolgung ohne Filterung vergleichen (Abbildung 1), sehen Sie, dass die Anweisung „ select book0_.id as id1_0_, book0_.author as author2_0_, book0_.title as title3_0_ from book book0_ where book0_.author=?JDBC “ gefiltert wurde, wodurch zwei Spans aus der Ablaufverfolgung entfernt wurden:

Beispiel für die kombinierte Filterung von „ HTTP “ und „ JDBC “
Das folgende Beispiel zeigt, wie Sie die Filterregeln „ HTTP “ und „ JDBC “ gemeinsam konfigurieren können:
com.instana.tracing:
filter:
exclude:
- name: exclude HTTP health check endpoints
attributes:
- key: http.url
values: [/health, /status, /metrics]
match_type: strict
- name: exclude JDBC queries for temporary tables
attributes:
- key: jdbc.statement
values: [temp_, tmp_]
match_type: contains
Für dieses Beispiel gilt Folgendes:
- HTTP Spans, die mit den Endpunkten des Gesundheitschecks übereinstimmen, werden automatisch unterdrückt (untergeordnete Spans und nachgelagerte Traces werden unterdrückt).
- JDBC Spans für temporäre Tabellen werden ohne Unterdrückung ausgeschlossen (untergeordnete Spans und nachgelagerte Traces werden weiterhin erfasst).
Einschränkungen der Filterung
- Unterstützte Richtlinien : Derzeit wird nur die
excludeRichtlinie unterstützt. DieincludeRichtlinie ist noch nicht verfügbar. - Unterdrückungsverhalten :
- HTTP Die Filterung unterdrückt standardmäßig (untergeordnete Spans und nachgelagerte Traces werden unterdrückt).
- Der
suppressionKonfigurationsparameter kann nicht konfiguriert werden.
- Eingeschränkte Unterdrückungsunterstützung für bestimmte Attribute von „ HTTP “: Filterregeln, die auf Span-Attributen basieren, die erst nach Abschluss der Anfrage „ HTTP “ bekannt sind (z. B.
http.statusund Antwort-Header wiehttp.header.<response-header-name>undhttp.error), können die Unterdrückung von untergeordneten Spans und nachgeschalteten Tracings nicht erzwingen. Diese Attribute können weiterhin verwendet werden, um die übergeordnete Span- HTTP -Span aus der Ablaufverfolgung auszuschließen. Allerdings werden alle untergeordneten Spans oder nachgelagerten Vorgänge weiterhin erfasst, was dazu führen kann, dass Spans mit fehlenden übergeordneten Spans in der Benutzeroberfläche angezeigt werden. - Filterregeln basierend auf dem
http.paramsDas span-Attribut funktioniert möglicherweise nicht, wennvaluesenthält Geheimnisse, die vom Java Tracer aus der HTTP URL entfernt werden könnten. - Änderungen an der Filterkonfiguration werden dynamisch angewendet, ohne dass nach der Ersteinrichtung ein Neustart der Anwendung erforderlich ist.