Configuration du filtrage pour les applications d' Java
Vous pouvez réduire le volume des données de trace pour les applications d' Java s en filtrant des intervalles spécifiques en fonction de leurs attributs. Cette fonctionnalité permet d'optimiser les coûts liés à l'ingestion des données et de se concentrer sur les traces les plus pertinentes pour vos besoins en matière de surveillance des applications.
Le filtrage basé sur les attributs est disponible pour les segments de type « HTTP » et « JDBC » dans les applications Java. Pour plus d'informations sur la réduction des données issues du traçage, consultez la section « Optimiser l'ingestion des données » sur Instana.
Options de filtrage
Vous pouvez filtrer les traces d'application d' Java. en utilisant les méthodes suivantes :
- Filtrage basé sur la méthode : pour filtrer les intervalles provenant de DynamoDB,, Redis et Kafka, voir la section « Ignorer les points d'extrémité ». Grâce à cette fonctionnalité, vous pouvez exclure des traces en fonction des noms de méthodes (tels que
GET,consume, ouquery) et des points de terminaison (tels que les noms de sujets Kafka ). - Filtrage basé sur les attributs des balises span : pour filtrer les balises span de type HTTP et JDBC, utilisez la méthode de filtrage basée sur les attributs des balises span. Cette fonctionnalité offre des capacités de filtrage avancées basées sur divers attributs de segment, tels que les URL, les requêtes SQL ou les méthodes de l' HTTP. Cette approche prend en charge la correspondance flexible de motifs (
strict,startswith,endswith, etcontains) et permet de combiner plusieurs attributs dans une seule règle.
Pour obtenir des instructions détaillées sur la configuration du filtrage basé sur les attributs de portée, consultez les sections suivantes.
Exemple de tracé de référence
L'exemple suivant montre une trace complète sans aucun filtrage appliqué, qui sert de référence tout au long de ce document :

