Dépannage des problèmes d'instrumentation automatique de Python

Problèmes d’installation

Échec de l’installation du paquet Python

Les installations de paquets Python nécessitent gcc et gcc-c++, que vous devrez peut-être installer si vous utilisez une version allégée de Linux, telle que CentOS.

yum -y install python3-devel
yum -y install gcc-c++
apt install -y python3-dev
apt install -y build-essential
apk add python3-dev
apk add build-base

Bootstrap avec uv

L’exécution de opentelemetry-bootstrap -a install lors de l’utilisation du gestionnaire de paquets uv peut entraîner des configurations de dépendances erronées ou inattendues.

Au lieu de cela, vous pouvez générer dynamiquement les exigences OpenTelemetry et les installer en utilisant uv.

Tout d’abord, installez les paquets appropriés (ou ajoutez-les à votre fichier de projet et exécutez uv sync) :

uv pip install opentelemetry-distro opentelemetry-exporter-otlp

Maintenant, vous pouvez installer l’auto-instrumentation :

uv run opentelemetry-bootstrap -a requirements | uv pip install --requirement -

Enfin, utilisez uv run pour démarrer votre application (voir Configuration de l’agent) :

uv run opentelemetry-instrument python myapp.py

Veuillez noter que vous devez réinstaller l’auto-instrumentation chaque fois que vous exécutez uv sync ou mettez à jour des paquets existants. Il est donc recommandé de faire de l’installation une partie de votre pipeline de construction.

Problèmes d’instrumentation

Le mode de débogage de Flask avec le rechargeur casse l’instrumentation

Le mode de débogage peut être activé dans l’application Flask comme ceci :

if __name__ == "__main__":
    app.run(port=8082, debug=True)

Le mode de débogage peut empêcher l’instrumentation de se produire car il active un rechargeur. Pour exécuter l’instrumentation lorsque le mode de débogage est activé, définissez l’option use_reloader sur False :

if __name__ == "__main__":
    app.run(port=8082, debug=True, use_reloader=False)

Problèmes de connectivité

Connectivité gRPC

Pour déboguer les problèmes de connectivité gRPC de Python, définissez les variables d’environnement de débogage gRPC suivantes :

export GRPC_VERBOSITY=debug
export GRPC_TRACE=http,call_error,connectivity_state
opentelemetry-instrument python VOTRE_APP.py