—
### **一、监控架构设计原则** – **轻量化**:优先使用Windows原生工具和免费方案,避免额外资源消耗 – **关键性聚焦**:仅监控直接影响MES运行的核心指标 – **自动化告警**:异常发生时主动触发通知,无需人工巡检 – **容灾预备**:单服务器场景需强化备份与快速恢复能力
—
### **二、硬件健康监控(浪潮服务器)** #### **1. 硬件状态监控** – **工具**:浪潮服务器iBMC远程管理(Web界面或IPMI命令行) – 关键指标: – 磁盘SMART状态(重点关注`Reallocated Sectors Count`) – RAID阵列健康度(通过`ipmitool sdr type "Storage"`查询) – 温度/电压告警(设置阈值:CPU温度<75℃) – 配置邮件告警:在iBMC管理界面设置阈值触发邮件通知
#### **2. 存储健康** – **脚本监控(PowerShell)**: ```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告警)
– **配置方法**: 1. 运行`perfmon` → 数据收集器集 → 用户定义 → 新建 2. 添加上述计数器,设置1分钟采样间隔 3. 右键属性 → 计划任务:每天生成报告并保存到`D:\\PerfLogs`
#### **2. 关键事件日志监控** – **工具**:事件查看器 + 计划任务告警 – 重点关注事件ID: | 事件ID | 含义 | 响应动作 | |——–|——|———-| | 41 | 意外重启 | 检查UPS电源日志 | | 1001 | 蓝屏记录 | 分析dump文件 | | 2019 | 内存硬错误 | 运行`mdsched`内存检测 | | 51 | 磁盘写入延迟 | 检查磁盘健康度 |
– **自动化告警脚本**(保存为`event_alert.bat`): ```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. 慢查询与死锁监控** – **启用跟踪**: ```sql — 开启死锁跟踪 DBCC TRACEON(1222, -1) — 记录慢查询(>5秒) EXEC sp_configure 'show advanced options', 1 RECONFIGURE EXEC sp_configure 'cost threshold for parallelism', 5 RECONFIGURE ```
– **日志分析脚本**: ```powershell # 检查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`): ```powershell $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分钟执行一次: ```bat schtasks /create /tn "MES服务监控" /tr "powershell -File C:\\Scripts\\service_watch.ps1" /sc minute /mo 5 /ru SYSTEM ```
#### **2. 应用日志监控** – **日志路径**(示例): – `C:\\MES\\Logs\\App*.log` – 监控关键词:`ERROR`、`Timeout`、`Connection refused`
– **实时监控脚本**: ```powershell 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. 快速恢复测试** – **季度演练步骤**: 1. 从备份恢复SQL数据库到测试实例 2. 使用`DBCC CHECKDB`验证数据一致性 3. 记录恢复时间目标(RTO)并优化流程
—
### **七、告警通知整合** #### **统一告警平台搭建** – **方案**:使用免费版**Prometheus + Alertmanager**: 1. 部署`windows_exporter`采集指标 2. 配置告警规则示例: ```yaml 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 }}%)" ``` 3. 集成邮件/企业微信通知
—
### **八、维护计划表** | 任务 | 频率 | 执行方式 | |———————|———-|———————| | 清理临时文件 | 每周一 | `cleanmgr /sagerun:1` | | 更新Windows补丁 | 每月第二周 | WSUS自动审批 | | 检查备份完整性 | 每周五 | 手动验证3个随机备份 | | 重启服务器(可选) | 每季度 | 维护窗口期手动执行 |
—
### **实施成本对比** | 方案 | 成本 | 实施难度 | 适合场景 | |———————|——–|———-|——————–| | 纯PowerShell脚本 | 0元 | ★★☆☆☆ | 紧急监控需求 | | Prometheus + Grafana| 0元 | ★★★☆☆ | 长期可视化监控 | | SolarWinds SAM试用版| 免费30天| ★★☆☆☆ | 短期深度监控体验 |
**推荐选择**:先用PowerShell脚本实现核心监控(30分钟部署),同时逐步搭建Prometheus实现历史数据分析,形成完整监控闭环。
评论前必须登录!
注册