Bootstrap仅负责监控页UI渲染,不提供数据采集与查询能力;需后端配合Prometheus等工具,前端用card布局、Chart.js绘图、自定义告警色系及失败兜底处理。

Bootstrap 本身不提供监控能力,它只是前端 UI 框架;真正做服务器集群监控,得靠后端采集(如 Prometheus + Node Exporter)、数据查询(PromQL)、再把结果喂给前端渲染。Bootstrap 在这里只负责把指标“画得清晰、响应快、能分栏折叠”。别指望靠 bootstrap.min.css 自动连上你的 Redis 或拉取 CPU 使用率。
用 Bootstrap 排版监控卡片时,优先选 card + row + col 而不是 table
监控页核心是「一眼看清状态」,不是展示行列对齐的数据。用表格容易横向滚动、移动端崩 layout,且无法按状态着色或动态折叠。
实操建议:
-
card包裹单个指标(如 “Node-03 内存使用率”),用card-header bg-danger表示 >90% 的告警态 - 每行用
row,子项用col-md-4 col-lg-3控制宽度,小屏自动堆叠 - 避免嵌套多层
row,尤其不要在card-body里再起row—— 会破坏间距一致性 - 需要实时刷新时,在
card-footer放small标签显示最后更新时间,比如<small class="text-muted">更新于 12:43:07</small>
图表不能只靠 Bootstrap,必须搭配轻量 JS 库(推荐 Chart.js)
Bootstrap 没有图表组件。硬用 progress 做 CPU 曲线?只能画单点百分比,没法看趋势。必须引入外部库,但别上 ECharts —— 太重,监控页要秒开。
实操建议:
- Chart.js 体积小(gzip 后 ~25KB),支持折线图、环形图、仪表盘插件(
chartjs-gauge) - 每个图表容器用
<canvas id="cpu-chart-node01"></canvas>,ID 带节点标识,方便 JS 绑定独立数据源 - 初始化时禁用动画:
options.animation = false,避免反复刷新时界面跳动 - 横轴时间戳用毫秒数传入,Chart.js 自动转为本地时区,别手动格式化成字符串再塞进去
状态标签和告警颜色别只靠 Bootstrap 默认色系
badge-success 和 badge-danger 是通用语义,但监控场景里,“磁盘使用率 85%” 算不算危险?取决于业务 SLA。硬套默认色容易误判。
实操建议:
- 自定义 CSS 类,比如
badge-disk-warning(#ffc107)对应 80–90%,badge-disk-critical(#dc3545)对应 >90% - 服务状态不用文字写 “Running”,改用带图标的
badge:<span class="badge bg-success"><i class="bi bi-circle-fill me-1"></i>在线</span>(需引入 Bootstrap Icons) - 对离线节点,除了变红,还要加
opacity: 0.6和text-decoration: line-through,视觉上明确“不可交互”
最常被忽略的是数据加载失败的兜底处理:API 返回 502 或超时后,卡片不能留白或卡在 loading 动画。每个图表/卡片区域必须有 div class="text-center text-muted py-3" 显示 “获取失败,请检查 exporter 连通性”,并附一个手动重试按钮(btn-sm btn-outline-secondary)。监控页的可靠性,一半体现在它敢告诉你“我什么都没拿到”。


















