okfn-brasil / querido-diario-api

This is Querido Diário's API. It provides everything the frontend does and even more!
https://queridodiario.ok.org.br/api/docs
MIT License
48 stars 32 forks source link

[GT Observabilidade] Implementar ferramentas para monitoramento de logs #69

Open ogecece opened 5 months ago

ogecece commented 5 months ago

Descrição

Construção inicial de um ambiente de observabilidade para a API utilizando OpenTelemetry e Grafana. Começamos pelos logs pois provavelmente é a etapa que menos exigiria alterações no código.

O fluxo de desenvolvimento será feito utilizando a branch dev como base. Qualquer Pull Request deverá ser feito a partir e para esta branch.

Requisitos

Configurando ambiente de desenvolvimento

Mais simples, usando apenas o repo da API e dados fake

  1. Execute make run. O comando irá levantar opensearch, postgres e tentará levantar o servidor da API, com falha. É necessário criar o índice no opensearch antes de levantar a API.
  2. Execute make load-data
  3. Execute make re-run

Mais completo, usando repo de processamento de dados, raspadores e api, com dados reais

  1. Execute make build-devel && podman pull ghcr.io/okfn-brasil/querido-diario-apache-tika-server:latest no repo querido-diario-data-processing
  2. No Makefile do repo querido-diario-data-processing, mudar variável FULL_PROJECT para true
  3. Execute make setup no repo querido-diario-data-processing

Agora o pod foi criado, assim como vários recursos como Opensearch, Postgres e Minio. Porém, eles ainda estão vazios. Vamos populá-los.

  1. Copie .local.env do repo querido-diario para .env
  2. Configure o ambiente de desenvolvimento do repo querido-diario de acordo com seu README
  3. Execute um raspador no repo querido-diario (ex: scrapy crawl rn_natal -a start_date=2024-03-01)
  4. Execute make re-run no repo querido-diario-data-processing

Agora temos arquivos, tabelas e índices populados. Podemos habilitar a API.

  1. Execute make build && make re-run no repo querido-diario-api

Pronto! Agora o ambiente está todo configurado.

Usando o ambiente

Algumas maneiras úteis de usar o ambiente de desenvolvimento:

ogecece commented 4 months ago

No último encontro síncrono do GT conseguimos exportar logs da aplicação com o OpenTelemetry.

Próximos passos: configurar OTel Collector para receber logs e verificar problema com logs de nível INFO não aparecendo.

ogecece commented 4 months ago

PR em draft foi aberto para configuração do OTel Collector: https://github.com/okfn-brasil/querido-diario-api/pull/70

ogecece commented 3 months ago

PR em draft foi aberto para configuração inicial do Loki e Grafana: #71

Após esse passo, resta configurar novos logs por endpoint, uso de autenticação, variáveis de ambiente e documentação