Une fois votre application instrumentée avec SkyWalking et les données de traçage distribué envoyées à Managed Service for OpenTelemetry, Managed Service for OpenTelemetry commence à surveiller votre application. Vous pouvez alors consulter diverses données de supervision, telles que la topologie des applications, les traces, les transactions en échec, les transactions lentes et l'analyse SQL. Cette rubrique explique comment utiliser l'agent SkyWalking Python pour activer l'instrumentation automatique et envoyer les données d'application.
Prérequis
Vous avez téléchargé l'agent Python pour Apache SkyWalking. Nous vous recommandons d'utiliser la dernière version.
Vous avez ajouté l'agent Python SkyWalking à votre projet Python.
-
Contexte
SkyWalking est un outil open source populaire de surveillance des performances des applications (APM) pour les architectures basées sur les microservices, le cloud-native et les conteneurs, notamment Docker, Kubernetes et Mesos. Au cœur de SkyWalking se trouve un système de traçage distribué.
skywalking-python est la bibliothèque d'agent Python officielle pour SkyWalking. Vous pouvez intégrer skywalking-python pour superviser les applications Python. Elle prend en charge l'instrumentation automatique de nombreuses bibliothèques tierces, telles que Kafka, HTTP, AIOHTTP, Redis et WebSockets.
Exemple d'application
Référentiel de l'exemple d'application : SkyWalking Demo
Cette démo est un exemple simple basé sur Flask qui transfère les requêtes et interagit avec une base de données MySQL. L'agent SkyWalking supervise l'application et envoie les données.
Activer l'instrumentation automatique pour une application Python
Vous pouvez configurer les paramètres de l'agent SkyWalking Python dans les fichiers de votre projet Python ou sous forme de variables d'environnement.
Configurer les paramètres dans le code
Modifiez les paramètres config.init dans le fichier de votre projet Python. Dans l'exemple d'application, les fichiers correspondants sont proxy/TestProxy.py et controller/TestController.py.
from skywalking import config
config.init(ConfigurationName = ConfigurationValue)
Configurer les paramètres comme variables d'environnement
Ajoutez le contenu suivant à votre fichier de variables d'environnement, puis redémarrez votre application pour que les modifications prennent effet.
export SW_AGENT_ConfigurationName=ConfigurationValue
Pour les environnements de conteneurs Docker, vous pouvez configurer les variables d'environnement dans l'option environment du fichier docker-compose.yaml.
-
Configurez l'endpoint et le jeton.
-
Importez SkyWalking dans votre fichier Python.
from skywalking import agent, config -
Configurez l'endpoint et le jeton d'authentification.
Remplacez
<endpoint>et<auth-token>par l'endpoint et le jeton d'authentification obtenus dans la section Prérequis.config.init(agent_collector_backend_services='<endpoint>', agent_authentication='<auth-token>')
-
-
Configurez un nom de service comme identifiant de l'application.
config.init(agent_name='<service name>') -
Configurez le protocole d'envoi des données. Le seul protocole pris en charge est gRPC.
### The only available reporting protocol is 'grpc'. config.init(agent_protocol='<protocol>') Configurez d'autres paramètres facultatifs selon vos besoins. Pour plus d'informations, consultez la documentation officielle Apache SkyWalking.
Redémarrez l'application.
FAQ
-
Que faire si l'erreur
Method not found: skywalking.v3.LogReportService/collectse produit lors de l'envoi des données via gRPC ?grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found: skywalking.v3.LogReportService/collect" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Method not found: skywalking.v3.LogReportService/collect", grpc_status:12, created_time:"2023-07-05T15:58:00"}" >Définissez
agent_log_reporter_activesurFalsedans l'appelconfig.init.config.init(agent_log_reporter_active=False) -
Que faire si l'erreur
Method not found: skywalking.v3.MeterReportService/collectse produit lors de l'envoi des données via gRPC ?grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found: skywalking.v3.MeterReportService/collect" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Method not found: skywalking.v3.MeterReportService/collect", grpc_status:12, created_time:"2023-07-05T16:00:00+08:00"}" >La console ne prend pas en charge l'envoi des données
metric. Dans l'appelconfig.init, définissezagent_meter_reporter_activesurFalse.config.init(agent_meter_reporter_active=False)

