Pular para o conteúdo

Logs · Erros · Traces

Logs, erros e traces. Ao vivo, num lugar só.

O Pulsar mostra cada log no navegador assim que ele é gravado, agrupa os erros sozinho e desenha cada requisição como uma cascata entre os seus serviços. Uma linha no seu app Node.js, Next.js, pino ou .NET e é só ver os logs chegando.

Use a nossa nuvem ou rode você mesmo: um processo Node.js e um arquivo SQLite.

  • Plano Free: 50.000 logs por dia
  • Sem cartão de crédito
SDKs para
  • Node.js
  • Next.js
  • pino
  • .NET
ou qualquer cliente HTTP

Produto

Tudo o que a produção está dizendo, numa aba só.

Logs, grupos de erro, traces, dashboards e alertas usam o mesmo modelo de dados, então uma tela leva à outra: o alerta abre o log, o log abre o trace e o trace mostra onde falhou.

Live tail

Um live tail que acompanha o ritmo.

Os logs novos chegam a todo dashboard aberto via Server-Sent Events assim que são gravados, intercalados com os seus deploys. Filtre por nível, serviço e texto, pause, volte no tempo ou escolha um intervalo.

  • Feito para o teclado: / busca, j e k navegam, Enter abre
  • Cada log abre com a requisição, o stack trace, os metadados e as linhas ao redor
  • Marcadores de deploy vindos do CI alinham um pico de erros com a release que o causou
O Live Stream do Pulsar: gráficos de KPI, filtros e linhas de log de vários serviços, cada uma com o seu trace ID O Live Stream do Pulsar: gráficos de KPI, filtros e linhas de log de vários serviços, cada uma com o seu trace ID

Agrupamento de erros

Cem stack traces, um grupo de erro.

Os erros são agrupados por serviço e mensagem normalizada, sem números nem UUIDs, e mostram a contagem, a primeira e a última ocorrência, o stack trace mais recente e as ocorrências recentes. Resolva ou ignore um grupo para fazer a triagem.

  • Os frames do seu código ganham destaque; os de bibliotecas e do Node.js ficam recolhidos
  • Crie alertas para um grupo ou para qualquer texto de erro, como ECONNREFUSED
A página de erros do Pulsar: erros agrupados com os seus serviços e o painel de detalhes de um erro de conexão com o banco A página de erros do Pulsar: erros agrupados com os seus serviços e o painel de detalhes de um erro de conexão com o banco

Traces distribuídos

Siga uma requisição por todos os serviços.

Cada trace tem a sua própria página: o caminho entre serviços, onde falhou, para onde foi o tempo e uma cascata de spans de servidor, de cliente, internos e de fila. Os SDKs continuam o header W3C traceparent, então um checkout que passa por cinco serviços vira um trace só.

Um trace do Pulsar de um checkout que falhou: resumo, caminho entre serviços, onde falhou, para onde foi o tempo e a cascata de spans em cinco serviços Um trace do Pulsar de um checkout que falhou: resumo, caminho entre serviços, onde falhou, para onde foi o tempo e a cascata de spans em cinco serviços
A mesma cascata do trace num celular
  • Onde falhou

    O primeiro erro, o serviço e o instante, a um clique da entrada.

  • Para onde foi o tempo

    O span mais lento e quanto ele pesa no trace. Longos períodos ociosos são comprimidos para o trabalho continuar legível.

  • Feito para compartilhar

    Um link /trace/<id>, busca dentro do trace, filtro só de erros e download em JSON.

Dashboards

Gráficos a partir dos seus próprios campos.

Widgets de número, série temporal e ranking, cada um com o seu filtro: nível, serviço, texto ou qualquer campo dos metadados.

Um dashboard do Pulsar com contagem de requisições, taxa de erro, latência p95, volume de requisições e taxa de erro por serviço Um dashboard do Pulsar com contagem de requisições, taxa de erro, latência p95, volume de requisições e taxa de erro por serviço

Alertas

Alertas que levam direto ao log.

Slack, Discord, ntfy ou qualquer webhook, quando os logs batem um nível, passam de uma contagem numa janela de tempo ou pertencem a um grupo de erro. As regras têm throttle, podem ser testadas pela interface e cada envio fica registrado.

O editor de regras de alerta do Pulsar: uma regra de contagem em janela para erros do checkout-api, enviada a um webhook O editor de regras de alerta do Pulsar: uma regra de contagem em janela para erros do checkout-api, enviada a um webhook

Também vem junto

  • Saúde por serviço: volume, taxa de erro, p95 e p99
  • Paleta de comandos: Ctrl K, ou ⌘K no macOS
  • Temas claro e escuro
  • Telas que funcionam até num celular de 375 px

Instalação

Pronto em três passos.

Sem agente, sem sidecar, sem coletor para manter. Os SDKs agrupam os envios, tentam de novo e nunca travam o seu app.

  1. Instale o SDK

    Um pacote do npm, NuGet no .NET, ou nada, se for de curl.

  2. Adicione uma linha

    Aponte para o Pulsar com a sua API key. Você recebe uma ao criar a conta.

  3. Veja os logs ao vivo

    Abra o Live Stream e veja os logs chegando, cada requisição com o seu trace ID.

Referência completa dos SDKs no npm:

Instalar

shell
npm install @fabbahiense/pulsar-node

Configurar

server.ts
import { Pulsar } from '@fabbahiense/pulsar-node'

Pulsar.init({
  url: process.env.PULSAR_URL!,
  apiKey: process.env.PULSAR_API_KEY!,
  serviceName: 'checkout-api',
  interceptConsole: true,
})

