乐于分享
好东西不私藏

[医疗软件开源] 信息科机房健康仪表盘:一款面向医院信息科的轻量级开源运维诊断工具

[医疗软件开源] 信息科机房健康仪表盘:一款面向医院信息科的轻量级开源运维诊断工具

在日常信息系统运维中,信息科值班人员常常面临一个典型困境:告警消息突然弹出,CPU飙升、数据库连接超限、应用日志错误激增……但问题根源在哪里?是网络抖动导致服务响应延迟,还是数据库慢查询拖垮了整个链路,抑或前端资源加载异常引发后端雪崩?传统监控平台往往只展示指标曲线,缺乏上下文关联与归因能力,值班员需手动比对多个面板、翻查日志、逐层排查,耗时长、门槛高、易误判。

信息科机房健康仪表盘正是为解决这一痛点而生。它不是另一个重型监控系统,而是一款聚焦医院信息科实际值守场景的轻量级开源运维诊断工具。项目以「快速定界、零幻觉、易部署」为核心设计原则,用纯规则引擎替代大模型推理,在保障结果可解释性与稳定性的前提下,将异常根因识别压缩至5秒内,输出清晰的排查路径与操作建议,切实降低一线人员的响应压力与决策成本。

项目概述:聚合监控 + 规则定界 + 即时响应

信息科机房健康仪表盘是一个专为医疗机构信息科设计的本地化运维辅助系统。它不依赖云端服务或外部API,所有采集、分析、存储、展示均在本地完成,数据不出机房,符合医疗行业对数据安全与合规性的基本要求。

项目采用模块化架构,围绕「采集—分析—呈现—追溯」四个环节构建闭环:

  • 采集层
    :通过 psutil 实时获取服务器级基础指标,包括 CPU 使用率、内存占用、磁盘 I/O 等待时间、网络入出流量、数据库连接数(支持主流关系型数据库)、应用日志中的错误行比例(基于日志文件扫描);
  • 分析层
    :内置规则引擎,依据预设逻辑组合多维指标变化趋势与阈值关系,自动判定当前异常属于「网络型」「数据库型」「应用型」或「前端型」四类典型故障模式;
  • 呈现层
    :提供 CLI 命令行交互界面与 Web 仪表盘双入口,状态一目了然,告警即时可见,诊断建议直达操作步骤;
  • 追溯层
    :所有采集指标默认写入本地 SQLite 数据库,支持按时间范围查询历史趋势,便于事后复盘与容量规划。

整个系统无机器学习训练过程,无模型参数调优负担,无外部依赖风险,即装即用,适合中小型医院信息科、区域卫生平台运维团队等技术资源有限但响应时效要求高的场景。

技术亮点:轻量、可靠、可控

该项目的技术选型充分体现了“够用、稳定、易维护”的务实思路,每一项技术组件均有明确分工与落地支撑:

  • Python 3.x + psutil
    :作为底层采集基石,psutil 跨平台兼容性强,对 Linux/Windows 系统资源访问封装完善,避免了自行调用系统命令带来的兼容性与权限问题;
  • Click 框架构建 CLI 工具
    :命令行接口简洁直观,statusalertsdiagnose 三大核心指令覆盖日常高频操作,无需启动 Web 服务即可完成快速巡检;
  • Flask 提供 Web 仪表盘
    :轻量 HTTP 框架,启动快、资源占用低,配合前端静态资源实现响应式布局,适配值班室大屏与移动终端临时查看;
  • SQLite 本地持久化
    :摒弃复杂数据库部署,单文件存储所有历史指标与告警记录,备份迁移仅需复制 data/ 目录,极大降低运维复杂度;
  • 纯规则引擎驱动定界逻辑
    :所有异常识别逻辑定义在 rules/ 目录下的 Python 模块中,可读性强、修改门槛低,信息科工程师可基于本院实际业务特征自主调整判断条件,例如放宽日志错误率阈值、增加特定中间件连接池监控等。

尤为关键的是,项目明确声明「无LLM幻觉风险」。这意味着其诊断结论完全由确定性规则推导得出,每一条建议都有明确的指标依据与逻辑路径,不会出现大模型常见的“自信胡说”现象,保障了生产环境下的可信度与可追责性。

