Skip to content

2024 ‐ Grupo de Trabalho de Observabilidade

Giulio Carvalho edited this page Jun 4, 2024 · 25 revisions
  • Data de início: 27/02/2024
  • Data de encerramento: Em andamento
  • Canais de interação:
    • Discord - Trocas, dúvidas e reuniões
    • Quadro de tarefas - Acompanhamento de issues e PRs
    • Esta wiki - Registro de atas e documentação para sincronização/onboarding
  • Reuniões: Terças às 18h (semanalmente ou quinzenalmente, dependendo da fase do GT)

Descrição

Neste Grupo de Trabalho temos como objetivo construir a pilha de observabilidade do QD focada em métricas, rastreamento e logs. Apenas tecnologias de código aberto serão usadas como OpenTelemetry, Grafana e Prometheus. Idealmente, toda a arquitetura de produção do QD deve ser coberta, mas as prioridades são: API e processamento de dados.

Metas

O desenvolvimento da atividade tem como metas:

  1. Desenvolver prova de conceito de pilha de observabilidade usando a API;
  2. Colocar em produção um MVP desta pilha;
  3. Cobrir monitoramento da API e do processamento de dados;
  4. Cobrir outras etapas da arquitetura como: backend, raspadores e frontend.

Requisitos mínimos

API

Rastreamento por endpoints, capturando especialmente requisições a bancos. Logs da aplicação nível INFO+.

Métricas:

  • N de requisições recebidas total
  • N de requisições por endpoint
  • Tamanho da resposta
  • Tempo de resposta

Formato

O GT ocorre principalmente de forma assíncrona, por meio dos canais de interação listados acima. Porém, videochamadas também acontecem para onboarding e sincronização.

No início do GT teremos pelo menos três conversas semanalmente para:

  1. Apresentar o GT - para nos apresentarmos, conhecermos as pessoas que querem contribuir e propôr o formato da atividade;
  2. Onboarding da API - para nivelar o conhecimento sobre a primeira base de código que será monitorada;
  3. Apresentar uma demonstração de projeto de observabilidade - para nivelar o conhecimento sobre algumas ferramentas.

Após as conversas iniciais, a rotina de conversas passa a ser principalmente quinzenal, onde são acompanhadas as issues e PRs. Eventualmente, onboardings para outros repositórios também serão necessários e serão agendados na medida que a etapa anterior estiver próxima de ser finalizada.

Referências

Atas

Próxima reunião: 18/06/2024

GT de Observabilidade - 18/06/2024

Presentes:

  • P1
  • P2
  • P3
  • P4

Pauta:

  • Sincronização (60 min) [Giulio]

Links

Tópicos

Sincronização

Registro.

Decisões

  • D1
  • D2
  • D3
04/06/2024

GT de Observabilidade - 04/06/2024

Presentes:

  • Giulio
  • Gabriel Oliveira

Pauta:

  • Sincronização (60 min) [Giulio]

Tópicos

Sincronização

Continuação do PR.

21/05/2024

GT de Observabilidade - 21/05/2024

Presentes:

  • Giulio Carvalho
  • Rebeca Almeida

Pauta:

  • Sincronização (60 min) [Giulio]

Tópicos

Sincronização

Continuação do PR.

07/05/2024

GT de Observabilidade - 07/05/2024

Presentes:

  • Giulio
  • Juliana
  • Rebeca

Pauta:

  • Sincronização (60 min) [Giulio]

Links

Tópicos

Sincronização

PR #70 foi mesclado na branch dev. Não foi feito rebase pois será feito ao final da infra de logs.

Próximo desafio: configurar Loki e Grafana.

Decisões

  • PR #71 foi aberto para configuração inicial do Loki e Grafana
  • Próximo passo é configurar novos logs por endpoint, uso de autenticação, variáveis de ambiente e documentação
23/04/2024

GT de Observabilidade - 23/04/2024

Presentes:

  • Giulio
  • Paulo Nascimento
  • Luísa Coelho

Pauta:

  • Sincronização (60 min) [Giulio]

Links

Tópicos

Sincronização

Continuamos o PR da configuração do OTel Collector para logs. Resolvemos o problema de configuração dos logs e métricas, agora falta resolver o problema do nível de log.

Decisões

  • Quem conseguir resolver o problema do nível de log vai avisar no canal
09/04/2024

GT de Observabilidade - 09/04/2024

Presentes:

  • Giulio
  • Rebeca

Pauta:

  • Sincronização (60 min) [Giulio]

Links

Tópicos

