Configuration du collecteur « Python »
Une fois le collecteur 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.
- 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
- Configuration du package
- 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
- Ignorer les points de terminaison
- Configuration de la désactivation des segments
- 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
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.
Configuration du package
Le package Instana comprend un module de configuration d'environnement exécution qui gère la configuration de différents composants.
from instana.configurator import config
# To enable tracing context propagation across Asyncio ensure_future and create_task calls
# Default is false
config['asyncio_task_context_propagation']['enabled'] = True
Débogage et niveau de détail accru
En définissant cette option INSTANA_DEBUG sur une valeur différente de nil, vous activez davantage de messages de journalisation, ce qui s'avère généralement utile 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 outils d'instrumentation automatique, consultez le 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 collecteur 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
geventapplications basées sur ne doivent pas utiliser la méthode d'activation de paquets « Activation sans modification du code » (qui utilise la variable AUTOWRAPT_BOOTSTRAP d'environnement). Cette méthode ne fonctionne pas en raison des geventexigences de « monkey patching » de premier ordre de, comme décrit précédemment. Dans ce cas, utilisez la méthode « Activation par modification du code ».À partir de la version Instana Python Tracer 2.5.0, le traceur s'exécute monkey.patch_all() automatiquement lorsque le webhook AutoTrace est utilisé ou que la méthode d'activation sans modification du code est employé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 collecteur 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
Filtrage à l'aide de variables d'environnement
Configurez les règles de filtrage des intervalles à l'aide des variables d'environnement suivantes :
INSTANA_CONFIG_PATHINSTANA_CONFIG_PATH=/path/to/your/configuration.yamlIndiquez le chemin d'accès au
agent configuration.yamlfichier. Le fichier doit respecter les consignes décrites dans la section « Utilisation de la configuration de l'agent ».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 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
Ignorer les points de terminaison (obsolète)
À partir de Python Tracer 3.3.0, vous pouvez utiliser cette fonctionnalité pour filtrer les traces ou les appels inutiles afin de réduire l'ingestion globale de données. Par exemple, vous pouvez exclure le traçage de certains points de terminaison, tels que redis.get.
Cette fonctionnalité est disponible pour les bibliothèques prises en charge suivantes :
| Bibliothèque | Instana Python version du paquet |
|---|---|
| Redis | >= 3.3.0 |
| DynamoDB | >= 3.3.0 |
| Kafka | >= 3.5.0 |
Règles de filtrage
Les règles de filtrage des segments sont les suivantes :
- Lorsqu'une section est ignorée, toutes les sections suivantes en aval sont également ignorées.
- Utilisez le caractère générique
*pour ignorer tous les points de terminaison ou toutes les méthodes. - Les valeurs des points de terminaison (telles que les noms de sujets d' Kafka ) restent cohérentes d'un service à l'autre.
- Les noms des méthodes peuvent varier en fonction du langage de programmation et de la technologie utilisés. Consultez l'interface utilisateur d' Instana pour déterminer la méthode et le point de terminaison appropriés pour votre service.
La capture d'écran suivante de l'interface utilisateur d' Instana fournit une référence visuelle permettant d'identifier la méthode et le point de terminaison appropriés pour la configuration :

send méthode du Kafka-Python package.Configuration de l'exclusion des terminaux
Vous pouvez activer l'exclusion des points de terminaison en utilisant l'une des options suivantes :
Variables d'environnement
Vous pouvez configurer les points de terminaison à ignorer en utilisant les variables d'environnement suivantes pour filtrer les points de terminaison par service :
INSTANA_IGNORE_ENDPOINTS_PATH: Configurer le filtrage via un fichier d' YAML s externe.INSTANA_IGNORE_ENDPOINTS: Exclure les intervalles en se basant uniquement sur les noms des méthodes.
Utilisation INSTANA_IGNORE_ENDPOINTS_PATH
Grâce à cette variable d'environnement, vous pouvez configurer le filtrage via un fichier d' YAML s externe, comme le montre l'exemple suivant :
INSTANA_IGNORE_ENDPOINTS_PATH=/absolute/path/to/config.yaml
Dans l'exemple précédent, le config.yaml fichier doit comporter un chemin d'accès absolu et respecter la structure de configuration indiquée.
Filtrer par méthode
Pour spécifier les points de terminaison que vous souhaitez exclure, définissez la variable INSTANA_IGNORE_ENDPOINTS d'environnement comme indiqué dans l'exemple suivant :
tracing:
ignore-endpoints:
redis:
- get
- type
dynamodb:
- query
kafka:
- send
Cette configuration filtre les segments suivants :
GETetTYPEles commandes pour l' RedisQUERYcommande pour DynamoDBSENDméthode pour l' Kafka, ainsi que pour toutes les portées en aval
Filtrage par méthode et par paramètre d'évaluation
Pour spécifier les points de terminaison que vous souhaitez exclure, définissez la variable INSTANA_IGNORE_ENDPOINTS d'environnement comme indiqué dans l'exemple suivant :
tracing:
ignore-endpoints:
kafka:
- methods: ["consume"]
endpoints: ["topic1", "topic2"]
- methods: ["consume", "send"]
endpoints: ["topic3"]
- methods: ["*"] # Applied to all methods
endpoints: ["topic4"]
- methods: ["consume"]
endpoints: ["*"] # Applied to all endpoints
Cette configuration filtre les segments suivants :
CONSUMEméthode pourtopic1ettopic2dans l' Kafka e et toutes les travées en avalCONSUMEetSENDméthodes pourtopic3l' Kafka et toutes les portées en aval- Toutes les méthodes (
*) pourtopic4dans l' Kafka e et tous les segments en aval CONSUMEméthode pour tous les éléments «*topics » de l' Kafka et tous les segments en aval
Vous pouvez combiner les deux options de filtrage (méthode uniquement et méthode et point de terminaison) dans le même fichier de configuration.
Cette configuration est compatible avec la structure d' configuration.yaml de l'agent.
Utilisation INSTANA_IGNORE_ENDPOINTS
Grâce à cette variable d'environnement, vous pouvez exclure des segments en vous basant uniquement sur les noms de méthode, comme le montre l'exemple suivant :
INSTANA_IGNORE_ENDPOINTS=redis:get,type
Cette configuration filtre les segments suivants :
GETetTYPEles commandes pour l' Redis
Pour filtrer complètement Redis, vous pouvez utiliser la configuration suivante :
INSTANA_IGNORE_ENDPOINTS=redis
Pour filtrer plusieurs services, vous pouvez utiliser la configuration suivante :
INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:send
Cette configuration filtre les segments suivants :
GETetTYPEles commandes dans RedisQUERYetSCANles commandes dans DynamoDBSENDcommande dans l' Kafka
Configuration en code
Pour ignorer les points de terminaison en utilisant la méthode de configuration intégrée au code, ajoutez la configuration suivante au src/instana/configurator.py fichier :
config["tracing"]["ignore_endpoints"] = { "redis": ["get", "type"] }
Cette configuration exclut les GET commandes TYPE et du paquet Redis du traçage.
Pour ignorer tous les points de terminaison du paquet « Redis », ajoutez la configuration suivante au src/instana/configurator.py fichier :
config["tracing"]["ignore_endpoints"] = { "redis": [] }
Pour filtrer plusieurs services, vous pouvez utiliser la configuration suivante :
config["tracing"]["ignore_endpoints"] = {
"redis": ["get", "type"],
"dynamodb": ["query", "scan"],
"kafka": ["send"]
}
Cette configuration filtre les segments suivants :
GETetTYPEles commandes dans RedisQUERYetSCANles commandes dans DynamoDBSENDméthode dans ` Kafka ` et tous les segments en aval
L'exemple suivant illustre le filtrage par méthode et par point de terminaison :
config["tracing"]["ignore_endpoints"] = {
"kafka": [
{ methods: ["consume"], endpoints: ["topic1", "topic2"] },
{ methods: ["send"], endpoints: ["topic3"] }
]
}
Cette configuration filtre les segments suivants :
CONSUMEméthode pourtopic1ettopic2dans l' Kafka e et toutes les travées en avalSENDméthode pourtopic3l' Kafka et toutes les portées en aval
Vous pouvez utiliser les deux options de filtrage (méthode uniquement et méthode et point de terminaison) dans la même configuration.
Configuration de l'agent
Pour exclure les points de terminaison à l'aide de la méthode de configuration de l'agent, ajoutez la ignore-endpoints configuration au fichier de configuration.yaml l'agent. Pour plus d'informations, consultez la section « Ignorer les points de terminaison ».
Configuration de la désactivation des segments
Avec Python Tracer 3.7.0 et les versions ultérieures, vous pouvez désactiver les segments à l'aide de la fonctionnalité de désactivation des segments du capteur 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.
Options de configuration
Vous pouvez désactiver les balises span en utilisant l'une des options suivantes :
Option 1 : 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:
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
Option 2 : Utilisation des 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
Option 3 : 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 les intervalles, 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 :
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 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 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 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.Propriété du système : utilisez la configuration suivante :
config["tracing"]["kafka"] = { "trace_correlation": False }Configuration 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.