应用场景:可用于医院信息科日常值守与应急响应

本项目并非通用型云监控平台,而是深度贴合医疗信息科工作流的垂直工具,适用于以下典型场景:

  • 夜间及节假日值班响应
    :当监控告警触发时,值班员可立即执行 python main.py diagnose,5秒内获得如「当前数据库连接数达上限98%,且慢查询日志同步增长,建议优先检查订单服务SQL执行计划」等具体指引,大幅缩短首次响应时间;
  • 新系统上线前基线校准
    :通过混合模式持续运行一周,采集正常业务负载下的各项指标分布,形成科室专属健康基线,后续异常识别更精准;
  • 老旧服务器性能瓶颈定位
    :针对运行HIS、LIS等老系统的物理服务器,启用后台采集模式长期运行,结合 SQLite 历史数据趋势图,识别磁盘IO持续偏高或内存泄漏等渐进式问题;
  • 信息科新人培训辅助
    :规则引擎本身即是一份结构化的故障排查知识库,新员工可通过阅读 rules/ 中的判断逻辑,快速理解各类异常的表征与传导路径。

它不适合替代Zabbix、Prometheus等企业级监控底座,但可作为其有力补充,在告警发生后的“黄金5分钟”内,承担起从“看到异常”到“知道该查什么”的关键桥梁角色。

使用指南:三步上手,模式灵活

项目开箱即用,安装与运行流程清晰,适配不同技术背景的信息科人员。

安装依赖

确保系统已安装 Python 3.7 或更高版本后,执行以下命令完成依赖安装:

pip install -r requirements.txt

启动模式选择

根据当前使用需求,选择对应启动方式:

# 后台采集模式:仅运行数据采集服务,不启动Web界面
python main.py --collector-only

# Web仪表盘模式:仅启动Flask服务,需另行配置采集器或依赖已有数据
python main.py --web

# 混合模式:同时启用采集与Web服务,推荐首次使用
python main.py --both

常用CLI命令

除Web界面外,命令行提供高效交互入口:

# 查看当前各模块运行状态与最新采集时间
python main.py status

# 列出未清除的活跃告警,含类型、触发时间与简要描述
python main.py alerts

# 执行一次完整诊断,输出异常类型、置信依据与分步排查建议
python main.py diagnose

目录结构清晰,便于二次开发与定制:

server-room-health-dashboard/
├── collectors/       # 封装各类指标采集逻辑,支持扩展自定义采集器
├── rules/           # 核心规则定义,每个.py文件对应一类故障模式判断逻辑
├── api/             # Flask路由与数据接口,对外提供JSON格式指标与告警数据
├── web/             # HTML/CSS/JS前端资源,含响应式仪表盘与图表渲染
├── cli/             # Click命令行接口实现,与main.py主入口联动
├── tools/           # 辅助脚本,如SQLite数据导出、日志清理等
├── data/            # SQLite数据库文件与采集原始缓存
├── logs/            # 运行日志,按日期滚动,便于问题追踪
└── main.py          # 程序统一入口,协调各模块启动与参数解析

对于希望深度参与的用户,可直接修改 rules/ 下的 Python 文件,例如调整数据库连接数告警阈值,或新增对 Redis 连接池的监控逻辑,无需重构框架即可生效。

总结:回归运维本质的务实之选

在AIOps概念盛行的当下,信息科机房健康仪表盘选择了一条不同的路径:不追逐算法热度,不堆砌可视化特效,而是牢牢锚定「值班员需要什么」这一根本问题。它用最朴素的规则引擎,实现了最迫切的快速定界;用最精简的技术栈,保障了最稳定的本地运行;用最透明的代码结构,赋予了最灵活的本地化适配能力。

它不承诺“全自动修复”,但确保“每一步都可知可控”;它不追求“全宇宙兼容”,但做到“在医院机房里真正跑得起来”。这种克制与专注,恰恰是许多一线运维工具最稀缺的品质。

项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。

项目地址:
https://github.com/nexorin9/server-room-health-dashboard