优化启动脚本,增加部分文档
TBOS是腾讯自研的机房动环监控系统,采用微服务架构设计,包含边缘采集、数据处理、告警计算、配置管理等多个核心模块,支持大规模机房的统一监控管理。
┌──────────────────────────────────────────────────────────────┐ │ 配置流 │ │ Web → CGI → CMDB → MySQL ← Scheduler │ │ ↓ │ │ ┌───────────────┼───────────────┐ │ │ ↓ ↓ ↓ │ │ Agent-GW Data-Compute Alarm-Compute │ └──────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────┐ │ 数据流 │ │ 物理设备 → Agent → Collector → Kafka → Data-Cache/Store │ │ ↑ ↓ │ │ Data-Compute (读取Data-Cache计算) Data-Query │ └──────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────┐ │ 告警流 │ │ Alarm-Compute (读取Query) → Kafka(告警+日志) │ │ ↓ │ │ ┌───────────┴───────────┐ │ │ ↓ ↓ │ │ Alarm-Manage(入库) Alarm-Server(生效率) │ └──────────────────────────────────────────────────────────────┘
/api/dcos/tdac-cgi/
备注:单模组总资源不低于 52核心,资源规划建议 CPU:内存 = 1:4
适用于开发测试环境,需要手动安装依赖和配置。
# 1. 克隆项目 git clone <repository_url> cd tbos # 2. 编译所有服务 ./tbos.sh build # 3. 初始化数据库 mysql -u root -p < ddl.sql # 4. 启动所有服务 ./tbos.sh start # 访问Web界面:http://localhost:8080
前置要求:
依赖说明:
适用于初次体验和功能演示,自动化程度最高。不建议在生产环境使用。
# 1. 构建所有镜像 ./tbos_docker.sh build # 2. 安装TBOS系统(包含中间件和业务服务) ./tbos_docker.sh install # 3. 启动所有服务 ./tbos_docker.sh start # 访问Web界面:http://服务器IP:8080
优势:
注意事项:
适用于大规模生产环境,支持高可用和水平扩展。
部署方式:采用Kubernetes进行容器编排部署
编辑 server.cfg 文件配置环境变量:
server.cfg
# 数据库配置 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=password MYSQL_DATABASE=tbos MYSQL_ADDR=${MYSQL_HOST}:${MYSQL_PORT} # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= REDIS_ADDR=${REDIS_HOST}:${REDIS_PORT} # Kafka配置 KAFKA_HOST=localhost KAFKA_PORT=9092 KAFKA_ADDR=${KAFKA_HOST}:${KAFKA_PORT} KAFKA_POINT_TOPIC=tbos_point_data KAFKA_ALARM_TOPIC=tbos_alarm_msg # InfluxDB配置 INFLUXDB_HOST=localhost INFLUXDB_PORT=8086 INFLUXDB_USER=admin INFLUXDB_PASSWORD=password INFLUXDB_DBNAME=tbos INFLUXDB_ADDR=${INFLUXDB_HOST}:${INFLUXDB_PORT} INFLUXDB_POINT_MEASUREMENT=points # 本机IP LOCAL_IP=127.0.0.1 # 服务端口 PORT_AGENT=9100 PORT_COLLECTOR=9101 PORT_CMDB=9102 PORT_SCHEDULER=9103 PORT_DATA_COMPUTE=9104 PORT_DATA_CACHE=9105 PORT_DATA_STORE=9106 PORT_DATA_QUERY=9107 PORT_ALARM_COMPUTE=9108 PORT_ALARM_MANAGE=9109 PORT_ALARM_SERVER=9110 PORT_CGI=9111
每个服务目录下的 trpc_go.yaml 为服务配置文件,包含:
trpc_go.yaml
etrpc
global
server.service
client.service
plugins
Go 版本不兼容
# 错误:go: requires go1.24.0 # 解决方案:升级 Go 版本 brew upgrade go # macOS sudo apt update && sudo apt upgrade golang # Ubuntu
前端构建失败
# 错误:Node.js 版本过低 # 解决方案:使用 nvm 管理 Node.js 版本 nvm install 16 # 安装 Node.js 16 nvm use 16 # 切换到 Node.js 16
Nginx 配置问题
# 检查配置语法 nginx -t # 查看错误日志 tail -f /var/log/nginx/error.log # 系统日志 tail -f target/web/error.log # 项目日志
端口冲突
# 检查端口占用 netstat -tlnp | grep 8080 # 解决方案:停止冲突进程或修改配置 kill -9 <pid> # 停止占用进程
数据库连接失败
# 检查数据库服务 systemctl status mysql # 或 service mysql status # 验证连接 mysql -u root -p -h localhost -P 3306
前端路由不生效
# 检查 Nginx 是否安装 which nginx # 检查 Nginx 进程 ps aux | grep nginx # 重新启动 Nginx nginx -s stop nginx -c target/web/nginx.conf
使用 ddl.sql 初始化数据库:
ddl.sql
mysql -u root -p < ddl.sql
t_alarm_active
t_alarm_history
t_alarm_strategy
t_alarm_worker
t_collector_device
t_collector_template
t_collector_template_point
t_device_entity
t_device_point
t_mozu_info
```
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
T-Block-Operation-System (TBOS)
系统简介
TBOS是腾讯自研的机房动环监控系统,采用微服务架构设计,包含边缘采集、数据处理、告警计算、配置管理等多个核心模块,支持大规模机房的统一监控管理。
适用场景
核心特性
系统架构
整体架构图
数据流简图
技术栈
模块说明
核心服务模块
/api/dcos/tdac-cgi/快速开始
环境要求
最小化部署
硬件要求
操作系统
部署运行
部署方式对比
本地部署(开发环境)
适用于开发测试环境,需要手动安装依赖和配置。
前置要求:
依赖说明:
Docker部署(初次体验)
适用于初次体验和功能演示,自动化程度最高。不建议在生产环境使用。
优势:
依赖说明:
注意事项:
分布式部署
适用于大规模生产环境,支持高可用和水平扩展。
部署方式:采用Kubernetes进行容器编排部署
注意事项:
配置说明
环境变量配置
编辑
server.cfg文件配置环境变量:服务配置文件
每个服务目录下的
trpc_go.yaml为服务配置文件,包含:etrpcglobalserver.serviceclient.serviceplugins服务端口分配
故障排除
常见构建问题
Go 版本不兼容
前端构建失败
Nginx 配置问题
常见启动问题
端口冲突
数据库连接失败
前端路由不生效
数据库说明
初始化
使用
ddl.sql初始化数据库:核心表说明
t_alarm_activet_alarm_historyt_alarm_strategyt_alarm_workert_collector_devicet_collector_templatet_collector_template_pointt_device_entityt_device_pointt_mozu_info```