Sincronização

PR foi aberto para configuração do OTel Collector.

Decisões

  • Continuaremos a implementação assincronamente. Próxima reunião daqui a 15 dias
02/04/2024

GT de Observabilidade - 02/04/2024

Presentes:

  • Giulio
  • Juliana
  • Luísa Coelho
  • Paulo Nascimento

Pauta:

  • Dúvidas iniciais: Iremos usar Open Telemetry Collector para armazenar as métricas;
  • Dúvidas iniciais: O podman que acessa cada um dos Dockerfiles e permite a entrada nas portas;
  • Repositório: https://github.com/okfn-brasil/querido-diario-api
  • Pontapé inicial da issue #69 da API (120 min) [Giulio]

Links

Tópicos

Pontapé inicial da issue #69 da API

Gravação

  • Paulo irá colocar timestamps aqui a medida que for assistindo a gravação

Decisões

  • Giulio sobe código para a branch dev para que outras pessoas possam continuar a partir dali
  • Próximo passo é fazer com que os logs que estão sendo exportados para o console pelo opentelemetry sejam exportados para o otel-collector (importante que possamos verificar que de fato estão sendo exportados para o otel-collector, então, também documentar como fazer isso)
  • Também é necessário verificar se os logs de nível INFO não estão aparecendo nos exports do otel por conta de configuração de logs do otel ou do python
  • Quaisquer avanços (ou dúvidas) por qualquer pessoa será relatado na thread "[API] Desenvolvimento inicial da infra de logs" do canal #qd-observabilidade
  • Na próxima sincronização vamos conferir se já temos o otel-collector recebendo os dados exportados
26/03/2024

GT de Observabilidade - 26/03/2024

Presentes:

  • Giulio
  • Luísa
  • Juliana
  • Paulo Nascimento
  • Hylan Silva

Pauta:

  • Sincronização e organização de tarefas (60 min) [Giulio]

Links

Tópicos

Sincronização e organização de tarefas
  • Foi apresentada a issue #69 da API.
  • Foram discutidas possíveis dinâmicas para endereçar a issue. Como é uma issue inicial e estruturante, idealmente faremos tudo muito mais colaborativamente e com mais momentos síncronos para nivelar
    • Podemos marcar chamadas para que uma pessoa esteja liderando e desenvolvendo enquanto vai explicando o raciocínio e ouvindo contribuições e dúvidas das outras
    • Podemos fazer dojo onde uma pessoa está como piloto compartilhando a tela e escrevendo o código, porém o desenvolvimento é ditado por todas as outras pessoas na chamada, que são co-piloto
  • Há poucas pessoas nessa reunião e na última. Talvez tenhamos problemas com falta de pessoas para liderar as tarefas
  • Vamos marcar um pontapé inicial nessa tarefa para a próxima terça, iniciando mais tarde para ver se mais pessoas aparecem

Decisões

  • Faremos uma chamada de pontapé inicial na próxima terça (02/04), 19h-21h (horário de Brasília)
12/03/2024

GT de Observabilidade - 12/03/2024

Presentes:

  • Giulio
  • Hylan Silva
  • Julia Trevine
  • Paulo Nascimento
  • Luísa
  • Jeferson Alves
  • Guilherme Vanz
  • Rebeca Almeida
  • Luiz
  • Luizinho Galicioli
  • Cesar Calafrioli

Pauta:

  • Apresentação com projeto de exemplo de FastAPI + OTel + Prom + Grafana (60 min) [Giulio]

Links

Tópicos

Apresentação com projeto de exemplo de FastAPI + OTel + Prom + Grafana

Link da gravação

Decisões

  • Giulio vai criar thread para definirmos as próximas tarefas e começarmos a nos organizar
  • Giulio vai colocar o desenho de requisitos inicial de métricas, rastreamento e logs na wiki
05/03/2024

GT de Observabilidade - 05/03/2024

Presentes:

  • Giulio Carvalho
  • Rebeca Almeida
  • Juliana Trevine
  • Carine
  • Ester
  • Gyl Monteiro
  • Hylan Silva
  • Lidy Monteiro
  • Paulo Nascimento
  • Raissa Oliveira
  • Jeferson Alves
  • Tuzin

Pauta:

  • Configuração de ambiente e apresentação da base de código da API (60 min) [Giulio]

Links

Tópicos

