Sentry 兼容的日志与事件网关,
写入 P95 稳定在 2ms 内。

Go + Gin + NSQ + TimescaleDB 构建。现有 Sentry SDK 不用换库,改一行 DSN 即可接入;结构化日志支持批量与 gzip,检索、漏斗、留存、告警开箱自带。

$git clone https://github.com/aak1247/logtap.git
上报协议,全部走同一个网关地址
  • /store/ /envelope/Sentry 错误与异常
  • /logs/结构化日志,批量 + gzip
  • /track/事件埋点,漏斗与留存
  • /logs/search全文检索与时序聚合
写入 P95(120 并发内)
1.7 ~ 1.9 ms
单节点实测峰值
11,200 EPS
数据来自 docs/perf 单节点压测(32C64G,PostgreSQL 16 + TimescaleDB + NSQ 同机)。

上报请求长什么样

选一个端点发送模拟请求,看网关怎么应答。延迟数值是演示数据,真实压测在下面的基准板块。

POST
{
  "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 EPS100,000 ~ 300,000+ EPS15倍 吞吐扩展
写入 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 同机部署

拐点测试:并发在 10 ~ 120 VU 时,P95 始终稳定在 2ms 内
10 VU 并发
467 EPS
P95:1.8ms
20 VU 并发
933 EPS
P95:1.9ms
40 VU 并发
1867 EPS
P95:1.9ms
80 VU 并发
3733 EPS
P95:1.8ms
120 VU 并发
5600 EPS
P95:1.7ms
160 VU 并发拐点
7463 EPS
P95:163.9ms

错误、日志、埋点、告警,一个网关收口

不用再分别维护 Sentry、日志系统和埋点服务。同一套项目与密钥体系,同一个存储。

Sentry SDK 原生兼容

现有 Sentry SDK 不换库,DSN 指到 logtap 就能收。store 与 envelope 两个路径按 Sentry 协议实现,异常堆栈、面包屑、标签原样入库,历史数据可以用迁移工具从 Sentry 导入。

POST /api/:projectId/store/  POST /api/:projectId/envelope/

结构化日志

单条对象或 JSON 数组批量上报,支持 gzip。关键词检索走 pg_trgm 三元组索引,列表查询走时间倒序索引。

POST /api/:projectId/logs/

事件分析与漏斗

埋点上报后,控制台直接出 DAU/MAU、事件 Top、属性分布、留存队列和自定义漏斗,不需要再导出到 BI。

POST /api/:projectId/track/

告警与巡检

日志和指标规则命中后投递 Webhook、邮件或短信(阿里云/腾讯云)。另带 HTTP/TCP 探测器做主动拨测。

GeoIP 分布

可选启用 GeoLite2,把上报 IP 解析到国家、城市与 ASN,来源分布和异常地域直接可查。

请求进来之后发生什么

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

Sentry SDK / HTTP
客户端上报

SDK 或 cURL 发起 POST,单条与批量都收,批量可带 gzip 压缩。

Go + Gin
网关校验入队

只做反序列化、鉴权和 NSQ 投递,不碰数据库,所以响应延迟稳定。

NSQ
队列削峰

事件与日志分 topic 走不同 channel,数据库抖动不影响上报端。

Consumer Workers
批量落库

消费者按 500 条或 20ms 攒批写入 TimescaleDB,吞吐换 IO 效率。

Go + Gin + NSQ + TimescaleDB / ClickHouse + Redis|网关编译为静态二进制跑在 Alpine 底座上,没有解释器运行时。

接入代码

Sentry SDK 改一行 DSN;其余语言直接 POST JSON。Go 与 JS SDK 在仓库 sdks/ 目录。

标准 HTTP JSON 批量上报,支持通过 gzip 压缩网络开销
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。

terminal
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。

FAQ

关于 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 数据库,无外部查询依赖。