app.use(Pulsar.middleware({ autoLog: true })) // one trace per request

console.log('Order received') // sent with the request's trace ID

Middleware compatível com Express. console.log, console.warn e console.error são capturados com o trace ID da requisição em que rodaram.

Preços

Comece grátis. Faça upgrade quando fizer diferença.

Live tail, grupos de erro, traces e dashboards estão em todos os planos. O Pro aumenta os limites e libera todos os canais de alerta.

Free

Para projetos pessoais e para conhecer o Pulsar

R$ 0/mês

Começar grátis

Todos os recursos, com:

  • 50.000 logs por dia
  • Retenção: 1 dia para info e abaixo, 3 dias para warn e 5 dias para error e fatal
  • 1 regra de alerta, só webhook
  • 1 workspace

Sem cartão de crédito

Para produção

Pro

Para times com sistemas em produção

Sob consulta

Fale com a gente

Tudo do Free, mais:

  • Sem limite diário de logs
  • Retenção de 30 dias em todos os níveis
  • Regras de alerta ilimitadas no Slack, Discord, ntfy e webhook
  • Workspaces ilimitados

Cobrança em reais via Pix: em breve.

Hospedagem

Na nossa nuvem ou no seu servidor. O mesmo Pulsar.

O dashboard, os SDKs e a API são os mesmos onde quer que o Pulsar rode.

Pulsar Cloud

A gente roda para você. Crie a conta, copie a API key e comece a mandar logs: o único pacote que você instala é o SDK.

  • No ar em minutos
  • Plano Free, sem cartão
  • Limites do Pro quando você precisar
Começar grátis

Self-hosted

Um processo Node.js e um arquivo SQLite na sua máquina: sem fila, sem servidor de cache, sem banco externo. Os seus logs não saem da sua rede.

  • Node.js 20 ou mais novo, atrás de um proxy reverso com HTTPS
  • Build pronto para CSP: script-src 'self' funciona sem ajuste
  • Backup com um único comando sqlite3

O self-hosting tem licença à parte.

Fale com a gente

Segurança e confiabilidade

Cuidadoso por padrão.

Quem tem uma chave de ingestão controla o que um log diz, então o Pulsar trata os dados de log como não confiáveis do SDK até a tela.

  • Webhooks protegidos contra SSRF

    Os destinos de alerta precisam ser endereços públicos. Isso é checado ao salvar a regra e de novo na própria conexão, depois da resolução de DNS e a cada redirect, então DNS rebinding não alcança a sua rede.

  • Dados sensíveis mascarados

    Senhas, tokens, API keys, cookies e headers Authorization são mascarados nos headers e corpos capturados, em qualquer profundidade, por todos os middlewares dos SDKs. Acrescente as suas chaves com redactKeys.

  • Isolamento entre workspaces

    Toda consulta é restrita ao workspace da API key ou da sessão, e IDs de outro workspace respondem 404. As API keys são guardadas como hash SHA-256 e exibidas uma única vez.

  • Retries sem perda

    Os SDKs tentam de novo em 429, 5xx e timeouts, com backoff, respeitam o Retry-After e reenviam exatamente o mesmo lote, até 10 vezes por padrão. O servidor deduplica pelo ID de cada entrada, então um retry nunca grava o log duas vezes. Os buffers são limitados e, se algo acabar descartado, isso é contado e avisado, nunca em silêncio.

Dúvidas

Perguntas frequentes.

O que conta no limite diário de logs?

Cada entrada gravada conta uma vez: uma chamada do logger, uma linha de console, uma entrada de requisição ou um objeto JSON. Um lote com 200 entradas são 200 logs. Duplicatas de retry e entradas rejeitadas não contam, e o contador zera às 00:00 UTC.

O que acontece quando o limite do plano Free acaba?

A ingestão responde 429 até o contador zerar, às 00:00 UTC. Os SDKs tentam de novo e depois descartam e avisam o que não conseguiram entregar. O que já foi gravado continua lá.

Preciso mudar o meu código de log?

Normalmente não. Apps Node.js podem continuar usando console.log, o pino ganha um transport, o .NET entra pelo ILogger e qualquer outra coisa pode fazer POST de JSON. O Pulsar entende pino, pino-http e os nomes de campo da maioria dos loggers estruturados.

É OpenTelemetry?

Não. Os SDKs do Pulsar propagam o W3C traceparent, então os traces atravessam os seus serviços e a decisão de amostragem de quem veio antes é repassada intacta, mas o Pulsar não recebe dados OTLP.

Onde ficam os meus dados, e por quanto tempo?

No Pulsar Cloud, nos nossos servidores, pelo tempo de retenção do seu plano (até 5 dias no Free, 30 dias no Pro); depois disso, um job diário apaga. No self-hosted, num arquivo SQLite no seu próprio servidor.

Como funciona a cobrança?

O plano Free não pede cartão. Para o Pro, fale com a gente. A cobrança em reais via Pix chega em breve.

Os SDKs são open source?

Sim, com licença MIT. Os SDKs de JavaScript estão no npm; os pacotes .NET são compilados e testados no CI, mas ainda não estão no nuget.org. O servidor do Pulsar é proprietário.

Posso rodar o Pulsar no meu servidor?

Pode: Node.js 20 ou mais novo, um arquivo SQLite e um proxy reverso com HTTPS, sem mais nenhuma infraestrutura. O self-hosting tem licença à parte; fale com a gente.

Seu próximo incidente, já rastreado.

Crie um workspace, copie a API key e mande o primeiro log. Leva uns dois minutos.