Após instrumentar sua aplicação com o SkyWalking e relatar dados de rastreamento distribuído para o Managed Service for OpenTelemetry, o Managed Service for OpenTelemetry passa 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 monitoramento de desempenho de aplicações (APM) de código aberto para arquiteturas de microsserviços, cloud-native e baseadas em contêineres, incluindo docker, Kubernetes e Mesos. Em sua essência, o SkyWalking é um sistema de rastreamento distribuído.
O skywalking-python é a biblioteca oficial de agentes Python para o SkyWalking. Integre o skywalking-python para monitorar aplicações Python. Ele 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 que as alterações entrem em vigor.
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 de pré-requisitos.config.init(agent_collector_backend_services='<endpoint>', agent_authentication='<auth-token>')
-
-
Configure um nome de service 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
-
Como proceder 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) -
Como proceder 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)