Configuração de ambiente e apresentação da base de código da API
  • Resumo:
    1. Retomou documentação de arquitetura do QD para localizar a API na arquitetura;
    2. Mostrou a documentação da API e seus endpoints
      • Dúvida: pq tem endpoint sobre CNPJs?
    3. Mostrou Makefile do repositório da API e contextualizou a configuração do ambiente
      • Não estamos focando em ambientes de desenvolvimento que não sejam Linux, mas quem quiser se aventurar, pode tentar, só não vamos conseguir apoiar nas dúvidas e problemas encontrados
      • Hoje, para configurar o ambiente de desenvolvimento da API está sendo melhor levantar o ambiente do processamento de dados primeiro e executar o contêiner da API dentro do pod criado pelo data-processing
        • Para isso, está sendo necessário modificar os dois Makefiles (api e data-processing). No data-processing, adicionar a porta 8080 no create-pod e execute make build e make setup. Na api, modificar o POD_NAME para o mesmo usado no data-processing e executar make build e make rerun
      • Para que o índice querido-diario seja populado pelo data-processing, também é necessário que arquivos existam para ser processados. Esses arquivos podem ser colocados usando o repositório de raspadores
        • Para isso, crie um arquivo .env em data_collection com as variáveis de ambiente abaixo:
          • FILES_STORE=s3://queridodiariobucket/
            AWS_ACCESS_KEY_ID=minio-access-key
            AWS_SECRET_ACCESS_KEY=minio-secret-key
            AWS_ENDPOINT_URL=http://localhost:9000
            AWS_REGION_NAME=us-east-1
            QUERIDODIARIO_DATABASE_URL=postgresql://queridodiario:queridodiario@localhost:5432/queridodiariodb
            
        • Então, execute um raspador qualquer como am_manaus (dica: use filtros de data para limitar o número de arquivos baixados)
        • Por fim, execute make run no data-processing e os arquivos serão processados, disponibilizados no motor de busca e assim estarão disponíveis na API
    4. Explicou a base de código da API
      • A base de código é organizada principalmente por:
        • Aplicação - main, api
        • Configuração - config
        • Serviços - gazettes, companies, themed_excerpts, etc.
        • Recursos - index, database
      • Começando do main é possível entender como a aplicação é configurada e executada
      • api contém os endpoints da API e seus modelos de entrada e saída
        • Cada função de endpoint foca mais nas declarações de entrada e saída e casos de fronteira. O corpo da funcionalidade principal fica mais para o serviço utilizado
      • Um bom exemplo para entender como os serviços estão estruturados é o gazettes para fornecer resultados a partir de buscas no índice principal de conteúdo de diários oficiais

Decisões

  • Sem decisões
27/02/2024

GT de observabilidade - 27/02/2024

Presentes:

  • Giulio Carvalho
  • Juliana Trevine
  • José Guilherme Vanz
  • Ana Paula Gonzaga
  • Clarissa
  • Rebeca Almeida
  • Gyl Monteiro
  • Paulo Nascimento
  • Tiago Henrique
  • Luisa Coelho
  • Hylan Silva
  • Rafael Oliveira
  • Laura Spoladore

Pauta:

  • Descrição das atividades do GT (30-40 min)
  • Onboarding da API do QD (20-30 min)

Links:

Tópicos

Descrição das atividades do GT
  • Grupo de trabalho direcionado com escopo definido para garantir trabalho contínuo e organizar melhor as participações
  • Dinâmica a ser definida dependendo dos perfis dos contribuidores
  • O QD está expandindo, por isso a necessidade de preparar o terreno em termos de infraestrutura e monitoramento
  • A expectativa é terminar antes do São João ou no final de Julho
  • O calendário estará disponível no Discord ou no calendário de atividades da comunidade
  • Comunicação assíncrona no Discord a ser decidida:
    • Criar um canal efêmero que será arquivado depois ou
    • comunicar no canal #qd-backend.
  • O Giulio reforçou a necessidade de transparência dos contribuidores em relação a disponibilidade
  • O Discord tem salas pra uso livre, mesmo fora do horário "oficial" do GT. Podemos combinar chamadas "sob demanda" para endereçar questões específicas ou resolver dúvidas.
  • Menor nível de dependências possível: se pudermos não usar o Prometheus, seria melhor
  • Vamos partir da API como POC (prova de conceito) e a partir daí passar para outras etapas
  • Para a próxima reunião: leitura da documentação do QD
Onboarding da API do QD

Não rolou. Giulio perdeu a aposta. Vai ficar pra terça que vem.

Decisões

  • Vamos criar um canal de comunicação no Discord (que será arquivado ao fim do GT): #qd-gt-observabilidade