OneUptime项目Docker Compose部署架构解析
2025-07-07 08:04:34作者:姚月梅Lane
项目概述
OneUptime是一个开源的监控和状态页面解决方案,其Docker Compose配置文件展示了项目的微服务架构设计。通过分析这个docker-compose.yml文件,我们可以深入了解OneUptime的系统架构和组件交互方式。
核心服务组件
基础服务层
-
数据库服务:
- Redis:作为高性能的内存数据库,用于缓存和临时数据存储
- ClickHouse:列式数据库,适合处理监控数据和分析查询
- PostgreSQL:关系型数据库,存储核心业务数据
-
邮件服务:
- Haraka:轻量级SMTP服务器,处理系统邮件发送
-
监控数据收集:
- OpenTelemetry Collector:统一收集和转发遥测数据
- Fluent Ingestion:日志数据收集处理
应用服务层
-
用户界面服务:
- Dashboard:主控制台界面
- Admin Dashboard:管理员专用界面
- Status Page:公开状态页面
- Home:项目首页
-
核心业务服务:
- Accounts:用户账户管理
- App:主应用服务
- Worker:后台任务处理
- Workflow:工作流引擎
-
文档服务:
- Docs:项目文档
- API Reference:API参考文档
监控探测层
-
探测服务:
- Probe-1/Probe-2:监控探测节点
- Probe Ingest:探测数据接收处理
-
监控数据接收:
- Server Monitor Ingest:服务器监控数据接收
- OpenTelemetry Ingest:遥测数据接收
- Incoming Request Ingest:请求数据接收
架构特点分析
-
模块化设计: 通过将不同功能拆分为独立服务,实现了高度模块化,便于扩展和维护。每个服务都有明确的职责边界。
-
扩展机制: 使用docker-compose.base.yml文件实现配置共享,避免重复定义,提高配置可维护性。
-
安全考虑:
- PostgreSQL端口映射可选择性开放(默认5400)
- 使用独立网络隔离服务通信
-
监控数据处理: 设计了多种数据接收服务,支持不同类型的监控数据输入,包括:
- 主动探测数据
- 服务器监控数据
- OpenTelemetry格式数据
- 请求日志数据
- Fluentd格式日志
-
隔离机制: 包含Isolated VM服务,可能用于运行不受信任代码的安全沙箱环境。
部署建议
-
镜像管理: 所有服务镜像都使用${APP_TAG}变量控制版本,便于统一升级。
-
资源分配: 根据实际负载情况,可能需要调整:
- 数据库服务的存储卷配置
- 监控数据处理服务的资源限制
-
网络配置: 默认使用bridge网络模式,生产环境可能需要考虑更复杂的网络拓扑。
-
高可用考虑:
- 探测服务默认部署了两个实例(probe-1, probe-2)
- 可根据需要扩展其他无状态服务的实例数量
典型应用场景
-
网站监控: 通过探测服务定期检查网站可用性,在状态页面展示结果。
-
服务器监控: 接收服务器上报的性能指标,提供可视化监控。
-
应用性能监控: 通过OpenTelemetry收集应用性能数据,分析性能瓶颈。
-
事件响应: 结合工作流服务,实现监控告警的自动化响应。
总结
OneUptime的Docker Compose配置展示了一个完整的监控系统架构,涵盖了从数据采集、处理到展示的全流程。其模块化设计和清晰的组件划分使得系统既灵活又易于维护,适合需要自建监控解决方案的中大型项目。