Files
clube67_newwhats.local/self-healing/README.md
T
2026-05-11 23:28:15 +02:00

2.8 KiB

🔄 Loop de Auto-Cura (Self-Healing DevOps) com Gitea + Grafana + Loki

Este diretório contém a infraestrutura e os scripts necessários para integrar o seu sistema de monitoramento centralizado (Grafana + Loki) ao Gitea, permitindo que erros de runtime nos containers de produção abram Issues automaticamente para serem corrigidas pelo Agente de IA.


🗺️ Visão Geral da Arquitetura

graph TD
    A[Docker Container na VPS 1] -->|Gera Logs de Erro| B[Promtail / Loki]
    B -->|Métricas & Alertas| C[Grafana Alerting]
    C -->|Webhook de Alerta| D[Grafana-Gitea Bridge]
    D -->|API POST /issues| E[Gitea Server - VPS 3]
    E -->|Abre Issue de Bug| F[Agente de IA]
    F -->|Corrige, Comita e Dá Push| A

Como o formato de payload de alertas do Grafana é diferente do formato que o Gitea espera na API de Issues, o bridge.js atua como o tradutor inteligente desse fluxo, formatando o alerta em um relatório em Markdown limpo e amigável para o Agente.


🛠️ Como Configurar e Ativar o Fluxo

Passo 1: Iniciar a Bridge (bridge.js)

A Bridge pode rodar na VPS 4 (Dev/Builder) ou na VPS 1 (Produção/SOC). Ela escuta na porta 9091 por padrão.

Para rodá-la em segundo plano com PM2 ou Node:

# Iniciar a bridge informando o Token do Gitea
GITEA_TOKEN="ada47ca2fb196319dd10245cc216a327dac857ec" node bridge.js

Passo 2: Configurar o Canal de Alerta no Grafana (VPS 1)

  1. Acesse o seu Grafana em http://10.99.0.1:3000.
  2. Vá em Alerting -> Contact points -> New contact point.
  3. Escolha um nome (ex: Gitea-Bridge).
  4. Selecione a integração Webhook.
  5. No campo URL, aponte para a Bridge: http://10.99.0.4:9091/alerts (ou o IP onde você subiu a bridge).
  6. Clique em Save contact point.

Passo 3: Criar a Regra de Alerta no Grafana (Loki Query)

  1. Vá em Alerting -> Alert rules -> New alert rule.
  2. Defina uma consulta LogQL no Loki para monitorar erros no seu container WhatsApp. Exemplo:
    sum(rate({vps="vps4_whatsapp", job="varlogs"} |= "error" or "Exception" or "Uncaught"[5m])) > 0
    
  3. Defina as anotações do Alerta:
    • Summary: Foi detectado um erro crítico de execução no container.
    • Description: {{ $values.var_name }} erros detectados nos últimos 5 minutos.
  4. Na seção Notifications, vincule o alerta ao Contact Point Gitea-Bridge que criamos.
  5. Salve a regra.

🎯 Testando o Fluxo de Auto-Cura

Quando ocorrer qualquer erro no container, o fluxo será disparado:

  1. O Grafana detectará e enviará o alerta para a Bridge.
  2. A Bridge criará uma Issue no Gitea com o título: 🚨 [AUTO-BUG] Docker Container Error detectado na vps4_whatsapp.
  3. O corpo da Issue conterá a stack trace do erro.
  4. O Agente de IA poderá ler a Issue e realizar o reparo autônomo do código!