DEV Community

LeoJulieta
LeoJulieta

Posted on

Polylane: IA que automatiza alertas de Cloudflare en 5 segundos

Polylane en Product Hunt: la IA on‑call que automatiza la respuesta a incidentes en Cloudflare

Introducción

¿Cansado de pasar horas analizando alertas de Cloudflare mientras el negocio pierde ingresos? Con Polylane la respuesta es automática: un LLM interpreta la alerta, genera un playbook y abre el ticket en el canal correcto en menos de 5 segundos.

Lanzado esta semana en Product Hunt, Polylane combina grandes modelos de lenguaje con los webhooks de Cloudflare para que tu equipo de DevOps y SRE dedique su tiempo a lo que realmente importa: la solución, no la detección.


1. Arquitectura básica

graph TD
    A[Cloudflare] -->|Webhook| B[Polylane API]
    B --> C{LLM (GPT‑4o / Claude 3.5)}
    C --> D[Generador de playbooks]
    D --> E[Integraciones (Slack, PagerDuty, GitHub Actions)]
    E --> F[Ticket / Acción automática]
  1. Cloudflare envía eventos mediante Webhooks (WAF, Workers, errores 5xx…).
  2. Polylane recibe el payload, lo normaliza y lo envía al LLM.
  3. El LLM clasifica la gravedad, redacta un diagnóstico y selecciona el playbook apropiado.
  4. El playbook se ejecuta mediante integraciones predefinidas (Slack, PagerDuty, GitHub Actions…).
  5. Se crea o actualiza el ticket y, si procede, se escala al equipo correspondiente.

2. Registro y configuración rápida

2.1 Crear cuenta en Polylane

  1. Visita https://polylane.io y regístrate con tu correo corporativo.
  2. En el dashboard, genera una API Key (sección Security → API Tokens).

2.2 Configurar webhook en Cloudflare

curl -X POST "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/rulesets" \
     -H "Authorization: Bearer <CLOUDFLARE_API_TOKEN>" \
     -H "Content-Type: application/json" \
     -d '{
           "name": "Polylane Incident Hook",
           "description": "Envía alertas a Polylane",
           "trigger": "http_request",
           "actions": [
             {
               "type": "webhook",
               "url": "https://api.polylane.io/v1/webhook",
               "method": "POST",
               "headers": {
                 "Authorization": "Bearer <POLYLANE_API_KEY>"
               }
             }
           ]
         }'
Enter fullscreen mode Exit fullscreen mode

Tip: Usa el Zone ID del dominio que deseas monitorizar y activa los eventos que necesites (WAF, Workers, DNS, etc.).


3. Ejemplos de código

3.1 Node.js / TypeScript – Consumir la respuesta de Polylane

import fetch from 'node-fetch';

const POLYLANE_ENDPOINT = 'https://api.polylane.io/v1/respond';
const API_KEY = process.env.POLYLANE_API_KEY!;

interface CloudflareAlert {
  id: string;
  type: string;
  severity: 'low' | 'medium' | 'high';
  payload: Record<string, any>;
}

async function handleAlert(alert: CloudflareAlert) {
  const res = await fetch(POLYLANE_ENDPOINT, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`,
    },
    body: JSON.stringify(alert),
  });

  const data = await res.json();
  console.log('Polylane response →', data);
  // data.playbook contains actions (Slack, PagerDuty, etc.)
}
Enter fullscreen mode Exit fullscreen mode

3.2 Python – Envío de un ticket a PagerDuty desde el playbook

import os, requests

PAGERDUTY_URL = "https://api.pagerduty.com/incidents"
PAGERDUTY_TOKEN = os.getenv("PAGERDUTY_TOKEN")

def crear_incidente(summary: str, severity: str):
    headers = {
        "Authorization": f"Token token={PAGERDUTY_TOKEN}",
        "Content-Type": "application/json",
        "Accept": "application/vnd.pagerduty+json;version=2"
    }
    payload = {
        "incident": {
            "type": "incident",
            "title": summary,
            "service": {"id": "P123456", "type": "service_reference"},
            "urgency": "high" if severity == "high" else "low",
        }
    }
    r = requests.post(PAGERDUTY_URL, json=payload, headers=headers)
    r.raise_for_status()
    return r.json()
Enter fullscreen mode Exit fullscreen mode

3.3 GitHub Actions – Ejecutar un script de mitigación después de la alerta

name: Mitigación automática Cloudflare
on:
  workflow_dispatch:
  repository_dispatch:
    types: [polylane_alert]

jobs:
  remediate:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Run mitigation script
        run: |
          python scripts/mitigate.py "${{ github.event.client_payload.alert_id }}"
Enter fullscreen mode Exit fullscreen mode

En Polylane, configura el Webhook de salida para disparar repository_dispatch con el tipo polylane_alert.


4. Integraciones clave

Herramienta Qué hace Polylane Configuración mínima
Slack Publica diagnóstico y enlace al ticket Añade SLACK_WEBHOOK_URL en el dashboard → Integrations → Slack
PagerDuty Crea/incide incidentes según gravedad Proporciona PAGERDUTY_TOKEN y el ID del servicio
GitHub Actions Lanza workflows de mitigación o despliegue Usa repository_dispatch como disparador (ver ejemplo)
Opsgenie Escalado a on‑call rotativo API Key y team_id en Integrations

5. Seguridad y cumplimiento

  1. Cifrado: TLS 1.3 en tránsito, AES‑256 en reposo.
  2. Data masking: habilita la opción en Settings → Privacy para que el LLM reciba solo los campos type, severity y message.
  3. Retención: Polylane guarda logs de incidentes 30 días (configurable).
  4. Auditoría: Exporta CSV de todas las respuestas mediante la API /v1/audit.

6. Métricas de rendimiento

Métrica Valor objetivo Cómo medir
Tiempo medio de respuesta (TTR) < 5 s GET /v1/metrics?metric=ttr
Precisión de clasificación > 92 % Comparar etiquetas LLM vs. revisión manual (dataset interno)
Reducción de tickets manuales 70 % menos GET /v1/metrics?metric=auto_resolved_rate
SLA cumplimiento (NIS2) 100 % dentro de 15 min Alertas de escalation en el dashboard

7. Caso de estudio simulado

Escenario: Un ataque de bots saturó el WAF de example.com, generando 500 alertas en 30 segundos.

Paso Acción de Polylane Resultado
1 Recibe webhook con type: "waf.block" y severity: "high" Clasifica como ataque DDoS
2 LLM genera diagnóstico: “Posible ataque de capa 7, origen IP = 185.6.0.0/16” Mensaje enviado a Slack #security
3 Ejecuta playbook: block_ip_range("185.6.0.0/16") vía API de Cloudflare 85 % de tráfico malicioso bloqueado en 8 s
4 Crea incidente en PagerDuty con urgencia high Equipo on‑call notificado
5 Inicia GitHub Action que despliega una regla de firewall temporal Regla activa en 12 s
6 Después de 10 min, LLM revisa métricas y cierra ticket automáticamente Reducción de tiempo de mitigación de 30 min a 3 min

8. Checklist de implementación

  • [ ] Crear cuenta Polylane y generar API Key.
  • [ ] Configurar webhook de salida en Cloudflare (WAF, Workers, DNS).
  • [ ] Añadir integraciones necesarias (Slack, PagerDuty, GitHub).
  • [ ] Habilitar data masking para cumplir GDPR.
  • [ ] Definir playbooks (bloqueo IP, reinicio Workers

Herramienta mencionada: Groq Cloud

Top comments (0)