====== 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