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]
- Cloudflare envía eventos mediante Webhooks (WAF, Workers, errores 5xx…).
- Polylane recibe el payload, lo normaliza y lo envía al LLM.
- El LLM clasifica la gravedad, redacta un diagnóstico y selecciona el playbook apropiado.
- El playbook se ejecuta mediante integraciones predefinidas (Slack, PagerDuty, GitHub Actions…).
- 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
- Visita https://polylane.io y regístrate con tu correo corporativo.
- 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>"
}
}
]
}'
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.)
}
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()
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 }}"
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
- Cifrado: TLS 1.3 en tránsito, AES‑256 en reposo.
-
Data masking: habilita la opción en Settings → Privacy para que el LLM reciba solo los campos
type,severityymessage. - Retención: Polylane guarda logs de incidentes 30 días (configurable).
-
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)