Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
1 of 5 tasks
ogecece opened this issue Mar 22, 2024 · 3 comments
Open
1 of 5 tasks
Labels
enhancement New feature or request

Comments

@ogecece
Copy link
Member

ogecece commented Mar 22, 2024

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 no Makefile
    - 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

  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:

  • 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 repo querido-diario e então execute make re-run no querido-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.

@ogecece ogecece added the enhancement New feature or request label Mar 22, 2024
@ogecece ogecece moved this from Backlog to Pronta p/ fazer in [Querido Diário] GT de Observabilidade Mar 22, 2024
@ogecece ogecece moved this from Pronta p/ fazer to Em andamento in [Querido Diário] GT de Observabilidade Apr 4, 2024
@ogecece
Copy link
Member Author

ogecece commented Apr 4, 2024

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
Copy link
Member Author

ogecece commented Apr 9, 2024

PR em draft foi aberto para configuração do OTel Collector: #70

@ogecece
Copy link
Member Author

ogecece commented May 7, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

1 participant