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.

Activity

Automation for Jira 20 August 2024, 19:13 Jira Internal Users

Foi realizado o commit.

Automation for Jira 20 August 2024, 19:13 Jira Internal Users

Foi realizado o commit.

Automation for Jira 19 August 2024, 17:22 Jira Internal Users

Valor anterior do campo deployment date era 2024-08-14T12:45:00.0+0000. Parece ter ocorrido um novo deploy nesta issue - deploy.

Automation for Jira 19 August 2024, 17:22 Jira Internal Users

Ocorreu o deploy em Produção.

Automation for Jira 14 August 2024, 12:45 Jira Internal Users

Ocorreu o deploy em Produção. Issue movimentada para Done.

Nenhuma issue associada no Jira Produção.

Automation for Jira 14 August 2024, 12:44 Jira Internal Users

Foi realizado o commit.

Automation for Jira 13 August 2024, 15:08 Jira Internal Users

Esta issue teve o seu status alterado, pois ocorreu o merge da branch CAPL-6412 na branch develop.

Automation for Jira 13 August 2024, 15:05 Jira Internal Users

Foi realizado o commit.

Renan Fernando Schroeder 12 August 2024, 14:35 Jira Internal Users

@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).

Automation for Jira 9 August 2024, 18:32 Jira Internal Users

Esta issue teve o seu status alterado, pois foi aprovado o PR.

Automation for Jira 8 August 2024, 18:08 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 8 August 2024, 14:19 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 7 August 2024, 17:22 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 7 August 2024, 17:22 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 7 August 2024, 16:15 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 7 August 2024, 14:27 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 7 August 2024, 13:53 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 6 August 2024, 19:29 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 6 August 2024, 15:14 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 6 August 2024, 15:14 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 23:27 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 20:09 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:28 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:27 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:24 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:24 Jira Internal Users

Foi criado o PR.

Automation for Jira 5 August 2024, 17:24 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:24 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:24 Jira Internal Users

Foi aprovado o PR.

Automation for Jira 5 August 2024, 17:22 Jira Internal Users

Foi criada a branch.

Automation for Jira 2 August 2024, 20:17 Jira Internal Users

@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.