Filtrage basé sur les attributs de portée
Le filtrage basé sur les attributs Span pour les applications d' Java s ne peut être configuré que via le fichier de configuration.yaml l'agent. Les variables d'environnement et les propriétés système ne sont pas prises en charge pour le filtrage de la configuration.
Configuration du filtrage
Vous pouvez configurer des règles de filtrage pour exclure les segments HTTP et JDBC en fonction d'attributs tels que les URL, les requêtes SQL ou les méthodes HTTP.
Les règles de filtrage sont définies dans la com.instana.tracing.filter section du fichier de configuration.yaml l'agent (instanaAgentDir/etc/instana/configuration.yaml). La configuration utilise une structure de type « YAML » pour définir des règles de filtrage en fonction des attributs de span.
Pour définir des règles de filtrage, utilisez la configuration suivante :
com.instana.tracing:
filter:
deactivate: <boolean>
exclude:
- name: <string>
attributes:
- key: <string>
values: [<string>, ...]
match_type: <string>
exclude politique. Chaque règle peut avoir plusieurs attributs qui doivent tous correspondre pour que la règle s'applique.| Zone | Obligatoire | Description |
|---|---|---|
filter |
Obligatoire | Nœud racine pour toutes les règles de filtrage. |
deactivate |
Facultatif | Commutateur de fonctionnalité permettant de désactiver le filtrage sans supprimer les règles de filtrage configurées. Lorsque cette option est true activée, le filtrage est désactivé. La valeur par défaut est false (le filtrage reste actif). |
exclude |
Obligatoire | Politique qui contient les règles d'exclusion permettant d'exclure des segments d'une trace. Actuellement, seule la exclude politique est prise en charge. |
name |
Obligatoire | Nom lisible par l'utilisateur qui décrit la règle de filtrage. |
attributes |
Obligatoire | Liste des attributs span qui doivent tous correspondre pour qu'une règle s'applique. |
key |
Obligatoire | Clé d'attribut Span. |
values |
Obligatoire | Liste des valeurs à faire correspondre pour l'attribut span key. Un attribut correspond si l'un de ses values correspond. Utilisez '*' comme caractère générique pour faire correspondre n'importe quelle valeur pour la clé d'attribut spécifiée (utile pour filtrer en fonction de la présence d'un attribut, quelle que soit sa valeur). |
match_type |
Facultatif | Définit comment les values attributs span sont mis en correspondance. Valeurs valides : strict (par défaut), startswith, endswith, et contains. |
Comportement de suppression
- HTTP filtrage : la suppression est appliquée par défaut. Lorsqu'une période d' HTTP s est exclue, toutes les périodes enfants et les traces en aval sont automatiquement supprimées. Aucune portée n'est générée pour les appels à la base de données, les appels à des services externes ou d'autres opérations déclenchées par la requête d' HTTP s exclue.
- JDBC filtrage : la suppression n' est pas appliquée. Lorsqu'une période d' JDBC s est exclue, les périodes enfants et les opérations suivantes dans la trace continuent d'être capturées.
suppression paramètre de configuration ne peut pas être configuré. Le comportement de suppression est déterminé automatiquement en fonction du type d'intervalle.Utilisation des caractères génériques
Vous pouvez utiliser le caractère générique "*" dans le values champ pour faire correspondre n'importe quelle valeur à un attribut span spécifique. Cela est utile lorsque vous souhaitez filtrer les spans en fonction de la présence d'un attribut, quelle que soit sa valeur. Le caractère générique peut être utilisé pour le filtrage des adresses HTTP et JDBC.
Exemple : pour exclure toutes les balises qui ont un attribut d'erreur (quel que soit le message d'erreur), utilisez la configuration suivante :
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
Ordre d'exécution des règles
Les règles de filtrage sont évaluées dans l'ordre dans lequel elles apparaissent dans la configuration. Lorsqu'une période correspond à une règle de filtrage, cette règle est appliquée et aucune autre règle n'est évaluée pour cette période. Dans la exclude politique, la première règle correspondante détermine le comportement de filtrage.
Exemple :
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
Dans cet exemple, si une balise correspond /api/internal/healthà, la première règle s'applique. Si une portée correspond à /health mais pas /api/internal/healthà, la deuxième règle s'applique. L'ordre est important car la première règle correspondante est utilisée.
HTTP filtrage des points de terminaison
Grâce au filtrage des points de terminaison d' HTTP, vous pouvez exclure des segments d' HTTP s en fonction d'attributs tels que l' URL, la méthode et les en-têtes. Cette fonctionnalité est prise en charge pour les frameworks d' HTTP s suivants :
- Servlet : applications qui utilisent le servlet Java API
- Spring Web : applications utilisant Spring MVC et Spring Boot
Attributs Span pour le filtrage des points de terminaison d' HTTP
Vous pouvez utiliser les attributs span suivants pour filtrer les points de terminaison d' HTTP. La colonne « Nom d'affichage de l'interface utilisateur » indique comment chaque attribut apparaît dans l'interface utilisateur d' Instana lorsque vous affichez les détails d'une portée.
| Attribut span | Nom d'affichage de l'interface utilisateur | Description | Exemple de valeur | Prise en charge du filtrage |
|---|---|---|---|---|
http.url |
URL | URL ou chemin | /api/users |
Oui |
http.method |
Méthode | Méthode HTTP | GET |
Oui |
http.status |
Code d'état | HTTP code d'état de réponse | 200 |
Limité* |
http.host |
Hôte | Nom d'hôte avec port | localhost:8080 |
Oui |
http.path |
Chemin de demande | Chemin de demande | /api/users |
Oui |
http.path_tpl |
Modèle de chemin | Modèle ou schéma de route | /api/users/{id} |
Oui |
http.params |
Paramètres | Chaîne de requête HTTP | action=edit&id=5 |
Oui |
http.error |
Erreur | Message d'erreur | Description de l'erreur | Limité* |
http.header.<header-name> |
En-tête | HTTP en-tête de requête | header-value |
Oui |
http.header.<response-header-name> |
En-tête | En-tête de réponse HTTP | header-value |
Limité* |
http.status et les en-têtes de réponse http.header.<response-header-name> ) ont des capacités de filtrage limitées. Les règles de filtrage basées sur ces attributs peuvent exclure des intervalles, mais ne peuvent pas imposer la suppression des intervalles enfants et du traçage en aval, car les valeurs des attributs ne sont pas connues au moment où la décision de suppression est prise.Variantes d'affichage de l'interface utilisateur
Bien que les clés d'attribut span restent constantes pour la configuration du filtrage, les valeurs d'affichage réelles dans l'interface utilisateur d' Instana peuvent varier en fonction du contexte :
http.status: Affiche le code d'état accompagné d'une description lisible par l'utilisateur (par exemple,200 – OK,404 – Not Found, ou500 – Internal Server Error). Lors du filtrage, utilisez uniquement la valeur numérique du code d'état.http.error: S'affiche dans l'interface utilisateur uniquement si la valeur d'erreur est une chaîne non vide. De plus, cet attribut peut être expurgé s'il contient des données sensibles telles que définies par la configuration des données sensibles de l'outil de traçabilité de l' Java. Les erreurs vides ou expurgées n'apparaissent pas dans l'interface utilisateur.http.params: Lorsque la chaîne de requête est vide ou vierge, l'interface utilisateur affiche<no query parameters>au lieu d'une valeur vide. Lors du filtrage, effectuez une correspondance avec la valeur réelle de la chaîne de requête ou utilisez une chaîne vide.http.url: Affiché dans l'interface utilisateur uniquement s'il diffère dehttp.path. Si les deux valeurs sont identiques, seul le chemin d'accès est affiché afin d'éviter toute redondance.
Exemple de configuration du filtrage des points de terminaison HTTP
L'exemple suivant montre une configuration de filtrage des points de terminaison d' 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
Dans l'exemple précédent, la configuration du filtrage applique les règles suivantes :
- Exclut les intervalles d' HTTP s dont l' URL e se termine par
/health,/ping, ou/ready. Les intervalles enfants et le traçage en aval sont automatiquement supprimés. - Exclut les intervalles d' HTTP s avec la méthode HTTP
OPTIONS. Les intervalles enfants et le traçage en aval sont automatiquement supprimés.
L'exemple suivant montre l'effet du filtrage de l' HTTP avec suppression. En comparant cette trace à la trace complète sans filtrage (Figure 1), vous pouvez voir que les appels d' HTTP s avec le paramètre author=test2 sont filtrés, ainsi que toutes leurs extensions enfants :

