Analizar logs
Un incidente en producción le deja caer cincuenta mil líneas de log a las 3 de la madrugada, y entre todas ellas hay quizás una docena que en verdad explican qué se rompió. Este endpoint lee texto crudo de logs y devuelve los errores, anomalías y patrones que merecen su atención, agrupados y priorizados, para que el triage empiece con una lista corta y no con una barra de desplazamiento que nunca termina.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema de la aguja en el pajar
Los logs de una aplicación se escriben para ser completos, no legibles durante un incidente: una solicitud sana y una a punto de tumbar el flujo de pago se registran con el mismo nivel de detalle, entrelazadas entre cien conexiones simultáneas. Los ingenieros de guardia conocen el ritual de buscar 'ERROR' y aun así ahogarse en ruido, porque la señal real suele ser un patrón entre líneas, no una sola línea con esa palabra. El análisis de logs existe para hacer esa detección de forma automática, a la velocidad que un incidente exige.
Qué envía y qué recibe
Envía mediante POST texto crudo de log —líneas planas, logs en JSON, o un formato estructurado común— a /text/log-analyze, con contexto opcional como el nombre del servicio o la ventana de tiempo. La tarea corre de forma asíncrona: el task_id vuelve de inmediato, y el análisis llega a su webhook firmado o a un enlace firmado válido por 24 horas, estructurado como hallazgos agrupados —una firma de error repetida, un pico inusual, una secuencia que precede fallos conocidos— con las líneas que lo respaldan.
Cómo separa la señal del ruido
Busca repetición, secuencia y desviación respecto a los patrones normales del propio log, en vez de comparar contra una lista fija de cadenas de error conocidas, y eso le permite detectar un modo de fallo nuevo que nunca había visto. Es el instinto que desarrolla un SRE con experiencia tras suficientes postmortems —notar que una ráfaga de timeouts en un servicio precede a un fallo en cascada en otro— convertido en algo que lee un log con el mismo cuidado cada vez, sin el cansancio de hacerlo a las 3am por décima vez en el trimestre.
Cómo encaja en un flujo de incidentes
Al ser asíncrono y cobrarse por volumen de líneas, funciona igual de bien disparado automáticamente por una alerta (enviar la última hora de logs en cuanto la tasa de error se dispara) que invocado a mano en medio de un incidente para darle sentido a un volcado recién pegado en un canal. El webhook puede alimentar su herramienta de respuesta a incidentes, convirtiendo el análisis en el primer comentario del ticket antes de que alguien termine de leer la alerta.
Lo que no le va a decir
Saca a la luz lo anormal en los logs; no tiene acceso a su historial de despliegues ni al contexto de negocio, así que un hallazgo como 'la tasa de error de /checkout subió 40 veces a las 14:02' es el punto de partida de su investigación, no la conclusión de la causa raíz. Ese enfoque es intencional: el trabajo de la herramienta es ahorrarle leer cincuenta mil líneas, no reemplazar al ingeniero que sabe qué cambió.
Qué puede hacer con ella
Automatización del triage de incidentes
Analiza automáticamente el pico de logs que dispara una alerta para que el ingeniero de guardia abra el ticket con los hallazgos ya resumidos.
Revisión de logs para postmortems
Procesa los logs de toda la ventana del incidente para construir la línea de tiempo de lo que realmente pasó, no solo lo que se notó en vivo.
Diagnóstico de fallos en pipelines de CI/CD
Analiza automáticamente los logs de un build o despliegue fallido y adjunta la causa probable al job fallido antes de que un ingeniero lo abra.
Monitoreo de sistemas heredados ruidosos
Ejecuta análisis recurrente sobre un flujo de logs demasiado verboso para que las alertas por palabra clave sean útiles por sí solas.
Preguntas frecuentes
¿Qué formatos acepta esta api analizar logs?
Se admiten líneas de log en texto plano, logs en JSON y otros formatos estructurados comunes; envía el texto crudo tal como se produce, sin reformatearlo antes.
¿Cómo decide qué líneas de log importan?
Busca repetición, secuencia y desviación respecto a los patrones normales del propio log en vez de una lista fija de palabras clave, lo que le permite detectar modos de fallo que aún no había visto etiquetados.
¿Hay un plan gratuito para probarla con mis logs?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cómo se cobra el análisis de logs?
$0.003 por solicitud más $0.0135 por cada 1000 líneas analizadas, así que el costo escala de forma predecible con el volumen de logs en vez de una tarifa plana por archivo.
¿Cómo obtengo los resultados del análisis?
La tarea corre de forma asíncrona: el task_id vuelve de inmediato, y los resultados llegan por su webhook firmado o mediante un enlace firmado válido por 24 horas.
¿Puedo enviar volcados de log muy grandes en una sola solicitud?
Sí, el volumen grande es el caso normal en logs de incidentes, y el precio escala linealmente por cada 1000 líneas sin un límite arbitrario de tamaño.
¿Me dice la causa raíz de un incidente?
Saca a la luz los patrones anormales y las firmas de error que vale la pena investigar, lo cual es el punto de partida del análisis de causa raíz, no un sustituto del criterio de ingeniería sobre qué cambió.
¿Puede correr automáticamente cuando se dispara una alerta?
Sí, está pensada para invocarse de forma programática en el momento en que se dispara una alerta, con el webhook entregando los hallazgos directo en su herramienta de incidentes.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/text/log-analyze \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/text/log-analyze", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/log-analyze",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/log-analyze", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/log-analyze", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.log_analyze",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_tokens | 20000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |