-
-
Notifications
You must be signed in to change notification settings - Fork 25
2024 ‐ Grupo de Trabalho de Observabilidade
- Data de início: 27/02/2024
- Data de encerramento: 20/12/2024
-
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)
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.
O desenvolvimento da atividade tem como metas:
- Desenvolver prova de conceito de pilha de observabilidade usando a API;
- Colocar em produção um MVP desta pilha;
- Cobrir monitoramento da API e do processamento de dados;
- Cobrir outras etapas da arquitetura como: backend, raspadores e frontend.
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
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:
- Apresentar o GT - para nos apresentarmos, conhecermos as pessoas que querem contribuir e propôr o formato da atividade;
- Onboarding da API - para nivelar o conhecimento sobre a primeira base de código que será monitorada;
- 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.
-
Grafana
- Começando com o Grafana (inglês): um conteúdo introdutório sobre como desenhar dashboards no Grafana e seguir melhores práticas.
-
FastApi
- FastApi do Zero! (livro online): Curso com o objetivo de facilitar o aprendizado e desenvolvimento de APIs usando o FastAPI.
-
Observabilidade
-
Playlist "Observabilidade com OpenTelemetry e Python"
- Live de Python: Introdução à Observabilidade: Uma introdução abrangente sobre os conceitos de observabilidade.
- Observabilidade de APIs na prática (video): Master class com Elton Mineto sobre observabilidade de apis.
-
Playlist "Observabilidade com OpenTelemetry e Python"
04/06/2024
Presentes:
- Giulio
- Gabriel Oliveira
Pauta:
- Sincronização (60 min) [Giulio]
Continuação do PR.
21/05/2024
Presentes:
- Giulio Carvalho
- Rebeca Almeida
Pauta:
- Sincronização (60 min) [Giulio]
Continuação do PR.
07/05/2024
Presentes:
- Giulio
- Juliana
- Rebeca
Pauta:
- Sincronização (60 min) [Giulio]
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.
- 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
Presentes:
- Giulio
- Paulo Nascimento
- Luísa Coelho
Pauta:
- Sincronização (60 min) [Giulio]
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.
- Quem conseguir resolver o problema do nível de log vai avisar no canal
09/04/2024
Presentes:
- Giulio
- Rebeca
Pauta:
- Sincronização (60 min) [Giulio]
PR foi aberto para configuração do OTel Collector.
- Continuaremos a implementação assincronamente. Próxima reunião daqui a 15 dias
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]
- https://opentelemetry.io/docs/languages/python/automatic/logs-example/
- https://opentelemetry.io/docs/collector/installation/
- https://opentelemetry.io/docs/collector/configuration/
- https://opentelemetry.io/docs/languages/python/getting-started/
- https://docs.python.org/3/library/logging.html
- Paulo irá colocar timestamps aqui a medida que for assistindo a gravação
- 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
Presentes:
- Giulio
- Luísa
- Juliana
- Paulo Nascimento
- Hylan Silva
Pauta:
- Sincronização e organização de tarefas (60 min) [Giulio]
- 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
- Faremos uma chamada de pontapé inicial na próxima terça (02/04), 19h-21h (horário de Brasília)
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]
- 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
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]
- Resumo:
- Retomou documentação de arquitetura do QD para localizar a API na arquitetura;
- Mostrou a documentação da API e seus endpoints
- Dúvida: pq tem endpoint sobre CNPJs?
- O site Querido Diário: Tecnologias na Educação que, ao buscar, cruza com os excertos identificando CNPJs (reconhecimento de entidades) para facilitar apuração e investigação.
- Dúvida: pq tem endpoint sobre CNPJs?
- 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 executemake build
emake setup
. Na api, modificar oPOD_NAME
para o mesmo usado no data-processing e executarmake build
emake rerun
- Para isso, está sendo necessário modificar os dois Makefiles (api e data-processing). No data-processing, adicionar a porta 8080 no
- 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
emdata_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
- Para isso, crie um arquivo
- 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
- Aplicação -
- 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
- A base de código é organizada principalmente por:
- Sem decisões
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)
- 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
Não rolou. Giulio perdeu a aposta. Vai ficar pra terça que vem.
- Vamos criar um canal de comunicação no Discord (que será arquivado ao fim do GT):
#qd-gt-observabilidade
Querido Diário | Site • Docs • Como contribuir • Discord • Agenda da comunidade