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

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
Remarque :
Au fur et à mesure que le logiciel évolue, de nouvelles options sont ajoutées.

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 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é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.

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

Remarque :
À partir de Instana, Python et 3.0.0, la mise en place de Pyramid est automatique.

À 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 :

  1. Assurez-vous que le paquet instana est ajouté au requirements.txt et installé dans l'environnement virtuel ou le conteneur.
  2. Ajoutez import instana ceci au début de votre __init__.py fichier pour votre application Pyramid.
  3. 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 :

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
 

~/.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
 
Remarque :
Avant Instana Python Tracer 2.5.0, les applications 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.topic ou redis.command)
  • Catégories : Types de technologies, tels que databases, messaging, ou protocols
  • Types : identifiants de bibliothèque ou de framework (par exemple, httpou kafka)
  • Types : types de portées, tels que entry, exit, ou intermediate

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) :

  1. YAML configuration (INSTANA_CONFIG_PATH)
  2. INSTANA_TRACING_FILTER_* variables d'environnement
  3. Configuration dans le code (config["tracing"]["filter"])
  4. Configuration de l'agent (configuration.yaml)
Remarque :
Si plusieurs configurations sont fournies, seule la source présente ayant la priorité la plus élevée est prise en compte; les autres sont totalement ignorées.

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>_ATTRIBUTES
    INSTANA_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
  • EXCLUDE: Exclut les segments correspondant à la règle
  • INCLUDE: N'inclure que les segments correspondant à la règle
<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
  • category: Groupes technologiques (databases, messaging, ou protocols)
  • kind: Type de plage (entry, exit, ou intermediate) - type: Bibliothèque ou framework (http, kafka, ou redis)
  • attribute: Attribut « span » spécifique (kafka.access, redis.command, ou dynamodb.op)
rule-value Liste de valeurs séparées par des virgules à faire correspondre
  • Pour kafka.access: consume, send, produce
  • Pour redis.command: SET, GET
match-type Stratégie d'appariement
  • strict: Correspondance exacte
  • startswith: Correspondance de préfixe
  • endswith: Correspondance de suffixe
  • contains: Correspondance de sous-chaîne
Exemples
# 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
Important :
Vous pouvez définir plusieurs règles de filtrage au sein d'une même politique. Chaque règle peut définir plusieurs attributs, et tous ces attributs doivent correspondre pour que la règle s'applique.
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 /health les 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) :

  1. INSTANA_CONFIG_PATH (Archives de YAML )
  2. INSTANA_TRACING_DISABLEvariable d'environnement
  3. Configuration dans le code (config["tracing"]["disable"])
  4. Configuration de l'agent (configuration.yaml)
Remarque :
Si plusieurs configurations sont fournies, seule la source présente ayant la priorité la plus élevée est prise en compte; les autres sont totalement ignorées.

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.

Remarque :
Les traces de pile ne sont pas collectées pour les « spans 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.
Remarque :
En cas d'erreurs, la trace complète de la pile est enregistrée, quelle que soit sa longueur, ce qui permet de s'assurer que la cause première est entièrement identifiée.

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) :

  1. INSTANA_CONFIG_PATH (Archives de YAML )
  2. INSTANA_STACK_TRACE / variables d'environnement INSTANA_STACK_TRACE_LENGTH
  3. Configuration dans le code (config["tracing"]["global"] / config["tracing"]["<tech>"])
  4. Configuration de l'agent (configuration.yaml)
Remarque :
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é :

  • kafka
  • rabbitmq
  • aioamqp
  • aiohttp
  • urllib3 (pour les intervalles urllib3requests et )
  • httpx
  • log
  • redis
  • mysql
  • postgres
  • mongo
  • pymongo
  • cassandra
  • couchbase
  • dynamodb
  • sqlalchemy
  • boto3
  • s3
  • rpc

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_CORRELATION sur false.

  • Configuration dans le code : utilisez la configuration suivante :

    from instana.configurator import config
    
    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.