feat(self-healing): adiciona o bridge server do Grafana para Gitea e guia de arquitetura
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# 🔄 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
|
||||
|
||||
```mermaid
|
||||
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:
|
||||
```bash
|
||||
# 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:
|
||||
```logql
|
||||
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!
|
||||
Reference in New Issue
Block a user