资讯动态

Checkmate 基础设施监控磁盘选择指南:精确控制磁盘与挂载点的监控范围

发布时间:2026/9/15 18:21:54 来源:尧图企业网站定制
Checkmate 基础设施监控磁盘选择指南精确控制磁盘与挂载点的监控范围【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Dont be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/CheckmateCheckmate 是开源、自托管的实时监控工具其基础设施监控模块负责采集并展示目标服务器的 CPU、内存、磁盘与温度等硬件指标。本文以仓库文档 docs/infrastructure-disk-selection.md 为主体讲解磁盘选择Disk Selection功能的配置入口、行为规则与典型使用场景并结合源码说明该功能从配置存储、数据采集到前端渲染的完整实现链路。读完本文你将掌握如何针对多盘服务器制定精准的磁盘监控策略并能从代码层面理解磁盘数据在 Checkmate 中的流转过程。功能概述为什么需要磁盘选择默认情况下Checkmate 会监控目标服务器上被采集代理Capture agent检测到的所有磁盘每块磁盘都会对应一个使用率仪表盘Gauge与一条时间序列图表。在生产环境中服务器上往往存在大量分区系统盘、数据盘、日志盘、临时存储、虚拟/网络挂载盘等并非每一块都值得纳入日常监控视野。磁盘选择功能允许用户在已创建的基础设施监控器上从自动检测到的磁盘/挂载点列表中勾选需要关注的条目从而精确控制仪表盘、图表与汇总表中展示的磁盘范围让监控界面聚焦于真正重要的存储资源。前置条件使用磁盘选择功能前需要满足以下条件Checkmate 服务端运行中且目标服务器上已安装并运行 Capture agent已创建并配置完成一个基础设施监控器Capture agent 至少检测到一块磁盘。关于基础设施监控器的配置要点可参考 client/src/locales/en.json 中创建监控器表单的提示文本监控器的 URL 必须填写 Capture 指标端点的完整路径例如http://192.168.1.10:5001/api/v1/metrics若配置了鉴权 token只需粘贴 token 字符串本身不要附带Bearer前缀。从源码看HardwareProvider 直接复用 HttpProvider 对该 URL 发起请求将返回的 JSON 解析为硬件指标负载HardwareStatusPayload请求失败时抛出携带 URL 上下文信息的AppError。使用磁盘选择功能进入功能入口打开Infrastructure monitors基础设施监控器页面点击一个已有的基础设施监控器进入详情点击Configure或Edit按钮向下滚动到Disk Selection区域。注意磁盘选择功能仅在编辑已经检测到磁盘的现有监控器时可用。新建监控器时尚无检测结果可供选择。选择磁盘的步骤查看可用磁盘系统自动列出从目标服务器检测到的全部磁盘/挂载点勾选磁盘勾选想要监控的磁盘可多选应用更改点击Save保存监控器配置随即更新。理解磁盘标识符磁盘通过挂载点或设备名两种形式标识挂载点Mountpoint/根分区、/home、/var等设备名Device/dev/sda1、/dev/nvme0n1p1等。这两类标识都会随检查数据一同采集并落库见下文数据链路部分前端渲染时以设备名作为列表 key。行为规则全部磁盘已选择所有检测到的磁盘都显示在仪表盘Gauge与图表中选择了特定磁盘监控界面只展示所选磁盘未检测到磁盘界面显示 No disk detected for the moment 提示。被过滤的内容当选择了特定磁盘后以下三类界面元素只反映所选磁盘的数据磁盘使用率仪表盘Disk Usage Gauges详情页顶部的磁盘使用率仪表磁盘使用率图表Disk Usage Charts按时间序列展示的磁盘使用率曲线监控器汇总表Monitor Table监控列表页的磁盘概览列。由于这三处渲染均以遍历磁盘数组、逐个渲染的方式实现磁盘选择通过控制磁盘数组中实际包含的条目即可统一影响所有展示位置。配置如何存储与校验selectedDisks 字段从源码结构看磁盘选择结果通过监控器Monitor文档上的selectedDisks字符串数组持久化贯穿类型定义、Mongoose Schema 与仓库映射三层类型定义server/src/domain/monitors/monitor.type.ts 中声明selectedDisks: string[]Mongoose Schemaserver/src/domain/monitors/monitor.model.ts 中定义为[String]数组默认值为[]空数组仓库映射server/src/domain/monitors/monitor.repository.mongo.ts 读取文档时以doc.selectedDisks ?? []兜底保证旧数据也能安全读取。API 校验层Zod在 server/src/api/validation/monitorValidation.ts 中多处声明该字段位置行号校验规则说明L211、L260z.array(z.string()).optional()创建/更新场景磁盘选择为可选字段L337z.array(z.string()).default([])部分更新场景缺省为空数组L427z.array(z.string())完整 schema 中为字符串数组也就是说用户勾选的每个磁盘标识设备名或挂载点都以字符串形式提交经 Zod 校验后随监控器配置一同保存到数据库之后由前端详情页读取并据此渲染。磁盘数据从采集到渲染的完整链路1. 采集HardwareProviderHardwareProvider 的handle()方法以监控器配置的 URL 为入口复用HttpProvider向 Capture agent 的指标端点发起 HTTP 请求成功后返回硬件指标负载其中包含data.disk磁盘数组。2. 归一化CheckServiceserver/src/domain/checks/check.service.ts 将硬件负载中的cpu、memory、disk、host、net逐一映射到 Check 文档其中check.disk disk保留原始磁盘数组。3. 落库CheckRepository 的 mapDisksserver/src/domain/checks/check.repository.mongo.ts 对每块磁盘归一化为以下字段device设备名、mountpoint挂载点total_bytes、free_bytes、used_bytes、usage_percent容量与使用率total_inodes、free_inodes、used_inodes、inodes_usage_percentinode 维度read_bytes、write_bytes、read_time、write_time读写统计。对应的数据结构定义在 check.type.tsmountpoint?: string与 check.model.tsmountpoint: { type: String, default: }。4. 快照CheckSnapshot监控器上保存的 recentChecks 快照仅保留展示所需的核心字段check.snapshot.ts 的mapDisk只映射device、total_bytes、used_bytes、usage_percent用于仪表盘与详情页的即时渲染避免快照体积膨胀。5. 聚合硬件时间序列server/src/domain/checks/check.hardware.aggregations.ts 通过 MongoDB 聚合管道生成硬件统计用$push收集每个时间桶内的磁盘数据再用$avg计算均值产出readSpeed、writeSpeed、totalBytes、freeBytes、usagePercent等磁盘维度指标类型定义见 check.type.ts 的HardwareDiskStats。6. 渲染前端的三个展示点磁盘仪表盘client/src/Pages/Infrastructure/Details/Components/Gauges.tsx 遍历snapshot.disk以disk.device为 key 渲染磁盘使用率DetailGauge展示used_bytes/total_bytes与百分比进度时间序列图表client/src/Pages/Infrastructure/Details/Components/Charts.tsx 为每块磁盘生成一条disks[idx].usagePercent数据序列监控列表汇总表client/src/Pages/Infrastructure/Monitors/Components/MonitorsTable.tsx 对磁盘数组的usage_percent取平均值后渲染 Gauge统计卡片client/src/Pages/Infrastructure/Details/Components/StatusBoxes.tsx 累加所有磁盘的total_bytes显示磁盘总量。由此可以推断磁盘选择功能的核心作用正是控制磁盘数组即selectedDisks对应的数据源中实际包含哪些条目从而让上述所有展示位置同时生效。磁盘阈值告警与磁盘选择的关系磁盘使用率告警独立于展示层运行。监控器上的diskAlertThreshold默认100单位为百分比与diskAlertCounter默认5连续触发次数定义于 server/src/api/validation/monitorValidation.ts。在 server/src/service/statusService.ts 的computeHardwareStatus中每次检查都会基于最新hardware.disk数组评估是否达到阈值并更新计数器、决定是否切换状态notification.message-builder.ts 同样先判断Array.isArray(hardware.disk)再组装磁盘告警消息。需要特别说明的是磁盘选择影响的是展示哪些磁盘而阈值告警针对采集到的磁盘数据求值。配置磁盘选择范围不会改变告警引擎对全部采集磁盘的评估逻辑两者职责分离。典型使用场景多盘服务器只监控关键系统盘忽略临时存储分区数据库服务器重点监控数据库分区忽略日志分区Web 服务器将 Web 内容盘与系统盘分开监控各自呈现独立仪表盘开发环境只跟踪与项目相关的挂载点减少界面噪音。故障排查没有磁盘出现确认目标服务器上的Capture agent 正在运行检查 agent 是否具有读取磁盘信息的权限确保监控器已运行足够长时间至少采集到一次检查数据磁盘列表来自检查数据而不是创建时静态获取。磁盘信息缺失部分磁盘可能因权限不足无法被 Capture agent 读取虚拟磁盘或网络挂载盘可能不会出现在检测列表中查看Capture agent 日志确认是否存在磁盘检测错误。相关文档与资源基础设施监控详情页前端组件client/src/Pages/InfrastructureDetails 与 Monitors 两个子目录硬件指标聚合管道与类型定义server/src/domain/checks/check.hardware.aggregations.ts、server/src/domain/checks/check.type.ts监控器配置模型与校验server/src/domain/monitors/monitor.model.ts、server/src/api/validation/monitorValidation.ts基础设施监控相关的国际化文案client/src/locales/en.jsonpages.infrastructure与pages.createMonitor分区相关服务测试server/test/unit/services/statusService.test.ts、server/test/unit/services/notificationMessageBuilder.test.ts。【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Dont be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/Checkmate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价