概览#

LogTap 是一个采用 MIT 协议开源的高吞吐可观测性数据网关(Go + Gin + NSQ + TimescaleDB/Postgres),把异常监控、结构化日志、事件埋点与多通道告警收口到同一个服务,并提供 React 控制台用于查询与分析。

你能用它做什么#

  • 异常监控:原生兼容 Sentry 的 store / envelope 上报协议,现有 Sentry SDK 不换库,改一行 DSN 即可接入
  • 结构化日志:统一 HTTP 接口批量上报(单条对象或 JSON 数组),支持 gzip;关键词检索走 pg_trgm 三元组索引,列表查询走时间倒序索引
  • 事件分析:/track/ 埋点上报后,控制台直接出 DAU/MAU、事件 Top、属性分布、留存队列和自定义漏斗
  • 健康巡检与告警:内置 HTTP/TCP 主动拨测;告警支持企业微信、钉钉、飞书 Webhook、邮件 SMTP 与阿里云/腾讯云短信,带去重与降噪
  • GeoIP 解析:离线打包 MaxMind GeoLite2,把上报 IP 解析到国家、城市与 ASN,无外部查询依赖

架构一览#

写入和落库被 NSQ 隔开:网关无状态可横向扩展,下游慢查询拖不垮上报链路。

  1. 客户端上报 — Sentry SDK 或任意 HTTP 客户端发起 POST,单条与批量都收,批量可带 gzip
  2. 网关校验入队 — Go + Gin 网关只做反序列化、鉴权和 NSQ 投递,不碰数据库,响应延迟稳定
  3. 队列削峰 — 事件与日志分 topic 走不同 channel,数据库抖动不影响上报端
  4. 批量落库 — 消费者按 500 条或 20ms 攒批写入 TimescaleDB,吞吐换 IO 效率

两种存储引擎,按量级选#

维度开源版(PostgreSQL / TimescaleDB)企业版 / 云端版(ClickHouse 引擎)
接入峰值 EPS10,000 ~ 20,000100,000 ~ 300,000+
写入 P95 延迟1.7 ~ 1.9 ms(120 VU 内恒定)< 1.5 ms(分布式并行接入)
存储压缩比1 : 1.5 ~ 1 : 2(行存 B 树)1 : 5 ~ 1 : 10(列存 LZ4/ZSTD)
亿级多维分析3 ~ 10 s0.1 ~ 0.5 s(向量化引擎)
运维复杂度极简(Postgres + Redis + NSQ)分布式(ClickHouse 集群)

两边 API 和控制台一致,量级上来了再迁移。官方单节点实测(32 核 64G 同机部署):10 ~ 120 并发下 P95 写入延迟稳定在 1.7 ~ 1.9 ms,5,600+ EPS,峰值 11,200 EPS。

下一步#