部署指南#
本文覆盖两种部署方式:本地/测试用 Docker Compose 一键启动;服务器/生产可以无 Docker(systemd)或自定义容器化部署。
依赖组件#
- PostgreSQL / TimescaleDB(事件与日志存储)
- NSQ(异步写库与削峰)
- (可选)Redis(部分指标/缓存能力,按项目配置而定)
方式一:Docker Compose#
git clone https://github.com/aak1247/logtap.git
cd logtap/deploy
bash ../scripts/gen-auth-secret.sh # 生成 AUTH_SECRET
docker compose up -dCompose 已包含 TimescaleDB、Redis、NSQ(lookupd/nsqd/admin)与 logtap 网关。GeoIP 可选启用:设置 MAXMIND_LICENSE_KEY 后,mmdb 自动下载并缓存到 volume /data/geoip/;若 mmdb 已存在且未显式配置 GEOIP_CITY_MMDB / GEOIP_ASN_MMDB,启动脚本会自动使用 /data/geoip/GeoLite2-City.mmdb 与 /data/geoip/GeoLite2-ASN.mmdb。
方式二:无 Docker(服务器/生产)#
构建网关#
需要 Go 1.22+:
go build -o gateway ./cmd/gateway把 gateway 上传到服务器(例如 /opt/logtap/gateway)。
最小环境变量#
环境变量参考仓库 .env.example,常用项:
| 变量 | 说明 |
|---|---|
HTTP_ADDR | HTTP 监听地址,例如 :8080 |
NSQD_ADDRESS | NSQ 地址,例如 127.0.0.1:4150 |
RUN_CONSUMERS | 是否启动消费者写库(生产通常 true) |
POSTGRES_URL | RUN_CONSUMERS=true 时必填,例如 postgres://logtap:[email protected]:5432/logtap?sslmode=disable |
AUTH_SECRET | 开启登录与上报鉴权(推荐) |
网关启动时使用 GORM AutoMigrate 自动建表/建索引。
systemd(可选模板)#
模板在 deploy/systemd/:
logtap-gateway.service— 网关nsqd.service— NSQlogtap-alert-worker.service— 可选:独立告警投递 worker
建议做法:创建 /opt/logtap/ 目录,把二进制与 .env 放到固定目录,然后 systemctl enable --now logtap-gateway。
告警投递 worker:若不启用 RUN_ALERT_WORKER=true(网关内嵌 worker),可用独立进程 alert-worker 消费 alert_deliveries,环境变量示例见 deploy/alert-worker.env.example。
控制台(Web)#
控制台是独立前端(web/,Vite + React + Tailwind),生产构建产物在 web/dist/,用 Nginx/静态托管部署:
cd web
npm install
npm run build生产建议用 Nginx/Traefik 提供 HTTPS,并把 /api/ 反代到网关。
生产建议#
- 反向代理:Nginx/Traefik 提供 HTTPS,
/api/反代到网关 - 数据持久化:Postgres 数据盘、NSQ 目录与日志保留策略提前规划
- 资源隔离:消费者写库与网关可拆开部署(不同进程/不同实例),数据库慢查询不影响上报
- 告警 worker:大流量下用独立
alert-worker进程投递,避免与网关争资源