业务和功能介绍
1、立项背景和目标:
中小企业服务器运维长期依赖人工巡检——每天手动登录每台服务器查看CPU、内存、磁盘、服务状态,故障发现滞后,往往等到业务中断了才被动响应。专业运维监控平台(Zabbix、Prometheus等)部署复杂、学习成本高,中小企业IT人员有限难以维护。因此需要一套轻量级、易部署的服务器集群监控方案,实现多台服务器指标自动采集、集中看板展示、异常自动告警,将故障响应时间从"小时级"压缩到"分钟级"。
2、软件功能、核心功能模块介绍:
① 多服务器集中采集:支持Windows(PowerShell)和Linux(Bash)双平台采集脚本,每2分钟自动上报CPU、内存、磁盘、网络流量等核心指标;② 实时数据看板:Web前端单页看板,展示服务器列表、各指标实时数值、状态色块(正常/警告/异常)、历史趋势图;③ 智能告警推送:连续3次采集超过阈值才触发告警(避免短暂尖峰误报),告警通过钉钉Webhook自动推送到IT工作群,包含服务器名称、异常指标、当前数值、时间戳,值班人员手机端即时收到;④ 备份监控:自动检测NAS备份路径的最新备份文件,备份过期自动标记预警并推送告警;⑤ 服务器管理:前端直接编辑服务器名称、角色标签,支持动态增减服务器节点。
3、业务流程、功能路径描述:
运维人员在运维服务器上部署Flask API + MySQL数据库 + Nginx前端,各被监控服务器通过计划任务定时运行采集脚本(PowerShell/Bash),脚本采集本机指标后HTTP POST上报至运维服务器API,API写入MySQL。前端看板每30秒轮询API获取最新数据渲染。备份监控模块定时扫描NAS路径检测备份时效。告警脚本定时检查MySQL中的最新指标数据,触发阈值后通过钉钉Webhook推送告警消息到IT工作群,值班人员手机上实时收到异常通知。
1、整体架构和设计思路,不同模块使用的技术栈:
采用B/S架构,分三层:采集层(PowerShell v3.5.2 / Bash 采集脚本,通过Windows计划任务或Linux cron定时执行)、服务层(Python Flask API + MySQL存储,Ubuntu Server 22.04部署,systemd自启)、展示层(HTML + ECharts 单页看板,Nginx托管)。采集脚本使用VBS包装隐藏运行,不影响服务器桌面操作。告警推送通过钉钉群机器人Webhook实现,无需额外安装第三方监控平台。整体从零自研,代码量可控,部署文档清晰。
2、"我"的负责模块和结果(尽可能量化):
独立完成全部开发工作。包括:采集脚本从v3.0到v3.5.3共12个版本的迭代开发,解决跨网段VLAN隔离、多核CPU采集偏差、SYSTEM账户下NAS认证、网络流量速率计算等6个核心工程问题。最终监控5台生产服务器(ERP/财务/GST/DB/极绎),2分钟采集周期,7×24无人值守运行。告警实测:服务器异常3分钟内推送到钉钉IT群,值班人员手机端即时收到。NAS备份监控覆盖4台服务器的MySQL/SQL Server/金蝶备份,过期自动预警。
3、"我"遇到的难点、坑,和解决方案:
难点一:跨网段部署时API请求超时,ping通但TCP不通,排查发现企业核心交换机ACL限制了VLAN间流量。解决方案:将运维服务器迁移至同网段,并注册为systemd服务确保重启后自动恢复。→ 收获:中小企业网络环境比想象中复杂,部署前一定要先验证跨网段连通性。难点二:多核服务器(40线程Xeon)CPU使用率采集值严重偏低,原因是WMI默认返回多核平均值。解决方案:改用Win32_PerfFormattedData_PerfOS_Processor的_Total指标获取整体CPU真实使用率。→ 收获:监控指标采集不能想当然,必须跟任务管理器逐项对齐。难点三:Windows SYSTEM账户下无法通过net use访问NAS共享目录(错误1312),且Test-Path对UNC路径检测不可靠。解决方案:改用cmdkey将凭据写入Windows凭据管理器,移除Test-Path预检直接Get-ChildItem + try/catch处理异常。