Log gigante, erro escondido
Analisa trechos de log — de aplicação, servidor web, banco, cron — e devolve o que interessa: os erros agrupados por tipo, a linha do tempo do incidente, correlações entre eventos e uma hipótese de causa. Feito para o dev que precisa entender o log de madrugada, não admirá-lo.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Ler log na unha não escala
O incidente aconteceu, o log tem 40.000 linhas e a resposta está em oito delas. Grep ajuda quando você já sabe o que procurar; o problema é o erro novo, o padrão que só aparece quando três eventos se cruzam. A análise automática faz a primeira leitura completa: separa ruído de sinal, agrupa ocorrências repetidas (“este timeout aparece 312 vezes, sempre após o mesmo endpoint”) e monta a sequência do incidente em ordem de causa e efeito provável.
O que mandar e o que volta
Envie o trecho de log em texto puro — access log do nginx, stderr da aplicação, saída de journalctl, log de job — de preferência cobrindo o período do problema com alguma folga antes. O retorno traz o inventário de erros com frequência, os padrões temporais (rajadas, periodicidade suspeita de cron), a correlação entre entradas e a causa provável com o raciocínio explícito. Hipótese é hipótese: vem com o porquê, para você validar em segundos em vez de confiar às cegas.
Custo por mil linhas
A cobrança é por volume analisado: US$ 0,0135 a cada 1.000 linhas de log, mais US$ 0,003 por chamada. O post-mortem de um incidente com 20.000 linhas custa cerca de US$ 0,27 — menos que o café da reunião de retrospectiva. Como está em beta, o formato da resposta ainda pode ganhar campos; a análise em si e o preço publicado já valem em produção.
Antes de enviar: limpe segredos
Log carrega mais dado sensível do que parece: tokens em URLs, e-mails de usuários, IPs. Passe um filtro antes de enviar — mascarar token e e-mail resolve a maior parte — e mande apenas o intervalo relevante. O material enviado é usado para gerar a sua análise e nada mais, mas o princípio de minimização vale para qualquer serviço externo, o nosso incluído. Seu DPO assina embaixo.
Casos de uso
Site fora do ar às 3 da manhã
O e-commerce caiu de madrugada e voltou sozinho. Antes do horário comercial, o dev manda as 15.000 linhas da janela do incidente e recebe a sequência: pico de requisições de um único IP, esgotamento de conexões do banco, cascata de timeouts. A reunião das 9 h já começa com a causa provável na mesa.
Erro intermitente que ninguém reproduz
Um sistema da TecnoSul Soluções Digitais falha “de vez em quando”, e ninguém acha o padrão. A análise de uma semana de logs mostra que o erro ocorre sempre 40 minutos após o backup — a correlação que nenhum grep encontraria, porque ninguém pensou em procurá-la.
Agência auditando site de cliente
Uma agência de Belo Horizonte assume a manutenção de um site problemático. Antes de orçar, roda os logs do último mês pela API: o relatório de erros agrupados vira diagnóstico técnico apresentável ao cliente — e prova de que o problema vem de longe.
Job noturno que falha em silêncio
O cron de integração com o ERP falha duas vezes por semana sem alarde. Juliana Nascimento, responsável pelo sistema, agenda uma análise semanal do log do job; o resumo chega apontando as falhas, a hora e o padrão — antes que o financeiro perceba a divergência.
Perguntas frequentes
Que formatos de log ele entende?
Texto é texto: nginx e Apache, logs de aplicação (PHP, Node, Python, Java), journalctl, saída de contêiner, logs de banco. Formato exótico da casa também funciona — se um humano consegue ler com esforço, a análise consegue com menos.
Como conta o preço por 1.000 linhas?
Pelo volume enviado na chamada: 8.000 linhas são 8 unidades de US$ 0,0135, mais US$ 0,003 da chamada — US$ 0,111 no total. Sem assinatura de plataforma de observabilidade: você paga a análise que pedir, quando pedir.
Isso substitui minha stack de monitoramento?
Não, e nem tenta: monitoramento coleta e alerta em tempo real; esta análise interpreta um trecho quando você precisa de entendimento — incidente, auditoria, post-mortem. Times com stack completa usam para a leitura profunda; times sem stack nenhuma, como primeiro passo acessível.
A causa apontada é confiável?
É uma hipótese fundamentada, com o raciocínio e as linhas que a sustentam — trate como a opinião de um colega experiente que leu tudo, não como veredito. A validação final é sua; a economia está em pular as horas de leitura, não o julgamento.
Posso automatizar a análise após cada deploy?
Pode: uma chamada no fim do pipeline com o log da primeira meia hora pós-deploy devolve um veredito rápido de regressão. Em beta, recomendamos tratar o retorno de forma tolerante a mudanças de formato — os campos ainda podem evoluir.
Logs enviados ficam retidos?
O trecho enviado serve para produzir a análise que você retira pelo identificador da tarefa — esse é o ciclo. Não construímos histórico dos seus sistemas nem reutilizamos o material; ainda assim, mascare segredos antes de enviar, como manda a boa prática.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"text": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.log_analyze",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_tokens | 20000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |