auto-instrumentors 0.0.1
Tool for auto create tracers and metrics to your application
License: MIT License
Keywords: instrumentors tracers metrics

# OpenTelemetry and Auto-tracers/metrics application


dependencias




Para aplicar o open telemetry é nescessário as seguintes dependencias:

$ pip install prometheus_fastapi_instrumentator opentelemetry.sdk \
 opentelemetry.instrumentation.fastapi opentelemetry-exporter-zipkin-json


Para que as dependencias funcionem corretamente, é nescessário uma versão específica do FastAPI.

-> fastapi==0.89.1


# Auto instrumentação ( Auto tracers e metricas )

Esse processo automatiza o envio de tracer e a criação de metricas para a aplicação.
O processo é feito atravez da da intrumentação do "app", exemplo:


================================--===========--=========================================

from fastapi import FastAPI
from openTelemetry_fastapi import auto_monitoring_FastAPI


app = FastAPI()

auto_monitoring = auto_monitoring_FastAPI('http://opentelemetry-collector:9411/api/v2/spans')
auto_monitoring.add_app(app)

==================================--=========--======================================

Em openTelemetry_fastapi.py esta localizado o código onde é feita a instrumentação do app, usando as
bibliotecas especificas. Nesse arquivo também é criado o endpoint para onde sao enviado as metricas.

/ metrics
@app.on_event("startup")
async def startup():
    Instrumentator().instrument(app).expose(app)


Assim é criado o endpoint de metrics, onde é encontrado as informações. As metricas são criadas e enviadas automaticamente.

Tracers são parecidos, podendo ser adicionados mais especificadamente de acordo com a necessidade, porém o auto trace é feito junto com a criação das automatica de metricas, e enviadas para o endereço especificado.

Especificação de endereço para o zipkin:

Para o envio de tracers para serem tratados e mostrados é necessário a especificação de um link, podendo ser especificados atravéz de:
auto_monitoring = auto_monitoring_FastAPI({<endereço>})

*OpenTelemetry*
Para que o OpenTelemetry possa receber os tracers e metrics gerados, basta especificar o link que é configurado no receivers, otel-collector-config.yml.
Por exemplo:

==================================--=====================--====================================

receivers:
  zipkin:
    endpoint: 'opentelemetry-collector:9411'

==================================--=====================--====================================

Sendo {opentelemetry-collector} o nome docontainer, especificado em docker-compose.yml.

Logo após especificar o edereço para o zipkin basta adicionalo usando o add_app(), exemplo:

-> auto_monitoring.add_app(app)

Isso fara com que os tracers sejam gerados automaticamente para cada end point, e enviado para o endereço especificado. As metricas são geradas automaticamente também, voce pode encontra-las no endpoint (/metrics).



# OpenTelemetry

"O OpenTelemetry fornece um padrão de código aberto único e um conjunto de tecnologias para capturar e exportar métricas, traces e registros dos seus aplicativos e infraestrutura nativos da nuvem." 
            link: "https://cloud.google.com/learn/what-is-opentelemetry?hl=pt-br#:~:text=O%20OpenTelemetry%20fornece%20um%20padr%C3%A3o,e%20infraestrutura%20nativos%20da%20nuvem."

Essa "união" facilita a centralização na hora de coletar e distribuir tracers, metricas, logs, e etc...

O container OpenTelemetry é upado junto com o resto da aplicação e pode