使用Docker Compose部署uptrace/bun的OpenTelemetry监控系统
2025-07-08 08:30:49作者:邓越浪Henry
概述
uptrace/bun是一个高性能的Go语言ORM库,同时也提供了强大的监控和追踪功能。本文将详细介绍如何使用Docker Compose部署一个完整的uptrace监控系统,包含OpenTelemetry数据收集、存储和可视化组件。
系统架构
这个Docker Compose配置定义了一个完整的监控系统,包含以下核心组件:
- ClickHouse - 高性能列式数据库,用于存储监控和追踪数据
- PostgreSQL - 关系型数据库,用于存储系统元数据
- Uptrace - 监控和追踪数据可视化界面
- OpenTelemetry Collector - 数据收集和处理管道
- Vector - 高性能日志和指标处理器
- Mailpit - 邮件测试服务器
详细配置解析
ClickHouse服务配置
clickhouse:
image: clickhouse/clickhouse-server:24.5
environment:
CLICKHOUSE_DB: uptrace
volumes:
- ch_data2:/var/lib/clickhouse
ports:
- '8123:8123'
- '9000:9000'
ClickHouse作为uptrace的主要数据存储,配置要点:
- 使用24.5版本的ClickHouse服务器镜像
- 创建名为
uptrace
的默认数据库 - 通过卷挂载持久化存储数据
- 暴露8123(HTTP)和9000(Native)端口
PostgreSQL服务配置
postgres:
image: postgres:15-alpine
environment:
POSTGRES_USER: uptrace
POSTGRES_PASSWORD: uptrace
POSTGRES_DB: uptrace
volumes:
- 'pg_data5:/var/lib/postgresql/data/pgdata'
ports:
- '5432:5432'
PostgreSQL用于存储系统元数据,配置要点:
- 使用轻量级的15-alpine版本
- 预配置用户、密码和数据库名均为
uptrace
- 数据通过卷持久化存储
- 暴露标准5432端口
Uptrace服务配置
uptrace:
image: 'uptrace/uptrace:1.7.0'
volumes:
- ./uptrace.yml:/etc/uptrace/uptrace.yml
ports:
- '14317:14317'
- '14318:14318'
Uptrace是监控系统的核心,配置要点:
- 使用1.7.0稳定版本
- 挂载自定义配置文件
uptrace.yml
- 暴露14317(HTTP)和14318(gRPC)端口
- 依赖ClickHouse服务健康状态
OpenTelemetry Collector配置
otelcol:
image: otel/opentelemetry-collector-contrib:0.95.0
volumes:
- ./config/otel-collector.yaml:/etc/otelcol-contrib/config.yaml
ports:
- '4317:4317'
- '4318:4318'
OpenTelemetry Collector负责接收、处理和导出遥测数据:
- 使用包含contrib扩展的0.95.0版本
- 挂载自定义配置文件
- 暴露4317(gRPC)和4318(HTTP)端口
Vector日志处理器
vector:
image: timberio/vector:0.28.X-alpine
volumes:
- ./config/vector.toml:/etc/vector/vector.toml:ro
Vector用于高效处理日志数据:
- 使用0.28.X的轻量级Alpine版本
- 挂载自定义TOML格式配置文件
Mailpit邮件测试服务
mailpit:
image: axllent/mailpit
ports:
- 1025:1025
- 8025:8025
volumes:
- mailpit_data:/data
Mailpit提供邮件测试功能:
- 暴露1025(SMTP)和8025(HTTP)端口
- 持久化存储邮件数据
持久化存储配置
volumes:
ch_data2:
pg_data5:
mailpit_data:
定义三个命名卷用于持久化存储:
- ch_data2: ClickHouse数据
- pg_data5: PostgreSQL数据
- mailpit_data: Mailpit邮件数据
健康检查机制
ClickHouse和PostgreSQL都配置了健康检查:
healthcheck:
test: ['CMD', 'wget', '--spider', '-q', 'localhost:8123/ping']
interval: 1s
timeout: 1s
retries: 30
这种配置确保服务完全启动后,依赖它们的服务才会启动。
部署建议
- 配置文件准备:确保
uptrace.yml
和otel-collector.yaml
配置文件已准备就绪 - 资源分配:根据数据量调整ClickHouse和PostgreSQL的资源限制
- 网络配置:考虑使用自定义网络提高安全性
- 版本控制:建议锁定所有镜像版本,避免自动升级导致兼容性问题
总结
这个Docker Compose配置提供了一个完整的uptrace监控系统部署方案,包含了从数据收集、存储到可视化的全流程组件。通过合理的服务编排和健康检查机制,可以确保系统稳定运行。对于生产环境,建议根据实际需求调整资源配置和安全设置。