概览#
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 隔开:网关无状态可横向扩展,下游慢查询拖不垮上报链路。
- 客户端上报 — Sentry SDK 或任意 HTTP 客户端发起 POST,单条与批量都收,批量可带 gzip
- 网关校验入队 — Go + Gin 网关只做反序列化、鉴权和 NSQ 投递,不碰数据库,响应延迟稳定
- 队列削峰 — 事件与日志分 topic 走不同 channel,数据库抖动不影响上报端
- 批量落库 — 消费者按 500 条或 20ms 攒批写入 TimescaleDB,吞吐换 IO 效率
两种存储引擎,按量级选#
| 维度 | 开源版(PostgreSQL / TimescaleDB) | 企业版 / 云端版(ClickHouse 引擎) |
|---|---|---|
| 接入峰值 EPS | 10,000 ~ 20,000 | 100,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 s | 0.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。