/fastapi-metrics

OpenTelemetry, traces, metrics, logs, grafana, prometheus, repositório pra esse mundão de dados

Primary LanguagePython

instalar lib opentelemetry-distro pra rodar os comandos no terminal e instalar as basicas (api e sdk) em uma lapada só

  • importante rodar o comando "opentelemetry-bootstrap -a install" após instalar o distro

ao rodar o app fastapi a seguinte variavel deve ser setada:

export OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true

e então:

opentelemetry-instrument \
    --traces_exporter console \
    --metrics_exporter console \
    --logs_exporter console \
    --service_name dice-server uvicorn main:app

com a configuração acima todos os bagulhos aparecerão no terminal, oq eh util mas paia

[OTLP]

não esquecer de instalar a lib:opentelemetry-exporter-otlp

pra passar os bagulhos pra um coletor local tem q por o seguinte codigo no /tmp/otel-collector-config.yaml

# /tmp/otel-collector-config.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318
exporters:
  debug:
    verbosity: detailed
processors:
  batch:
service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [debug]
      processors: [batch]
    metrics:
      receivers: [otlp]
      exporters: [debug]
      processors: [batch]
    logs:
      receivers: [otlp]
      exporters: [debug]
      processors: [batch]

e então rodar o container:

docker run -p 4317:4317 \
    -v /tmp/otel-collector-config.yaml:/etc/otel-collector-config.yaml \
    otel/opentelemetry-collector:latest \
    --config=/etc/otel-collector-config.yaml

com isso o comando pra rodar o app fica menor pois traces e metricas por padrão vão pro OTLP então não precisa indicar isso:

opentelemetry-instrument --logs_exporter otlp uvicorn main:app