Evitar perda de eventos na Fila Pub/Sub observability_event_queue
Description
Atualmente, a fila Pub/Sub observability_event_queue
em nossa plataforma está utilizando a retenção padrão de 7 dias, e não há um consumer configurado para a Dead Letter Queue (DLQ).
Isso tem causado inúmeros alertas como este no channel #alerts do Slack, causando potencial perda de eventos quando ocorre falhas no processamento e até mesmo quando atrasado ou interrompido. A fila observability_event_queue
é responsável por transmitir eventos de observabilidade de batches para a tabela observability_event
do database mdmmaster
no PostgreSQL, para que o job Quartz ObservabilityEventSenderJob
realize o sync dos eventos da Carol para o SmartLink.
Para mitigar esse problema, precisamos implementar uma nova funcionalidade que aumente a confiabilidade e resiliência deste mecanismo de processamento de eventos em nossa plataforma.
Objetivo
Implementar uma feature para evitar a perda de eventos na fila Pub/Sub observability_event_queue
do GCP, garantindo que os eventos sejam processados mesmo em situações de alta latência ou falhas temporárias.
Benefícios
- Redução de Perda de Dados: Com a implementação da DLQ, eventos que não puderem ser processados serão armazenados em uma fila de fallback para tentativa posterior.
- Aumento de Confiabilidade: Melhora a confiança no sistema, sabendo que os eventos não serão perdidos em casos de falha ou atrasos no processamento.
- Facilidade de Monitoramento: Implementação de métricas e alertas para monitorar o status da fila DLQ e do consumer, facilitando a identificação e resolução de problemas.
- Escalabilidade: Melhor gestão de picos de demanda, permitindo que o sistema possa escalar de maneira mais eficiente.
Escopo:
- Configurar a Dead Letter Queue (DLQ): :::Prioritário:::
- Criar uma nova fila Pub/Sub dedicada para a DLQ.
- Configurar a
observability_event_queue
para redirecionar mensagens para a DLQ após um número definido de tentativas falhas.
- Aumentar a Retenção de Mensagens na
observability_event_queue
:- Ajustar as configurações da fila Pub/Sub para aumentar o período de retenção de 7 dias para um período mais adequado ao nosso fluxo de trabalho, conforme necessário.
- Reforçar políticas de retries e backoff em caso de falha de conexão com o Postgres (onde ocorre maior incidência de problemas).
- Implementar um consumer para a DLQ:
- Implementar um novo handler que consuma as mensagens da DLQ.
- Configurar políticas de retries e backoff exponencial para reprocessamento.
- Monitoramento e Alertas: :::Prioritário:::
- Implementar métricas de monitoramento.
- Configurar alertas para casos de acúmulo de mensagens na DLQ ou falhas frequentes no processamento.
- Definir forma para consumir os dados para análise:
- Sugestão: BQ Subscription para levar os dados para uma tabela no BQ.
Foi realizado o commit.
Foi realizado o commit.
Valor anterior do campo deployment date era 2024-08-14T12:45:00.0+0000. Parece ter ocorrido um novo deploy nesta issue - deploy.
Ocorreu o deploy em Produção.
Ocorreu o deploy em Produção. Issue movimentada para Done.
Nenhuma issue associada no Jira Produção.
Foi realizado o commit.
Esta issue teve o seu status alterado, pois ocorreu o merge da branch CAPL-6412 na branch develop.
Foi realizado o commit.
@MARCOS STUMPF
Testes de Produto:
Lista de tópicos de Pub/Sub: https://console.cloud.google.com/cloudpubsub/subscription/list?project=labs-app-mdm-qa
Entrar no tópico
{sandbox-name}-observability-event
e disparar mensagens para o tópico com schema incompatível com o esperado para os eventos de observabilidade tradicionais (qualquer json com schema imaginário já faz com que o evento entre na DLQ).Esta issue teve o seu status alterado, pois foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi criado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi aprovado o PR.
Foi criada a branch.
@Renan Fernando Schroeder ,
Este issue foi planejada para ser entregue até 2024-09-27. Você pode confirmar consultando o campo Due Date desta issue.
Data já planejadas para esta issue: 2024-09-27
Se o campo External Issue Link estiver preenchido com o link de uma issue válida no Jira Produção o cliente também será notificado no Jira Produção.