====== Tracers ====== **Setup** Library: pip install tracers-spans-python A global variable must be created with the settings for sending tracers, for example: /monitoring/tracers/tracers.py from tracers_spans_python import Tracer PROJECT_NAME = 'OPS' TRACER = Tracer( service_name=PROJECT_NAME, host='localhost', port='9411/api/v2/spans', ) Tracers must be sent to some host and port with some reciver. By default it is configured to send tracers to zipkin, on port 9411, with the path '/api/v2/spans'. To create tracers, it must be used as a decorator, first being declared with its settings (if any) as a variable. For example: import xxx from fastapi import FastAPI app = FastAPI() tracer = Tracer( service_name='example', host='0.0.0.0', path='api/v2/spans', port='9411', ip_application='0.0.0.0' ) **New tracer** To create a new tracer, call the new_tracer function: @app.get("/create_tracer") @tracer.new_tracer() def example_endpoint(): return 'hello world' This function collects the function name from the endpoint and uses it as the tracer name. For tracer annotations call the annotate_tracer function, and pass the annotation as a string. **New async tracer** To create a new tracer for an endpoint or asyncrona function, the new_async_tracer function must be called: @app.get("/create_tracer") @tracer.new_async_tracer() async def example_endpoint(): result = await function() return result **New child** Para a cração de um novo tracer deve ser chamado a função new_child: @app.get("/create_tracer") @tracer.new_child() def example_endpoint(): return 'hello world' This function collects the function name and uses it as the tracer name. For tracer annotations call the annotate_span function, and pass the annotation as a string. **New async child** To create a new child for an asyncronous function, call the new_async_child function: @app.get("/create_tracer") @tracer.new_async_child() async def example_endpoint(): result = await function() return result **Annotates e tags** The annotations and tags are passed by calling the functions: annotate_tracer, annotate_spans, tags_tracer and tags_child. For annotations the only requirement is that the parameter passed is a string. For tags it is necessary to specify the key and its value, as follows: key=value or 'database'='controler' **Dependecies** aiozipkin ====== PORTUGUÊS ====== ====== Tracers ====== **Setup** Biblioteca: pip install tracers-spans-python Deve-se ser criado uma variavel global com as configurações para o envio dos tracers, por exemplo: /monitoring/tracers/tracers.py from tracers_spans_python import Tracer PROJECT_NAME = 'OPS' TRACER = Tracer( service_name=PROJECT_NAME, host='localhost', port='9411/api/v2/spans', ) Os tracers devem ser enviados para algum host e porta com algum reciver. Por padrão esta configurado para enviar os tracers para o zipkin, na porta 9411, com o path '/api/v2/spans'. Para a criação de tracers, deve ser usado como decorator, sendo antes declarado com suas configuraçoes (caso haja) como uma variavel. Por exemplo: import xxx from fastapi import FastAPI app = FastAPI() tracer = Tracer( service_name='example', host='0.0.0.0', path='api/v2/spans', port='9411', ip_application='0.0.0.0' ) **New tracer** Para a cração de um novo tracer deve ser chamado a função new_tracer: @app.get("/create_tracer") @tracer.new_tracer() def example_endpoint(): return 'hello world' Essa função coleta o nome da funcção do endpoint e usa como nome do tracer. Para anotações do tracer chame a função annotate_tracer, e passe a anotação como string. **New async tracer** Para a cração de um novo tracer para um endpoint ou função asyncrona deve ser chamado a função new_async_tracer: @app.get("/create_tracer") @tracer.new_async_tracer() async def example_endpoint(): result = await function() return result **New child** Para a cração de um novo tracer deve ser chamado a função new_child: @app.get("/create_tracer") @tracer.new_child() def example_endpoint(): return 'hello world' Essa função coleta o nome da função e usa como nome do tracer. Para anotações do tracer chame a função annotate_span, e passe a anotação como string. **New async child** Para a cração de uma nova child para uma função asyncrona deve ser chamado a função new_async_child: @app.get("/create_tracer") @tracer.new_async_child() async def example_endpoint(): result = await function() return result **Annotates e tags** As anotações e tags são passadas chamando as funções: annotate_tracer, annotate_spans ,tags_tracer e tags_child. Para anotaçoes a unica exigência é que o parametro passado seja uma string. Para tags é necessário especificar a key e seu valor, da seguinte forma: key=value or 'database'='controler' **Dependecies** aiozipkin