Configuration du paquet « Python »
Une fois le paquet « Instana » ( Python ) installé, vous n'aurez pas besoin de le configurer manuellement pour la surveillance. Il commence automatiquement à collecter les indicateurs clés et les traces distribuées liés à vos processus d' Python. Vous pouvez toutefois configurer chaque composant en fonction de vos besoins spécifiques.
- Référence de configuration
- Configuration générale
- Activer l' AutoProfile
- Établissement de la communication entre l'hôte et l'agent
- Définition du nom de service
- Définition du nom de processus
- Propagation du contexte de tâche Asyncio
- Débogage et niveau de détail accru
- Désactivation de l'instrumentation automatique
- Recherche de la section de sortie de racine sans section d'entrée
- Kubernetes
- Infrastructures
- Outils
- Serveurs Web
- Portées de filtrage
- Désactivation des spans
- Configuration des traces de pile
- Configuration des en-têtes de corrélation de trace d' Kafka
- Suivi de processus spécifiques
- Informations supplémentaires
Référence de configuration
Un guide de référence rapide pour toutes les options de configuration disponibles dans le package Instana Python. Chaque option renvoie vers sa section détaillée.
Variables d'environnement
| Variable d"environnement | Description | Informations |
|---|---|---|
INSTANA_AGENT_HOST |
Adresse de l'hôte de l'agent « Instana » | Établissement de la communication entre l'hôte et l'agent |
INSTANA_AGENT_PORT |
Numéro de port de l'agent « Instana » | Établissement de la communication entre l'hôte et l'agent |
INSTANA_SERVICE_NAME |
Nom du service personnalisé | Définition du nom de service |
INSTANA_PROCESS_NAME |
Étiquette de processus personnalisée | Définition du nom de processus |
INSTANA_AUTOPROFILE |
Activer l' AutoProfile | Activer l' AutoProfile |
INSTANA_DEBUG |
Activer la journalisation de débogage | Débogage et niveau de détail accru |
INSTANA_DISABLE_AUTO_INSTR |
Désactiver l'instrumentation automatique | Désactivation de l'instrumentation automatique |
INSTANA_ALLOW_ROOT_EXIT_SPAN |
Rechercher les travées de sortie sans travée d'entrée | Recherche de la section de sortie de racine sans section d'entrée |
INSTANA_ASYNCIO_TASK_CONTEXT_PROPAGATION |
Activer la propagation du contexte des tâches asyncio | Propagation du contexte de tâche Asyncio |
INSTANA_SECRETS |
Fonction « matcher » et liste (<matcher>:<secret>[,<secret>]) de Secrets |
Référence générale : Variables d'environnement |
INSTANA_EXTRA_HTTP_HEADERS |
Liste, séparée par des points-virgules, des en-têtes d' HTTP s à capturer | Référence générale : Variables d'environnement |
INSTANA_KAFKA_TRACE_CORRELATION |
Activer ou désactiver la corrélation des traces d' Kafka | Configuration des en-têtes de corrélation de trace d' Kafka |
INSTANA_TRACING_FILTER_* |
Règles de filtrage par plage | Filtrage à l'aide de variables d'environnement |
INSTANA_TRACING_DISABLE |
Désactiver les catégories ou les types de balises `span` | Désactivation à l'aide de variables d'environnement |
INSTANA_STACK_TRACE |
Niveau de capture de la trace de pile | Utilisation des variables d'environnement |
INSTANA_STACK_TRACE_LENGTH |
Nombre de trames de trace de pile à capturer | Utilisation des variables d'environnement |
INSTANA_CONFIG_PATH |
Chemin d'accès au fichier de configuration d' YAML | Utilisation de la configuration d' YAML |
INSTANA_GEVENT_MONKEY_OPTIONS |
Options de « monkey patch » pour gevent, séparées par des virgules | Applications basées sur Gevent |
Configuration dans le code
Cet objet instana.configurator.config offre une alternative native à Python aux variables d'environnement pour les options suivantes. Importez-le avec from instana.configurator import config.
| Option | config clé |
Équivalent de la variable d'environnement |
|---|---|---|
| Propagation du contexte de tâche Asyncio | config["asyncio_task_context_propagation"]["enabled"] |
INSTANA_ASYNCIO_TASK_CONTEXT_PROPAGATION |
| Filtrage par intervalle | config["tracing"]["filter"] |
INSTANA_TRACING_FILTER_* ou INSTANA_CONFIG_PATH |
| Désactivation de Span | config["tracing"]["disable"] |
INSTANA_TRACING_DISABLE ou INSTANA_CONFIG_PATH |
| Capture de la trace de pile | config["tracing"]["global"] ou config["tracing"]["<tech>"] |
INSTANA_STACK_TRACE ou INSTANA_STACK_TRACE_LENGTH |
| Kafka corrélation des traces | config["tracing"]["kafka"]["trace_correlation"] |
INSTANA_KAFKA_TRACE_CORRELATION |
Configuration générale
Le package Instana Python vise à être une solution automatique entièrement sans intervention pour la surveillance Python, mais il est toujours entièrement configurable en cas de besoin. Les options suivantes sont disponibles pour configurer ce paquet.
Activer l' AutoProfile
AutoProfile génère et signale les profils de processus à Instana automatiquement et en continu. Pour en savoir plus sur les profils, consultez la section « Analyser les profils ».
Pour activer AutoProfile, définissez la variable d'environnement INSTANA_AUTOPROFILE=true. AutoProfile n'est pris en charge que pour une installation manuelle. Assurez-vous que le capteur « Instana » est initialisé dans le thread principal.
Établissement de la communication entre l'hôte et l'agent
Le package Instana Python tente de communiquer avec l'agent Instana via l' 127.0.0.1 IP et, à défaut, via la passerelle par défaut de l'hôte pour les environnements conteneurisés. Si l'agent n'est disponible à aucun de ces emplacements, vous pouvez utiliser des variables d'environnement pour configurer l'emplacement où rechercher l'agent hôte d' Instana.
Les variables d'environnement doivent être définies dans l'environnement du processus en cours d'exécution.
export INSTANA_AGENT_HOST = '127.0.0.1'
export INSTANA_AGENT_PORT = '42699'
Voir aussi :
Définition du nom de service
Par défaut, l' Instana e met tout en œuvre pour nommer vos services de manière appropriée. Si, pour une raison quelconque, vous souhaitez personnaliser la manière dont les services sont nommés, vous pouvez le faire en définissant une variable d'environnement :
export INSTANA_SERVICE_NAME=myservice
Voir également la section « Référence générale : Variables d'environnement pour les capteurs de langue »
Définition du nom de processus
Utilisez INSTANA_PROCESS_NAME pour définir un libellé personnalisée pour l'entité d'infrastructure qui représente le processus Python.
Propagation du contexte de tâche Asyncio
Activer la propagation du contexte de traçage entre les appels asyncio.create_task asyncio.ensure_future et. Paramètre désactivé par défaut.
from instana.configurator import config
config['asyncio_task_context_propagation']['enabled'] = True
Vous pouvez également définir la variable d'environnement correspondante :
export INSTANA_ASYNCIO_TASK_CONTEXT_PROPAGATION="true"
Débogage et niveau de détail accru
En définissant ce paramètre sur INSTANA_DEBUG une valeur différente de zéro, vous activez des messages de journalisation supplémentaires, généralement utiles pour le développement et le dépannage.
export INSTANA_DEBUG="true"
Voir également la section « Référence générale : Variables d'environnement pour les capteurs de langue »
Désactivation de l'instrumentation automatique
Ce package Instana inclut l'instrumentation automatique initialisée lors du chargement du package. Cette instrumentation fournit des informations de traçage distribué à votre tableau de bord Instana. Pour consulter la liste complète des instruments pris en charge, reportez-vous au document « Versions prises en charge ».
Vous pouvez désactiver l'instrumentation automatique (traçage) en définissant la variable d'environnement INSTANA_DISABLE_AUTO_INSTR , ce qui empêche le chargement de l'instrumentation intégrée au traceur.
export INSTANA_DISABLE_AUTO_INSTR="true"
Recherche de la section de sortie racine sans section d'entrée
Par défaut, l'outil Tracer de Instana Python ne capture que les segments de sortie pour lesquels il existe un segment d'entrée actif. Cependant, dans certains cas, il est nécessaire de suivre les segments de sortie qui se produisent sans segment d'entrée.
Pour configurer l'outil Tracer d' Python afin de tracer des segments de sortie autonomes, définissez la variable INSTANA_ALLOW_ROOT_EXIT_SPAN d'environnement sur 1 ou true comme suit :
export INSTANA_ALLOW_ROOT_EXIT_SPAN=1
Cette fonctionnalité est utile dans les cas suivants :
- Messages entrants provenant de bibliothèques de messagerie non prises en charge.
- Les requêtes effectuées via des protocoles non pris en charge, tels que le protocole « raw » Transmission Control Protocol ( TCP ) ou WebSocket.
- Tâches planifiées lancées en interne par d'autres applications.
- Exécution des scripts d' Python.
Kubernetes
Dans certains cas sur cette plateforme, il se peut que le capteur « Python » ne parvienne pas à localiser et à contacter automatiquement l'agent hôte « Instana ». Pour résoudre ce problème, consultez la section « Configuration de l'accès réseau de l'agent pour l' Kubernetes » dans la documentation.
Voir aussi :
Infrastructures
Vous pouvez configurer le package Instana Python pour surveiller et collecter des données à partir des frameworks suivants :
Django (Manuel)
Lorsque la variable AUTOWRAPT_BOOTSTRAP=instana d'environnement est définie, le framework Django doit être automatiquement détecté et configuré. Si, pour une raison quelconque, vous préférez ou nécessitez une instrumentation manuelle de Django, vous pouvez à la place ajouter instana.instrumentation.django.middleware.InstanaMiddleware à votre liste MIDDLEWARE dans settings.py :
import os
import instana
# ... <snip> ...
MIDDLEWARE = [
'instana.instrumentation.django.middleware.InstanaMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Pyramid
À partir de la version 1.22.0 jusqu'à la version 2.5.3, le paquet Instana Python inclut une prise en charge manuelle de Pyramid. Pour ajouter de la visibilité à votre application Pyramide, suivez les étapes suivantes :
- Assurez-vous que le paquet
instanaest ajouté aurequirements.txtet installé dans l'environnement virtuel ou le conteneur. - Ajoutez
import instanaceci au début de votre__init__.pyfichier pour votre application Pyramid. - Ajoutez l'instrumentation Tween « Instana » à votre configuration.
import instana
with Configurator(settings=settings) as config:
# ...
config.include('instana.instrumentation.pyramid.tweens')
# ...
L'image suivante présente un exemple de l'instrumentation d' Instana s dans votre configuration Pyramid :

Si l'option pyramid.tweens est définie dans votre configuration production.ini, vérifiez que instana.instrumentation.pyramid.tweens.InstanaTweenFactory est la première entrée de cette liste :
pyramid.tweens =
instana.instrumentation.pyramid.tweens.InstanaTweenFactory
# other tweens
Piles WSGI et ASGI
Le package Instana Python comprend des intergiciels WSGI (Web Server Gateway Interface) et ASGI (Asynchronous Server Gateway Interface) pouvant être intégrés à n'importe quelle pile compatible. L'automatisation est disponible pour diverses piles, mais l'ajout manuel est également possible pour celles qui ne bénéficient pas encore d'une prise en charge automatique de la part d' Instana.
Une fois que vous avez installé le paquet Instana Python, utilisez les commandes suivantes :
import instana
from instana.middleware import InstanaWSGIMiddleware
# or
from instana.middleware import InstanaASGIMiddleware
# Wrap the wsgi app in Instana middleware (InstanaWSGIMiddleware)
wsgiapp = InstanaWSGIMiddleware(MyWSGIApplication())
Instana travaille actuellement à l'automatisation de l'instrumentation pour tous les principaux frameworks, mais en attendant, vous pouvez consulter des guides de démarrage rapide spécifiques pour les piles qui ne bénéficient pas encore d'une prise en charge automatique sur Instana.
Bottle WSGI
Utilisez les commandes suivantes pour instrumenter Bottle WSGI :
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
# Wrap the application with the Instana WSGI Middleware
app = InstanaWSGIMiddleware(app)
# Alternative method for reference
# app = InstanaWSGIMiddleware(bottle.default_app())
run(app, host='localhost', port=8080)
CherryPy WSGI
Utilisez les commandes suivantes pour instrumenter le WSGI d' CherryPy :
import cherrypy
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
# My CherryPy application
class Root(object):
@cherrypy.expose
def index(self):
return "hello world"
cherrypy.config.update({'engine.autoreload.on': False})
cherrypy.server.unsubscribe()
cherrypy.engine.start()
# Wrap the application with the Instana WSGI Middleware
wsgiapp = InstanaWSGIMiddleware(cherrypy.tree.mount(Root()))
Dans cet exemple, nous utilisons uwsgi comme serveur web et démarrons avec :
uwsgi --socket 127.0.0.1:8080 --enable-threads --protocol=http --wsgi-file mycherry.py --callable wsgiapp -H ~/.local/share/virtualenvs/cherrypyapp-C1BUba0z
Où ~/.local/share/virtualenvs/cherrypyapp-C1BUba0z est le chemin d'accès à mon environnement virtuel local à partir de l'environnement pip
Falcon WSGI
Le framework Falcon peut également être instrumenté via le wrapper WSGI de la manière suivante :
import falcon
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
app = falcon.API()
# ...
# Wrap the application with the Instana WSGI Middleware
app = InstanaWSGIMiddleware(app)
Ensuite, lancez votre pile avec uwsgi --http :9000 --enable-threads --module=myfalcon.app à titre d'exemple
Applications basées sur Gevent
Instana prend en charge les applications basées sur gevent1.4 et les versions ultérieures.
Si vous importez manuellement le package Instana Python, assurez-vous que l'importation de gevent et l'application du correctif Monkey ont lieu en premier.
from gevent import monkey
monkey.patch_all()
import instana # <--- after the gevent monkey patching of stdlib
geventbasées sur ne doivent pas utiliser la méthode d'activation de paquets « Activation sans modification du code » (qui utilise la variable d'environnement AUTOWRAPT_BOOTSTRAP ). Cette méthode ne fonctionne pas en raison des exigences de « monkey patching » de premier ordre geventde, comme décrit précédemment. Dans ce cas, utilisez la méthode « Activation par modification du code ».À partir de Instana Python Tracer 2.5.0, le traceur s'exécute automatiquement monkey.patch_all() lorsque le webhook « AutoTrace » ou la méthode « Activation sans modification du code » est utilisée. Vous pouvez affiner ce « monkey patching » en définissant la variable INSTANA_GEVENT_MONKEY_OPTIONS d'environnement. Grâce à cette liste séparée par des virgules, vous pouvez indiquer les modules à inclure ou à exclure du « monkey patching », à MONKEY OPTIONS l'instar de la fonction ` gevent.monkey.main ` de gevent.
Les exemples suivants présentent les options disponibles pour personnaliser les modules en vue du « monkey patching » :
export INSTANA_GEVENT_MONKEY_OPTIONS='--no-socket, --dns, --no-time, --select, --no-ssl'
export INSTANA_GEVENT_MONKEY_OPTIONS='no-socket, dns, no-time, select, no-ssl'
export INSTANA_GEVENT_MONKEY_OPTIONS='no-socket,dns,no-time,select,no-ssl'
Si vous utilisez Django avec gevent et la fonctionnalité d'autotracing de Instana, veillez à définir la variable DJANGO_SETTINGS_MODULE d'environnement avant le démarrage de l'autotracing. Pour plus d'informations sur la variable DJANGO_SETTINGS_MODULE d'environnement, consultez la documentation de Django.
Si ce niveau de personnalisation est encore insuffisant, utilisez la méthode d'activation des paquets Activation par modification du code.
Outils
Vous pouvez configurer le package « Instana » ( Python ) pour surveiller et collecter des données provenant de différents outils.
Serveurs Web
Les configurations suivantes peuvent être utilisées pour surveiller différents serveurs Web :
uWSGI serveur web
Assurez-vous que enable-threads cette option est activée pour uwsgi.
Unités d'exécution
Cet outil d' Python, « instrumentation », crée un thread d'arrière-plan léger chargé de collecter et de transmettre périodiquement les métriques du processus. Par défaut, le GIL et le multithreading sont désactivés sous uWSGI. Si vous souhaitez instrumenter votre application exécutée sous uWSGI,, assurez-vous d'activer les threads en passant la --enable-threads commande (ou enable-threads = true dans le fichier INI). Pour plus d'informations, consultez la documentation de uWSGI.
uWSGI Exemple : ligne de commande
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi -p 4 --enable-threads
Exemple uWSGI : fichier ini
[uwsgi]
http = :5000
master = true
processes = 4
enable-threads = true # required
Serveur web Gunicorn
Pour instrumenter votre application exécutée sous Gunicorn, veillez à lui passer --preload en argument.
Précharger
Cet outil d' Python, « instrumentation », crée un thread d'arrière-plan léger chargé de collecter et de transmettre périodiquement les métriques du processus. Par défaut, les processus du code de l'application après les travailleurs sont forkés dans Gunicorn. Si vous souhaitez instrumenter votre application exécutée sous Gunicorn, veillez à activer le préchargement en passant la --preload commande. Pour plus d'informations, voir la documentation Gunicorn.
Exemple Gunicorn : ligne de commande
Pour exécuter Gunicorn avec le préchargement, utilisez la commande suivante, illustrée dans cet exemple :
gunicorn -w 4 --preload "file:app"
Exemple Gunicorn : fichier de configuration
Pour utiliser Gunicorn avec un fichier de configuration, utilisez un fichier Python avec les variables suivantes. Ajouter '-c file_name.py à la commande Gunicorn.
bind = "0.0.0.0:8000"
workers = 4
preload_app = true # required
Surveillance de l'expérience utilisateur (EUM)
Instana offre une surveillance approfondie des utilisateurs finaux qui relie les traces côté serveur aux événements du navigateur, vous offrant ainsi une vue d'ensemble complète, du serveur au navigateur.
Pour plus d'informations, consultez la page consacrée à la surveillance des utilisateurs finaux.
Portées de filtrage
Avec Tracer 3.11.0 d' Python, et les versions ultérieures, vous pouvez réduire le volume des données de trace en filtrant les segments en fonction de leurs attributs. Cette fonctionnalité permet d'optimiser les coûts liés à l'ingestion des données et de concentrer la surveillance sur les traces les plus pertinentes pour votre application.
Vous pouvez configurer des règles de filtrage pour exclure ou inclure des segments en fonction des critères suivants :
- Attributs de portée : valeurs d'attribut spécifiques (par exemple,
kafka.topicouredis.command) - Catégories : Types de technologies, tels que
databases,messaging, ouprotocols - Types : identifiants de bibliothèque ou de framework (par exemple,
httpoukafka) - Types : types de portées, tels que
entry,exit, ouintermediate
Configuration du filtrage par intervalle
Vous pouvez configurer le filtrage des spans en utilisant l'une des méthodes suivantes. Lorsque plusieurs méthodes sont utilisées, le filtrage s'applique selon l'ordre de priorité suivant (du plus élevé au plus faible) :
- YAML configuration (
INSTANA_CONFIG_PATH) INSTANA_TRACING_FILTER_*variables d'environnement- Configuration dans le code (
config["tracing"]["filter"]) - Configuration de l'agent (
configuration.yaml)
Filtrage à l'aide de la configuration d' YAML
Définissez la variable d'environnement INSTANA_CONFIG_PATH de manière à ce qu'elle pointe vers un fichier de configuration local de YAML :
INSTANA_CONFIG_PATH=/path/to/your/configuration.yaml
Le fichier doit respecter la même structure « YAML » que celle décrite dans la section « Filtrage à l'aide de la configuration de l'agent ».
Filtrage à l'aide de variables d'environnement
Configurez les règles de filtrage des intervalles à l'aide des variables d'environnement suivantes :
INSTANA_TRACING_FILTER_<policy>_<rule-name>_ATTRIBUTESINSTANA_TRACING_FILTER_<policy>_<rule-name>_ATTRIBUTES="rule-key;rule-value;match-type"
Le tableau suivant répertorie les paramètres, accompagnés de leurs descriptions et des valeurs prises en charge :
| Paramètre | Description | Valeurs |
|---|---|---|
| <policy> | Filtrer le type de politique |
|
| <rule-name> | Identifiant unique de la règle (permet d'éviter les conflits avec d'autres règles) | |
| rule-key | Attribut à utiliser pour le filtrage |
|
| rule-value | Liste de valeurs séparées par des virgules à faire correspondre |
|
| match-type | Stratégie d'appariement |
|
# Exclude all HTTP spans
INSTANA_TRACING_FILTER_EXCLUDE_HTTP_ATTRIBUTES="type;http"
# Include only health check endpoints
INSTANA_TRACING_FILTER_INCLUDE_HEALTH_ATTRIBUTES="http.url;/health"
# Exclude all messaging spans
INSTANA_TRACING_FILTER_EXCLUDE_CATEGORY_ATTRIBUTES="category;messaging"
# Include only specific Kafka topic and operations
INSTANA_TRACING_FILTER_INCLUDE_KAFKA_ATTRIBUTES="kafka.topic;topic1;strict|kafka.access;consume,send"
# Exclude all exit spans
INSTANA_TRACING_FILTER_EXCLUDE_KIND_ATTRIBUTES="kind;exit"
Filtrage à l'aide d'une configuration intégrée au code
Définissez les règles de filtrage directement dans le code de l' Python e à l'aide de l'objet config . La structure reprend le format configuration.yaml de l'agent :
from instana.configurator import config
config["tracing"]["filter"] = {
"exclude": [
{
"name": "Exclude all health check endpoints",
"attributes": [
{"key": "http.url", "values": ["/health"], "match_type": "contains"}
],
}
],
"include": [
{
"name": "Include specific internal health endpoint",
"attributes": [
{"key": "http.url", "values": ["/internal/health"], "match_type": "strict"}
],
}
],
}
Filtrage à l'aide de la configuration de l'agent
Définissez les règles de filtrage dans la tracing.filter section du fichier de configuration.yaml l'agent. La configuration utilise une structure de type « YAML » pour définir des règles de filtrage en fonction des attributs de la portée :
tracing:
filter:
deactivate: <boolean>
<policy>: # exclude | include
- name: <string>
suppression: <boolean>
attributes:
- key: <string> # category | kind | type | span attribute (e.g., kafka.access, http.host)
values: <list of strings>
match_type: <string> # strict | startswith | endswith | contains
| Zone | Obligatoire | Description | Par défaut |
|---|---|---|---|
filter |
Oui | Nœud racine pour toutes les règles de filtrage. | |
deactivate |
Non | Commutateur de fonctionnalité permettant de désactiver le filtrage sans supprimer les règles configurées. Lorsquetrue le filtrage est désactivé. |
false |
policy |
Oui | Type de règle de filtrage :exclude « ou include». |
|
name |
Oui | Nom lisible décrivant la règle de filtrage. | |
suppression |
Non | Détermine si les éléments « span » enfants sont masqués. Dans ce castrue, tous les éléments enfants sont masqués. Lorsquefalse les intervalles de dates sont autorisés. S'applique uniquement à la politique d'exclusion |
true |
attributes |
Oui | Liste des attributs de balise `span` qui doivent tous correspondre pour que la règle s'applique. | |
key |
Oui | Clé d'attribut Span (par exemple, category, kind, type, ou des attributs spécifiques, tels quekafka.access ouhttp.host). |
|
values |
Oui | Liste des valeurs à rechercher. Un attribut est considéré comme correspondant si l'une de ses valeurs correspond. À utiliser'*' comme caractère générique pour trouver n'importe quelle valeur (utile pour filtrer en fonction de la présence d'un attribut). |
|
match_type |
Non | Stratégie de correspondance :strict,startswith,endswith, oucontains |
Évaluation des règles
Les règles de filtrage sont évaluées dans l'ordre où elles apparaissent. Lorsqu'un segment correspond à une règle, celle-ci est appliquée et les règles suivantes ne sont pas évaluées. Classez les règles de la plus spécifique à la plus générale afin de garantir un filtrage correct.
Exemple de configuration
tracing:
filter:
exclude:
- name: Exclude all health check endpoints
attributes:
- key: http.url
values: [/health]
match_type: contains
- name: Exclude all messaging spans
attributes:
- key: category
values: [messaging]
match_type: strict
include:
- name: Include specific internal health endpoint
attributes:
- key: http.url
values: [/internal/health]
match_type: strict
Dans l'exemple précédent, la configuration de filtrage applique les règles suivantes :
- Comprend les segments correspondants
/internal/health(première règle de correspondance) - Exclut les intervalles qui correspondent à
/health(mais pas à/internal/health) - Exclut toutes les balises de catégorie de messagerie
- Filtre tous
/healthles points de terminaison sauf/internal/health
Désactivation des spans
Avec Tracer Python 3.7.0 et les versions ultérieures, vous pouvez désactiver les spans à l'aide de la fonctionnalité de désactivation des spans de Tracer Instana Python. Grâce à la fonctionnalité de désactivation des balises span, vous pouvez désactiver complètement la génération de balises span dans votre application. Cette fonctionnalité peut s'avérer utile dans les cas suivants :
- Vous souhaitez réduire le nombre de segments générés par votre application.
- Certaines de vos opérations ne sont pas concernées par la surveillance.
- Vous souhaitez vous concentrer sur d'autres aspects des performances de votre application.
Catégories prises en charge
Les catégories sont des ensembles de bibliothèques regroupées selon un type commun de technologie ou de protocole. Pour l'instant, vous ne pouvez désactiver les balises span que pour la logging catégorie.
Configuration de la désactivation des segments
Vous pouvez désactiver les balises `span` en utilisant l'une des options suivantes. Lorsque plusieurs méthodes sont utilisées, la configuration est appliquée selon l'ordre de priorité suivant (du plus élevé au plus faible) :
INSTANA_CONFIG_PATH(Archives de YAML )INSTANA_TRACING_DISABLEvariable d'environnement- Configuration dans le code (
config["tracing"]["disable"]) - Configuration de l'agent (
configuration.yaml)
Désactivation via la configuration d’ YAML
Définissez la variable INSTANA_CONFIG_PATH d'environnement sur un fichier de configuration local d' YAML, en utilisant la spécification suivante :
tracing:
disable:
- <category_or_type>: <boolean>
La disable clé peut contenir une liste de catégories ou de type noms. Un type nom désigne toute référence à un framework, une bibliothèque ou un outil d'instrumentation pris en charge par l'outil de traçage Instana Python. Les configurations type individuelles prévalent sur les paramètres de category leur niveau supérieur, quel que soit l'ordre dans lequel elles sont définies. Cette approche permet un contrôle précis, grâce auquel certaines instrumentations spécifiques peuvent rester activées même lorsque leur catégorie générale est désactivée. L'exemple de configuration suivant désactive toutes les étendues de base de données, à l'exception de celles destinées à Redis :
com.instana.tracing:
disable:
- databases: true
- redis: false
Désactivation à l'aide de variables d'environnement
Vous pouvez utiliser la variable INSTANA_TRACING_DISABLE d'environnement pour désactiver les balises `span`, comme le montre l'exemple suivant :
# Disable Redis spans
INSTANA_TRACING_DISABLE=redis
# Disable all logging spans
INSTANA_TRACING_DISABLE=logging
# Disable multiple technologies
INSTANA_TRACING_DISABLE=redis,logging
Désactivation via la configuration intégrée au code
Définissez la configuration de désactivation directement dans le code de l' Python e à l'aide de l'objet config :
from instana.configurator import config
# Disable all database spans, except those for Redis
config["tracing"]["disable"] = [
{"databases": True},
{"redis": False},
]
Les type configurations individuelles prévalent sur les paramètres category de leur niveau supérieur, quel que soit l'ordre dans lequel elles sont définies.
Désactivation via la configuration de l'agent
Pour désactiver les balises « span » d' Redis s à l'aide de la configuration de l'agent, ajoutez la disable configuration suivante au fichier de configuration.yaml l'agent :
com.instana.tracing:
disable:
- redis: true
Pour désactiver les logging intervalles de catégorie à l'aide de la configuration de l'agent, ajoutez la disable configuration suivante au fichier de configuration.yaml l'agent :
com.instana.tracing:
disable:
- logging: true
Configuration des traces de pile
Par défaut, l'outil Tracer de l' Instana Python enregistre les 30 dernières trames de trace de pile pour chaque intervalle EXIT capturé. Cette valeur peut être augmentée ou diminuée selon vos besoins.
ENTRY », car elles ne contiennent généralement aucune information utile au niveau de l'application.Avec Python Tracer 3.10.0 et les versions ultérieures, vous pouvez configurer deux aspects de la capture de la trace de pile :
- Longueur de la trace de pile : nombre de trames de trace de pile à capturer.
- Valeurs prises en charge : 1 à 40
- Valeur par défaut : 30
- Niveau de trace de pile : comment les traces de pile sont enregistrées.
- Valeurs prises en charge :
all: Récupère la trace de pile pour tous les segments de sortie (par défaut).error: Ne recueille la trace de la pile que pour les segments présentant des erreurs.none: Ne recueille pas la trace de la pile.
- Valeurs prises en charge :
Vous pouvez configurer la capture de la trace de pile en utilisant l'une des options suivantes. Lorsque plusieurs méthodes sont utilisées, la configuration est appliquée selon l'ordre de priorité suivant (du plus élevé au plus faible) :
INSTANA_CONFIG_PATH(Archives de YAML )INSTANA_STACK_TRACE/ variables d'environnementINSTANA_STACK_TRACE_LENGTH- Configuration dans le code (
config["tracing"]["global"]/config["tracing"]["<tech>"]) - Configuration de l'agent (
configuration.yaml)
INSTANA_CONFIG_PATH et la configuration dans le code sont incompatibles. Si cette option est INSTANA_CONFIG_PATH activée, la configuration intégrée au code est entièrement ignorée.Pour configurer la capture de traces de pile spécifiques à une technologie via l'agent et les méthodes de configuration d' YAML, consultez la section « Configuration spécifique à une technologie ».
Utilisation de la configuration d' YAML
Définissez la variable INSTANA_CONFIG_PATH d'environnement sur un fichier de configuration local d' YAML, en utilisant la spécification suivante :
tracing:
global:
stack-trace: <string>
stack-trace-length: <int>
Utilisation des variables d'environnement
Vous pouvez utiliser les variables d'environnement INSTANA_STACK_TRACEINSTANA_STACK_TRACE_LENGTH et pour filtrer les traces de pile, comme le montre l'exemple suivant :
- Enregistrer les traces de pile uniquement pour les segments présentant des erreurs : utilisez ce paramètre pour enregistrer les traces de pile uniquement lorsqu'une erreur se produit.
# Captures stack trace only for erroneous spans. INSTANA_STACK_TRACE=error - Désactiver la collecte des traces de pile : utilisez ce paramètre pour désactiver complètement la collecte des traces de pile.
# Disable collection of stack trace. INSTANA_STACK_TRACE=none - Enregistrer les traces de pile pour tous les segments : utilisez ce paramètre pour collecter les traces de pile de tous les segments.
# Captures stack trace for all spans. INSTANA_STACK_TRACE=all - Limiter le nombre d'étapes de la trace de pile : utilisez ce paramètre pour limiter le nombre d'étapes de la trace de pile capturées.
# Limits capture of stack trace frames to 25. INSTANA_STACK_TRACE_LENGTH=25
Utilisation de la configuration intégrée au code
Définissez la configuration de la trace de pile directement dans le code de l' Python e à l'aide de l'objet config . Utilisez ( stack_trace et non stack-trace) et stack_trace_length (et non stack-trace-length) comme noms de clés. Cette configuration est ignorée si INSTANA_CONFIG_PATH est défini.
from instana.configurator import config
# Global configuration
config["tracing"]["global"] = {
"stack_trace": "error", # "all" | "error" | "none"
"stack_trace_length": 25, # default: 30
}
# Technology-specific override (overrides the global setting for Kafka)
config["tracing"]["kafka"] = {
"stack_trace": "all",
"stack_trace_length": 35,
}
Utilisation de la configuration de l'agent
Pour configurer la capture de la trace de pile à l'aide de la méthode de configuration de l'agent, définissez les paramètres dans la com.instana.tracing.global section de votre fichier de configuration d'agent, comme le montre l'exemple suivant :
com.instana.tracing:
global:
stack-trace-length: 15
stack-trace: 'error'
Configuration spécifique à la technologie
Le Tracer de l' Instana Python propose une configuration spécifique à la technologie qui prévaut sur les configurations globales. Vous pouvez affiner la configuration et contrôler la capture de la trace de pile à l'aide des paramètres suivants :
com.instana.tracing:
global:
stack-trace: <string>
stack-trace-length: <int>
<technology>:
stack-trace: <string>
stack-trace-length: <int>
Dans cette configuration, les valeurs suivantes sont prises en charge pour la <technology> clé :
kafkarabbitmqaioamqpaiohttpurllib3(pour les intervallesurllib3requestset )httpxlogredismysqlpostgresmongopymongocassandracouchbasedynamodbsqlalchemyboto3s3rpc
L'exemple suivant capture les traces de pile pour tous les segments et limite le nombre de trames à 25 dans le cadre d'une configuration globale; toutefois, pour l'option « Kafka », il ne capture la trace de pile complète que pour les segments présentant des erreurs :
com.instana.tracing:
global:
stack-trace: all
stack-trace-length: 25
kafka:
stack-trace: error
Configuration des en-têtes de corrélation de trace d' Kafka
Grâce à la corrélation des traces, les segments conservent le lien entre les créations de segments répartis. Par exemple, lorsque la corrélation des traces est activée, l'identifiant de trace est le même pour la plage du producteur et celle du consommateur. Lorsque la corrélation des traces est désactivée, les segments du producteur et du consommateur possèdent des identifiants de trace différents, ce qui empêche toute corrélation entre eux.
Pour désactiver complètement la corrélation des traces d' Kafka, vous pouvez utiliser l'une des options de configuration suivantes :
Variable d'environnement : définissez la variable d'environnement
INSTANA_KAFKA_TRACE_CORRELATIONsurfalse.Configuration dans le code : utilisez la configuration suivante :
from instana.configurator import config config["tracing"]["kafka"]["trace_correlation"] = FalseConfiguration de l'agent : configurez les options de corrélation des traces d' Kafka au niveau de l' agent hôte Instana.
Pour plus d'informations, consultez la section « Migration des en-têtes » sur Kafka.
Suivi de processus spécifiques
Instana surveille automatiquement les processus dont la ligne de commande gunicorncontient les noms python , uwsgi, ou. Vous pouvez indiquer un nom de processus spécifique dans le fichier de configuration de l'agent afin de surveiller une application Python en cours d'exécution dont le nom diffère de celui utilisé en ligne de commande. Pour plus d'informations, consultez la section consacrée à la configuration des agents hôtes à l'aide du fichier de configuration des agents.