JDBC filtrage de portée
Grâce au filtrage des intervalles d' JDBC, vous pouvez exclure des intervalles de base de données en fonction d'attributs tels que les instructions SQL, les chaînes de connexion et les messages d'erreur.
Attributs span pour le filtrage span d' JDBC
Vous pouvez utiliser les attributs span suivants pour filtrer les spans d' JDBC. La colonne « Nom d'affichage dans l'interface utilisateur » indique comment chaque attribut apparaît dans l'interface utilisateur d' Instana lors de l'affichage des détails de la portée.
| Attribut span | Nom d'affichage de l'interface utilisateur | Description | Exemple de valeur |
|---|---|---|---|
jdbc.connection |
Connexion | Chaîne de connexion JDBC | jdbc:mysql://localhost:3306/mydb |
jdbc.statement |
Instruction | Instruction SQL | SELECT * FROM users |
jdbc.error |
Erreur | Message d'erreur | Description de l'erreur SQL |
Variantes d'affichage de l'interface utilisateur
Tout comme les attributs d'étendue HTTP, les attributs d'étendue JDBC peuvent présenter des variations dans l'interface utilisateur d' Instana :
jdbc.error: S'affiche dans l'interface utilisateur uniquement si la valeur d'erreur est une chaîne non vide. Cet attribut peut être expurgé s'il contient des données sensibles telles que définies par la configuration des données sensibles de l'outil de traçage de l' Java. Les erreurs vides ou expurgées n'apparaissent pas dans l'interface utilisateur.jdbc.statement: Les instructions SQL peuvent être tronquées dans l'interface utilisateur à des fins d'affichage si elles dépassent une certaine longueur, mais l'instruction complète est utilisée pour l'évaluation du filtrage.
Exemple de configuration du filtrage de la durée d' JDBC
L'exemple suivant montre une configuration de filtrage de portée d' JDBC :
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
Dans l'exemple précédent, la configuration du filtrage applique les règles suivantes :
- Exclut les intervalles d' JDBC s dont l'instruction SQL contient
audit_logousession_data. - Exclut les intervalles d' JDBC s avec les instructions SQL qui commencent par
SELECTet les chaînes de connexion qui contiennentmysql. - Exclure toutes les balises d' JDBC qui contiennent un message d'erreur (utilisant le
'*'caractère générique pour correspondre à n'importe quelle valeur d'erreur).
L'exemple suivant montre l'effet du filtrage de l' JDBC. En comparant cette trace à la trace complète sans filtrage (Figure 1), vous pouvez voir que l'instruction select book0_.id as id1_0_, book0_.author as author2_0_, book0_.title as title3_0_ from book book0_ where book0_.author=?JDBC est filtrée, supprimant ainsi 2 intervalles de la trace :

Exemple de filtrage combiné d' HTTP s et d' JDBC s
L'exemple suivant montre comment configurer simultanément les règles de filtrage HTTP et JDBC :
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
Dans cet exemple :
- HTTP Les spans correspondant aux points de contrôle de santé sont exclus par suppression automatique (les spans enfants et les traces en aval sont supprimées).
- JDBC Les intervalles pour les tables temporaires sont exclus sans suppression (les intervalles enfants et les traces en aval continuent d'être capturés).
Limites du filtrage
- Prise en charge des politiques : actuellement, seule la
excludepolitique est prise en charge. Laincludepolitique n'est pas encore disponible. - Comportement de suppression :
- HTTP Le filtrage applique la suppression par défaut (les spans enfants et les traces en aval sont supprimées).
- Le
suppressionparamètre de configuration ne peut pas être configuré.
- Prise en charge limitée de la suppression pour certains attributs d' HTTP : les règles de filtrage basées sur des attributs de span qui ne sont connus qu'après la fin de la requête d' HTTP (tels que
http.statusles en-têtes de réponse commehttp.header.<response-header-name>ethttp.error) ne peuvent pas imposer la suppression des spans enfants et du traçage en aval. Ces attributs peuvent toujours être utilisés pour exclure la portée parent HTTP de la trace. Cependant, toutes les opérations enfants ou en aval continuent d'être capturées, ce qui peut entraîner l'apparition d'opérations sans opération parent dans l'interface utilisateur. - Les règles de filtrage basées sur l'attribut
http.paramsspan peuvent ne pas fonctionner sivaluescelui-ci contient des secrets susceptibles d'être supprimés de l'URL HTTPURL par le traceur Java. - Les modifications apportées à la configuration du filtrage sont appliquées dynamiquement sans nécessiter de redémarrage de l'application après la configuration initiale.