Description
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
- Configuração inicial dos recursos (OpenTelemetry Collector, Grafana + Grafana Loki)
-Dockerfile
, arquivos de configuração, variáveis de ambiente, comandos para build e execução noMakefile
- Testes são desejáveis, mas no momento não são obrigatórios, pois a base de testes está defasada - Caso necessário, criação de novas mensagens de log
- Todos os logs da aplicação devem ser exportados, especialmente no fluxo dos pontos de acesso, identificando no mínimo o trecho de código que gerou o log, nível, timestamp e mensagem clara
- Mensagens de log não devem poluir muito o fluxo principal do código, focando em etapas relevantes da execução - Exportação dos logs da API para OTel Collector
- Deve ser possível acessar diretamente os pontos de acesso do OTel Collector para debug - (opcional) Conexão OTel Collector - Grafana
- Deve ser possível acessar o OTel collector como fonte de dados no Grafana - Configuração de visualização de logs no Grafana
- O ambiente dessa prova de conceito não deve considerar que ficará apenas em desenvolvimento, mas que eventualmente irá para produção, ou seja, não usaremos plugin docker do Loki
- Deve ser possível acessar o Loki como fonte de dados no Grafana
- Um protótipo de dashboard baseado nos logs deve ser configurado
Configurando ambiente de desenvolvimento
Mais simples, usando apenas o repo da API e dados fake
- Execute
make run
.
O comando irá levantaropensearch
,postgres
e tentará levantar o servidor da API, com falha. É necessário criar o índice noopensearch
antes de levantar a API. - Execute
make load-data
- Execute
make re-run
Mais completo, usando repo de processamento de dados, raspadores e api, com dados reais
- Execute
make build-devel && podman pull ghcr.io/okfn-brasil/querido-diario-apache-tika-server:latest
no repoquerido-diario-data-processing
- No Makefile do repo
querido-diario-data-processing
, mudar variávelFULL_PROJECT
paratrue
- Execute
make setup
no repoquerido-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.
- Copie
.local.env
do repoquerido-diario
para.env
- Configure o ambiente de desenvolvimento do repo
querido-diario
de acordo com seu README - Execute um raspador no repo
querido-diario
(ex:scrapy crawl rn_natal -a start_date=2024-03-01
) - Execute
make re-run
no repoquerido-diario-data-processing
Agora temos arquivos, tabelas e índices populados. Podemos habilitar a API.
- Execute
make build && make re-run
no repoquerido-diario-api
Pronto! Agora o ambiente está todo configurado.
Usando o ambiente
Algumas maneiras úteis de usar o ambiente de desenvolvimento:
-
Quer acessar o motor de busca para ver os índices textuais de diários e excertos temáticos?
Execute
curl -k -u admin:admin -X GET "localhost:9200/_cat/indices?v&pretty=true"
(outros endpoints funcionarão igualmente de acordo com a documentação do opensearch). -
Quer baixar mais arquivos de diários e processá-los?
Execute outro
scrapy crawl
no repoquerido-diario
e então executemake re-run
noquerido-diario-data-processing
novamente. -
O live reload não está habilitado na API. Como checar as mudanças?
Execute
make re-run
novamente. -
Como acessar a documentação da API?
Acesse
0.0.0.0:8080/docs
.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Em andamento
Activity