Arquitectura y transparencia

Cómo está construido LogPulse

La confianza empieza por saber qué hay bajo el capó. Aquí está el stack que ejecuta tus logs, las decisiones que tomamos y hacia dónde vamos. Preferimos compartir de más antes que prometer de más.

El stack de un vistazo

Componentes aburridos y bien conocidos. Sin magia.

Ingesta

Fastify sobre Node 22

GCP · Ámsterdam (NL)

OTLP HTTP más un endpoint JSON genérico. Autenticación Bearer con claves de API hasheadas con bcrypt. Con limitación de tasa por clave.

Cola

BullMQ sobre Redis

GCP · Ámsterdam (NL)

Agrupa 100-1000 registros antes de cada inserción. Reintenta ante fallos transitorios de ClickHouse.

Almacenamiento de logs

ClickHouse Cloud

GCP · Ámsterdam (NL)

Columnar, particionado por tenant_id y fecha. La clave de orden (tenant_id, namespace, timestamp, log_id) hace que las consultas por tenant impacten primero en las particiones correctas. Compresión típica de 8-12× en logs de texto.

Metadatos

PostgreSQL vía Drizzle ORM

GCP · Ámsterdam (NL)

Usuarios, organizaciones, claves de API, dashboards, alertas, pipelines. Aquí no se almacena contenido de logs.

Frontend

React 19 + Vite

Cloudflare Pages

TanStack Query para el estado del servidor, Zustand para el estado de la UI, Tailwind + shadcn/ui. TypeScript estricto en todas partes.

IA

Anthropic Claude

Subencargado con sede en EE. UU.

Impulsa la traducción de lenguaje natural → LPQL y el AI Investigator. Listado en nuestros subencargados. Los logs solo fluyen al LLM cuando activas una consulta de IA.

Cómo se mueven los datos

De tus aplicaciones a ClickHouse y de vuelta a ti.

  Your apps  ──OTLP HTTP──▶  Fastify ingest  ──▶  BullMQ (Redis)
                                  │                       │
                              auth + quota              batch
                                  │                       ▼
                                  │             ClickHouse (GCP · Amsterdam)
                                  │                       │
                                  ▼                       │
                              PostgreSQL                  │
                              (metadata)                  │
                                                          ▼
  Web UI  ◀── LPQL / AI ──  Fastify query  ──▶  ClickHouse (tenant-scoped)

Ingesta basada en push: los agentes y los SDK envían logs a través de OTLP HTTP. La API autentica y encola; un worker agrupa y escribe en ClickHouse. Las consultas fluyen en la otra dirección: la UI llama a la API, la API ejecuta LPQL en ClickHouse con el alcance por tenant aplicado en la frontera.

Multitenencia y aislamiento

Separación aplicada en la base de datos, no solo en la aplicación.

  • Los tenants Free, Pro y Business comparten una tabla de ClickHouse particionada por tenant_id + fecha. Los clientes Enterprise obtienen un stack totalmente dedicado: ingesta, cómputo y almacenamiento aislados.
  • Cada consulta lleva WHERE tenant_id = '…', aplicado en la frontera de la API, parametrizado, nunca concatenado como cadena. La poda de particiones significa que los datos de otros tenants no se escanean.
  • Las claves de API se hashean con bcrypt en PostgreSQL; las claves en bruto se muestran una vez al crearlas y nunca se registran.
  • El RBAC de namespace acota el acceso a los logs por equipo, de modo que los equipos de Platform Engineering pueden dar autoservicio a los desarrolladores sin exponer otros namespaces.

Retención y coste

El precio fijo significa que no pagas de más cuando registras más de lo que previste.

  • Retención según el plan: Free 7d, Starter 14d, Pro 30d. Los planes Team y Platform tienen retención configurable con gestión automatizada del ciclo de vida.
  • Precio de tarifa plana: la ingesta diaria está incluida hasta tu cuota. Sin cargos por GB, sin facturas sorpresa por exceso.
  • La compresión columnar de ClickHouse suele alcanzar 8-12× en logs de texto, por lo que podemos ofrecer precios fijos sin sacrificar el margen.
  • Cuando alcanzas tu cuota recibes un 429 y un correo al 80%. Preferimos que mejores tu plan de forma deliberada antes que cobrarte por el exceso de forma silenciosa.

IA: un atajo, no una caja negra

Se muestra cada consulta que ejecuta la IA. Puedes verificarla, editarla y guardarla.

  • Las preguntas en lenguaje natural son traducidas a LPQL por un LLM (Anthropic Claude). El LLM está listado en nuestros subencargados y solo ve datos cuando activas una consulta de IA.
  • El AI Investigator encadena consultas: busca, correlaciona con despliegues, compara con la línea base. Cada paso se muestra en el chat con el LPQL que ejecutó y las líneas de log que devolvió.
  • Las hipótesis se plantean como 'causa raíz probable' con evidencias, no como afirmaciones. Verificas antes de actuar.
  • La inferencia se ejecuta en Claude a través de Amazon Bedrock en eu-north-1, así que el procesamiento de IA permanece en la UE. Además, las funciones de IA se pueden desactivar por organización.
Honestos, no exagerados

Dónde estamos frente a hacia dónde vamos

Preferimos ser honestos sobre lo que está construido y lo que aún está en curso.

RGPD

Conforme de forma predeterminada

DPA + SCC disponibles en los planes de pago. Ruta de datos exclusivamente en la UE. Cifrado en reposo y en tránsito.

SOC 2 Type II

En curso · T3 2026

Controles de los Trust Services Criteria implementados. Auditoría en marcha.

ISO 27001

En seguimiento

Controles alineados; aún no certificado.

Página pública de disponibilidad

En vivo

status.logpulse.io: comprobado cada minuto desde fuera de nuestra plataforma, con 30 días de historial por componente.

Benchmarks públicos

Planificado

Publicaciones reproducibles de rendimiento de ingesta y latencia de consulta.

¿Detectaste una laguna o quieres profundizar más?

Preferimos compartir de más antes que prometer de más. Escribe a security@logpulse.io con preguntas sobre el stack, el aislamiento o cualquier cosa que no hayamos cubierto aquí.