一、监控架构设计原则
- 轻量化:优先使用Windows原生工具和免费方案,避免额外资源消耗
- 关键性聚焦:仅监控直接影响MES运行的核心指标
- 自动化告警:异常发生时主动触发通知,无需人工巡检
- 容灾预备:单服务器场景需强化备份与快速恢复能力
二、硬件健康监控(浪潮服务器)
1. 硬件状态监控
- 工具:浪潮服务器iBMC远程管理(Web界面或IPMI命令行)
- 关键指标:
- 磁盘SMART状态(重点关注
Reallocated Sectors Count
) - RAID阵列健康度(通过
ipmitool sdr type "Storage"
查询) - 温度/电压告警(设置阈值:CPU温度<75℃)
- 磁盘SMART状态(重点关注
- 配置邮件告警:在iBMC管理界面设置阈值触发邮件通知
- 关键指标:
2. 存储健康
- 脚本监控(PowerShell):
# 检查物理磁盘健康状态(需iBMC SNMP支持) $diskHealth = Get-WmiObject -Query "SELECT Status FROM Win32_DiskDrive" if ($diskHealth.Status -ne "OK") { Send-MailMessage -To "admin@example.com" -Subject "磁盘硬件故障" -Body "物理磁盘状态异常:$($diskHealth.Status)" }
三、操作系统监控(Windows Server 2019)
1. 性能基线监控
-
工具:性能监视器(PerfMon)
- 创建数据收集器集,包含以下计数器:
Processor(_Total)\% Processor Time
(阈值:持续>85%告警)Memory\Available MBytes
(阈值:<10%总内存)LogicalDisk(C:)\% Free Space
(阈值:<15%时告警)PhysicalDisk(_Total)\Avg. Disk sec/Read
(阈值:>20ms告警)
- 创建数据收集器集,包含以下计数器:
-
配置方法:
- 运行
perfmon
→ 数据收集器集 → 用户定义 → 新建 - 添加上述计数器,设置1分钟采样间隔
- 右键属性 → 计划任务:每天生成报告并保存到
D:\PerfLogs
- 运行
2. 关键事件日志监控
-
工具:事件查看器 + 计划任务告警
- 重点关注事件ID:
事件ID 含义 响应动作 41 意外重启 检查UPS电源日志 1001 蓝屏记录 分析dump文件 2019 内存硬错误 运行 mdsched
内存检测51 磁盘写入延迟 检查磁盘健康度
- 重点关注事件ID:
-
自动化告警脚本(保存为
event_alert.bat
):@echo off eventquery.vbs /L System /R 100 /FI "ID eq 41 or ID eq 51" > last_events.txt findstr /C:"41" last_events.txt && powershell -Command "Send-MailMessage -To 'admin@example.com' -Subject '系统异常重启' -Body '检测到意外关机事件,请立即检查!'"
四、SQL Server专项监控
1. 基础性能指标
- 工具:SQL Server Management Studio (SSMS) 内置报表
- 每日检查:
- 报表 →
Dashboard
→ 查看等待类型(重点监控PAGEIOLATCH_*
) Disk Usage
→ 检查事务日志文件增长情况
- 报表 →
- 关键计数器:
SQLServer:Buffer Manager\Page life expectancy
(阈值:<300秒告警)SQLServer:SQL Statistics\Batch Requests/sec
(对比基线波动>50%需排查)
- 每日检查:
2. 慢查询与死锁监控
-
启用跟踪:
-- 开启死锁跟踪 DBCC TRACEON(1222, -1) -- 记录慢查询(>5秒) EXEC sp_configure 'show advanced options', 1 RECONFIGURE EXEC sp_configure 'cost threshold for parallelism', 5 RECONFIGURE
-
日志分析脚本:
# 检查SQL错误日志中的死锁 $logPath = "C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG" Select-String -Path $logPath -Pattern "deadlock victim" | ForEach-Object { Send-MailMessage -To "dba@example.com" -Subject "SQL死锁告警" -Body $_.Line }
五、MES应用层监控
1. 进程与服务监控
-
关键服务:
- MES主服务(根据实际服务名设置监控)
- IIS/WCF依赖服务(如
W3SVC
、NetTcpPortSharing
)
-
PowerShell守护脚本(保存为
service_watch.ps1
):$criticalServices = @("MESService", "MSSQLSERVER", "W3SVC") foreach ($service in $criticalServices) { $status = (Get-Service -Name $service).Status if ($status -ne "Running") { Start-Service $service -ErrorAction SilentlyContinue Send-MailMessage -To "admin@example.com" -Subject "服务异常" -Body "$service 服务停止,已尝试重启!状态:$status" } }
- 创建计划任务每5分钟执行一次:
schtasks /create /tn "MES服务监控" /tr "powershell -File C:\Scripts\service_watch.ps1" /sc minute /mo 5 /ru SYSTEM
- 创建计划任务每5分钟执行一次:
2. 应用日志监控
-
日志路径(示例):
C:\MES\Logs\App*.log
- 监控关键词:
ERROR
、Timeout
、Connection refused
-
实时监控脚本:
Get-Content -Path "C:\MES\Logs\App.log" -Wait | Select-String -Pattern "ERROR" | ForEach-Object { Send-MailMessage -To "dev@example.com" -Subject "MES应用错误" -Body $_.Line }
六、备份与恢复策略
1. 数据备份方案
备份类型 | 频率 | 工具 | 存储位置 |
---|---|---|---|
SQL完全备份 | 每日2:00 AM | SQL Server维护计划 | 外部USB硬盘 + NAS |
事务日志备份 | 每小时一次 | BACKUP LOG 命令 | NAS |
系统镜像备份 | 每周日1:00 AM | Windows Server Backup | 外置硬盘 |
2. 快速恢复测试
- 季度演练步骤:
- 从备份恢复SQL数据库到测试实例
- 使用
DBCC CHECKDB
验证数据一致性 - 记录恢复时间目标(RTO)并优化流程
七、告警通知整合
统一告警平台搭建
- 方案:使用免费版Prometheus + Alertmanager:
- 部署
windows_exporter
采集指标 - 配置告警规则示例:
groups: - name: MES监控 rules: - alert: 高CPU使用率 expr: 100 - (avg by(instance)(rate(windows_cpu_time_total{mode="idle"}[5m])) * 100) > 85 for: 5m labels: severity: critical annotations: summary: "CPU过载 ({{ $value }}%)"
- 集成邮件/企业微信通知
- 部署
八、维护计划表
任务 | 频率 | 执行方式 |
---|---|---|
清理临时文件 | 每周一 | cleanmgr /sagerun:1 |
更新Windows补丁 | 每月第二周 | WSUS自动审批 |
检查备份完整性 | 每周五 | 手动验证3个随机备份 |
重启服务器(可选) | 每季度 | 维护窗口期手动执行 |
实施成本对比
方案 | 成本 | 实施难度 | 适合场景 |
---|---|---|---|
纯PowerShell脚本 | 0元 | ★★☆☆☆ | 紧急监控需求 |
Prometheus + Grafana | 0元 | ★★★☆☆ | 长期可视化监控 |
SolarWinds SAM试用版 | 免费30天 | ★★☆☆☆ | 短期深度监控体验 |
推荐选择:先用PowerShell脚本实现核心监控(30分钟部署),同时逐步搭建Prometheus实现历史数据分析,形成完整监控闭环。