首页
/ OneUptime项目Docker Compose部署架构解析

OneUptime项目Docker Compose部署架构解析

2025-07-07 08:04:34作者:姚月梅Lane

项目概述

OneUptime是一个开源的监控和状态页面解决方案,其Docker Compose配置文件展示了项目的微服务架构设计。通过分析这个docker-compose.yml文件,我们可以深入了解OneUptime的系统架构和组件交互方式。

核心服务组件

基础服务层

  1. 数据库服务

    • Redis:作为高性能的内存数据库,用于缓存和临时数据存储
    • ClickHouse:列式数据库,适合处理监控数据和分析查询
    • PostgreSQL:关系型数据库,存储核心业务数据
  2. 邮件服务

    • Haraka:轻量级SMTP服务器,处理系统邮件发送
  3. 监控数据收集

    • OpenTelemetry Collector:统一收集和转发遥测数据
    • Fluent Ingestion:日志数据收集处理

应用服务层

  1. 用户界面服务

    • Dashboard:主控制台界面
    • Admin Dashboard:管理员专用界面
    • Status Page:公开状态页面
    • Home:项目首页
  2. 核心业务服务

    • Accounts:用户账户管理
    • App:主应用服务
    • Worker:后台任务处理
    • Workflow:工作流引擎
  3. 文档服务

    • Docs:项目文档
    • API Reference:API参考文档

监控探测层

  1. 探测服务

    • Probe-1/Probe-2:监控探测节点
    • Probe Ingest:探测数据接收处理
  2. 监控数据接收

    • Server Monitor Ingest:服务器监控数据接收
    • OpenTelemetry Ingest:遥测数据接收
    • Incoming Request Ingest:请求数据接收

架构特点分析

  1. 模块化设计: 通过将不同功能拆分为独立服务,实现了高度模块化,便于扩展和维护。每个服务都有明确的职责边界。

  2. 扩展机制: 使用docker-compose.base.yml文件实现配置共享,避免重复定义,提高配置可维护性。

  3. 安全考虑

    • PostgreSQL端口映射可选择性开放(默认5400)
    • 使用独立网络隔离服务通信
  4. 监控数据处理: 设计了多种数据接收服务,支持不同类型的监控数据输入,包括:

    • 主动探测数据
    • 服务器监控数据
    • OpenTelemetry格式数据
    • 请求日志数据
    • Fluentd格式日志
  5. 隔离机制: 包含Isolated VM服务,可能用于运行不受信任代码的安全沙箱环境。

部署建议

  1. 镜像管理: 所有服务镜像都使用${APP_TAG}变量控制版本,便于统一升级。

  2. 资源分配: 根据实际负载情况,可能需要调整:

    • 数据库服务的存储卷配置
    • 监控数据处理服务的资源限制
  3. 网络配置: 默认使用bridge网络模式,生产环境可能需要考虑更复杂的网络拓扑。

  4. 高可用考虑

    • 探测服务默认部署了两个实例(probe-1, probe-2)
    • 可根据需要扩展其他无状态服务的实例数量

典型应用场景

  1. 网站监控: 通过探测服务定期检查网站可用性,在状态页面展示结果。

  2. 服务器监控: 接收服务器上报的性能指标,提供可视化监控。

  3. 应用性能监控: 通过OpenTelemetry收集应用性能数据,分析性能瓶颈。

  4. 事件响应: 结合工作流服务,实现监控告警的自动化响应。

总结

OneUptime的Docker Compose配置展示了一个完整的监控系统架构,涵盖了从数据采集、处理到展示的全流程。其模块化设计和清晰的组件划分使得系统既灵活又易于维护,适合需要自建监控解决方案的中大型项目。