Após instrumentar sua aplicação com o SkyWalking e relatar dados de rastreamento distribuído para o Managed Service for OpenTelemetry, o serviço começa a monitorá-la. Em seguida, visualize diversos dados de monitoramento, como topologia da aplicação, traces, transações com falha, transações lentas e análise de SQL. Este tópico descreve como usar o SkyWalking Python Agent para ativar a instrumentação automática e relatar dados da aplicação.
Pré-requisitos
Baixe o agente Python do Apache SkyWalking. Recomendamos o uso da versão mais recente.
Adicione o agente Python do SkyWalking ao seu projeto Python.
-
Informações de fundo
O SkyWalking é uma ferramenta popular de código aberto para monitoramento de desempenho de aplicações (APM), voltada para microsserviços, arquiteturas cloud-native e baseadas em contêineres, incluindo docker, Kubernetes e Mesos. Essencialmente, o SkyWalking é um sistema de rastreamento distribuído.
A skywalking-python é a biblioteca oficial de agentes Python para o SkyWalking. Integre-a para monitorar aplicações Python. Ela oferece suporte à instrumentação automática para diversas bibliotecas de terceiros, como Kafka, HTTP, AIOHTTP, Redis e WebSockets.
Aplicação de exemplo
Repositório da aplicação de exemplo: SkyWalking Demo
Esta demonstração é um exemplo simples baseado em Flask que encaminha requisições e interage com um banco de dados MySQL. O agente do SkyWalking monitora a aplicação e relata os dados.
Ativar instrumentação automática para uma aplicação Python
Configure os parâmetros do SkyWalking Python Agent nos arquivos do seu projeto Python ou como variáveis de ambiente.
Configure parameters in code
Modifique os parâmetros config.init no arquivo do seu projeto Python. Na aplicação de exemplo, os arquivos correspondentes são proxy/TestProxy.py e controller/TestController.py.
from skywalking import config
config.init(ConfigurationName = ConfigurationValue)
Configure parameters as environment variables
Adicione o conteúdo abaixo ao seu arquivo de variáveis de ambiente e reinicie a aplicação para aplicar as alterações.
export SW_AGENT_ConfigurationName=ConfigurationValue
Para ambientes de contêiner docker, configure as variáveis de ambiente na opção environment do arquivo docker-compose.yaml.
-
Configure o endpoint e o token.
-
Importe o SkyWalking no seu arquivo Python.
from skywalking import agent, config -
Configure o endpoint e o token de autenticação.
Substitua
<endpoint>e<auth-token>pelo endpoint e token de autenticação obtidos na seção Pré-requisitos.config.init(agent_collector_backend_services='<endpoint>', agent_authentication='<auth-token>')
-
-
Configure um nome de serviço como identificador da aplicação.
config.init(agent_name='<service name>') -
Configure o protocolo de relato de dados. O único protocolo suportado é gRPC.
### The only available reporting protocol is 'grpc'. config.init(agent_protocol='<protocol>') Configure outros parâmetros opcionais conforme necessário. Para mais informações, consulte a documentação oficial do Apache SkyWalking.
Reinicie a aplicação.
Perguntas frequentes
-
O que fazer se o erro
Method not found: skywalking.v3.LogReportService/collectocorrer ao relatar dados 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"}" >Defina
agent_log_reporter_activecomoFalsena chamadaconfig.init.config.init(agent_log_reporter_active=False) -
O que fazer se o erro
Method not found: skywalking.v3.MeterReportService/collectocorrer ao relatar dados 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"}" >O console não suporta o relato de dados de
metric. Na chamadaconfig.init, definaagent_meter_reporter_activecomoFalse.config.init(agent_meter_reporter_active=False)

