Sentry 兼容的日志与事件网关,
写入 P95 稳定在 2ms 内。
Go + Gin + NSQ + TimescaleDB 构建。现有 Sentry SDK 不用换库,改一行 DSN 即可接入;结构化日志支持批量与 gzip,检索、漏斗、留存、告警开箱自带。
- /store/ /envelope/Sentry 错误与异常
- /logs/结构化日志,批量 + gzip
- /track/事件埋点,漏斗与留存
- /logs/search全文检索与时序聚合
上报请求长什么样
选一个端点发送模拟请求,看网关怎么应答。延迟数值是演示数据,真实压测在下面的基准板块。
{
"level": "info",
"message": "payment.gateway.captured",
"fields": {
"provider": "stripe",
"amount": 4900,
"latency_ms": 32.1
}
}两种存储引擎,按量级选
开源版用 PostgreSQL/TimescaleDB,单机起家零额外运维;企业版/云端版换 ClickHouse 列存,为高吞吐和低成本长周期存储设计。两边 API 和控制台一致,量级上来了再迁。
| 指标维度 | 开源版 (PostgreSQL / TimescaleDB) | 企业版 / 云端版 (ClickHouse 引擎) | 技术优势 |
|---|---|---|---|
| 接入峰值 EPS (Events Per Second) 开源版满足单机/中小型团队;企业版支撑千万级海量日志流 | 10,000 ~ 20,000 EPS | 100,000 ~ 300,000+ EPS | 15倍 吞吐扩展 |
| 写入 P95 延迟 HTTP 网关由 NSQ 内存缓冲与批量协程接管,上报零阻塞 | 1.7ms ~ 1.9ms (120 VU 内恒定) | < 1.5ms (分布式并行接入) | 极致亚毫秒级响应 |
| 存储压缩比 长周期日志冷热分层与海量压缩 | 1 : 1.5 ~ 1 : 2 (PG B树与行存) | 1 : 5 ~ 1 : 10 (ClickHouse 列存 LZ4/ZSTD) | 节省 70% ~ 85% 存储成本 |
| 亿级多维分析与过滤耗时 涵盖事件聚合、留存分析与漏斗转化 | 3s ~ 10s (单核扫描与复合索引) | 0.1s ~ 0.5s (向量化计算引擎) | 毫秒级实时计算 |
| 运维复杂度与依赖 支持 Docker Compose 一键启动 | 极简 (Postgres/Timescale + Redis + NSQ) | 分布式 (ClickHouse 集群 + 分布式队列) | 开箱即用 vs 海量横向扩展 |
开源版单节点实测压测数据
测试环境:单节点 32核 64G 服务器,网关 + PostgreSQL 16 + Redis 7 + NSQd 同机部署
错误、日志、埋点、告警,一个网关收口
不用再分别维护 Sentry、日志系统和埋点服务。同一套项目与密钥体系,同一个存储。
Sentry SDK 原生兼容
现有 Sentry SDK 不换库,DSN 指到 logtap 就能收。store 与 envelope 两个路径按 Sentry 协议实现,异常堆栈、面包屑、标签原样入库,历史数据可以用迁移工具从 Sentry 导入。
结构化日志
单条对象或 JSON 数组批量上报,支持 gzip。关键词检索走 pg_trgm 三元组索引,列表查询走时间倒序索引。
事件分析与漏斗
埋点上报后,控制台直接出 DAU/MAU、事件 Top、属性分布、留存队列和自定义漏斗,不需要再导出到 BI。
告警与巡检
日志和指标规则命中后投递 Webhook、邮件或短信(阿里云/腾讯云)。另带 HTTP/TCP 探测器做主动拨测。
GeoIP 分布
可选启用 GeoLite2,把上报 IP 解析到国家、城市与 ASN,来源分布和异常地域直接可查。
请求进来之后发生什么
写入和落库被 NSQ 隔开:网关无状态可横向扩,下游慢查询拖不垮上报链路。
SDK 或 cURL 发起 POST,单条与批量都收,批量可带 gzip 压缩。
只做反序列化、鉴权和 NSQ 投递,不碰数据库,所以响应延迟稳定。
事件与日志分 topic 走不同 channel,数据库抖动不影响上报端。
消费者按 500 条或 20ms 攒批写入 TimescaleDB,吞吐换 IO 效率。
接入代码
Sentry SDK 改一行 DSN;其余语言直接 POST JSON。Go 与 JS SDK 在仓库 sdks/ 目录。
curl -X POST "https://logtap.autotask.run/api/1/logs/" \
-H "Content-Type: application/json" \
-H "X-Project-Key: pk_live_sample7718" \
-d '[
{
"level": "info",
"message": "payment.settlement.succeeded",
"fields": {
"order_id": "ord_992144",
"amount": 29900,
"currency": "USD",
"duration_ms": 14.2
}
}
]'三条命令跑起来
全部组件容器化,不需要手工装数据库和队列。启动后打开 logtap.autotask.run 即可使用;本地部署则访问 localhost:8080。
git clone https://github.com/aak1247/logtap.git cd logtap/deploy # 生成 AUTH_SECRET(base64,解码后 >= 32 字节) bash ../scripts/gen-auth-secret.sh # 启动,自带 Postgres/TimescaleDB、Redis、NSQ docker compose up -d
生产环境建议设置 POSTGRES_URL 与独立的告警 worker,完整配置见仓库 .env.example 与 docs/DEPLOYMENT.md。
关于 LogTap 的常见问题
迁移成本、性能指标、开源协议与部署方式的快速解答。
LogTap 是什么?
LogTap 是一个采用 MIT 协议开源的高吞吐可观测性数据网关,集异常监控(Sentry 协议兼容)、结构化日志采集、事件埋点与漏斗留存分析、多通道告警于一体。基于 Go + NSQ + TimescaleDB / ClickHouse 构建,支持 Docker Compose 一键私有化部署。
业务已接入 Sentry,迁移到 LogTap 需要改代码吗?
不需要。LogTap 原生兼容 Sentry Store 与 Envelope 上报协议,@sentry/browser、@sentry/node 等 SDK 零改动,只需把 DSN 中的主机地址替换为 LogTap 网关即可完成切换,完整的异常堆栈与上下文信息全部保留。
LogTap 开源版与企业版有什么区别?
开源版基于 PostgreSQL / TimescaleDB,单节点即可支撑 10,000+ EPS,主打零额外运维、开箱即用;企业版与云端版基于 ClickHouse 列存引擎,吞吐可达 100,000 ~ 300,000+ EPS,存储压缩比 1:5 ~ 1:10,亿级数据多维分析 0.1 ~ 0.5 秒返回,适合海量日志与长周期低成本存储场景。
LogTap 的写入性能如何?
官方单节点实测环境(32 核 64G,网关与 PostgreSQL 16、Redis 7、NSQd 同机部署):10 ~ 120 并发下 P95 写入延迟稳定在 1.7 ~ 1.9ms,5,600 EPS 以上吞吐,峰值可达 11,200 EPS。HTTP 网关经 NSQ 异步解耦,即使数据库出现慢查询,客户端上报也不会被阻塞。
如何快速部署 LogTap?
三步即可:git clone 仓库;运行 task auth:secret 生成鉴权密钥;在 deploy 目录执行 docker compose up -d --build。镜像自带 PostgreSQL、TimescaleDB、Redis 与 NSQ 全套依赖,约 1 分钟即可在本地或生产环境就绪。
LogTap 支持哪些告警通知渠道?
内置 HTTP / TCP 健康巡检探测器,告警支持企业微信、钉钉、飞书 Webhook、邮件 SMTP 以及阿里云、腾讯云短信等触达通道,并提供智能去重与降噪抑制,避免告警风暴。
LogTap 是免费开源的吗?采用什么协议?
开源版完全免费,采用 MIT 协议,可自由用于商业项目,代码托管于 GitHub(github.com/aak1247/logtap)。面向海量吞吐场景的企业版与云端版单独提供。
数据会经过第三方吗?支持私有化部署吗?
支持完全私有化。所有数据直接落入你自有的 PostgreSQL / TimescaleDB / ClickHouse 存储,全程不经过任何第三方服务;GeoIP 解析使用构建时离线打包的 MaxMind GeoLite2 数据库,无外部查询依赖。