首页
/ 使用Docker Compose部署uptrace/bun的OpenTelemetry监控系统

使用Docker Compose部署uptrace/bun的OpenTelemetry监控系统

2025-07-08 08:30:49作者:邓越浪Henry

概述

uptrace/bun是一个高性能的Go语言ORM库,同时也提供了强大的监控和追踪功能。本文将详细介绍如何使用Docker Compose部署一个完整的uptrace监控系统,包含OpenTelemetry数据收集、存储和可视化组件。

系统架构

这个Docker Compose配置定义了一个完整的监控系统,包含以下核心组件:

  1. ClickHouse - 高性能列式数据库,用于存储监控和追踪数据
  2. PostgreSQL - 关系型数据库,用于存储系统元数据
  3. Uptrace - 监控和追踪数据可视化界面
  4. OpenTelemetry Collector - 数据收集和处理管道
  5. Vector - 高性能日志和指标处理器
  6. 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

这种配置确保服务完全启动后,依赖它们的服务才会启动。

部署建议

  1. 配置文件准备:确保uptrace.ymlotel-collector.yaml配置文件已准备就绪
  2. 资源分配:根据数据量调整ClickHouse和PostgreSQL的资源限制
  3. 网络配置:考虑使用自定义网络提高安全性
  4. 版本控制:建议锁定所有镜像版本,避免自动升级导致兼容性问题

总结

这个Docker Compose配置提供了一个完整的uptrace监控系统部署方案,包含了从数据收集、存储到可视化的全流程组件。通过合理的服务编排和健康检查机制,可以确保系统稳定运行。对于生产环境,建议根据实际需求调整资源配置和安全设置。