针对单台浪潮服务器运行Windows Server 2019和SQL Server的MES系统场景、高效能监控策略(兼顾软硬件健康)
---
### **一、监控架构设计原则**
- **轻量化**:优先使用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实现历史数据分析,形成完整监控闭环。
相关文章:
针对单台浪潮服务器运行Windows Server 2019和SQL Server的MES系统场景、高效能监控策略(兼顾软硬件健康)
--- ### **一、监控架构设计原则** - **轻量化**:优先使用Windows原生工具和免费方案,避免额外资源消耗 - **关键性聚焦**:仅监控直接影响MES运行的核心指标 - **自动化告警**:异常发生时主动触发通知,无需人工巡检 -…...
Vue Transition组件类名+TailwindCSS
#本文教学结合TailwindCSS实现一个Transition动画的例子# 举例代码: <transition enter-active-class"transition-all duration-300 ease-out"enter-from-class"opacity-0 translate-y-[-10px]"enter-to-class"opacity-100 translate-…...
Anaconda和Pycharm的区别,以及如何选择两者
目录 主要区别详细说明如何选择?Anaconda的使用步骤 主要区别 Anaconda 和 PyCharm 是 Python 开发中常用的两个工具,但它们的定位和功能完全不同。以下是它们的主要区别: 对比项AnacondaPyCharm类型Python 发行版 包管理工具Python 集成开…...
STM32智能手表——任务线程部分
RTOS和LVGL我没学过,但是应该能硬啃这个项目例程 ├─Application/User/Tasks # 用于存放任务线程的函数 │ ├─user_TaskInit.c # 初始化任务 │ ├─user_HardwareInitTask.c # 硬件初始化任务 │ ├─user_RunModeTasks.c…...
SQL命令
一、表的创建 SQL MS Access、MySQL 和 SQL Server 数据类型 | 菜鸟教程 SQL Server 和 MySQL 中的 Date 函数 | 菜鸟教程 1.1、创建表 CREATE TABLE Citys (CityID int PRIMARY KEY,CityName varchar(255) );CREATE TABLE Per (PersonID int PRIMARY KEY, …...
DRM_CLIENT_CAP_UNIVERSAL_PLANES和DRM_CLIENT_CAP_ATOMIC
drmSetClientCap(fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); drmSetClientCap(fd, DRM_CLIENT_CAP_ATOMIC, 1); 这两行代码用于启用 Linux DRM(Direct Rendering Manager)客户端的两个关键特性,具体作用如下: 1. drmSetClientCap…...
anaconda安装 创建虚拟环境+pycharm中conda环境配置
miniconda下载安装参考以下链接: https://blog.csdn.net/2301_76831056/article/details/143165738?fromshareblogdetail&sharetypeblogdetail&sharerId143165738&sharereferPC&sharesourceweixin_63339973&sharefromfrom_link (注…...
EasyExcel导出导入excel工具类
接上一篇EasyExcel导出导入excel的文章,附上一份完整的工具类代码。对于字体颜色名称,请参考这篇文章。 POI字体颜色 小技巧 类转换用属性拷贝不同类如果有相同属性,则使用反射验证,减少代码量 private List<Person> vali…...
终端SSH连接工具SecureCRT安装和连接Linux
SecureCRT 9.5是一款集终端仿真与加密功能于一身的专业软件,其坚如磐石的安全性、高效的信息传输能力以及高度可定制的会话管理,使得它成为众多用户的首选。该软件不仅支持SSH2、SSH1、Telnet等多种协议,还提供了Relogin、Serial、TAPI、RAW等…...
赛逸展2025“创新引擎”启动:限量席位,点亮科技绿色新征程
当今时代,科技革新与绿色发展已然成为推动社会进步的双引擎。2025第七届亚洲消费电子技术贸易展(赛逸展)敏锐捕捉这一趋势,重磅打造“科技创新专区”,并面向科技、绿色企业吹响限量招募号角。 这个独具特色的专区紧扣…...
Spring的 init-method, @PostConstruct, InitializingBean 对比
Spring的 init-method, PostConstruct, InitializingBean 对比 在Spring框架中,init-method、PostConstruct和InitializingBean都是用于定义Bean初始化后执行逻辑的机制,但它们在实现方式、耦合度、执行顺序及适用场景上有所不同。以下是它们的对比总结…...
Gogs 精简备份与恢复方案(仅SQLite数据库和配置)
一、备份方案设计 1. 备份内容 SQLite数据库文件:/home/git/gogs/data/gogs.db 配置和附件:/home/git/gogs/custom 整个目录 2. 备份策略 每周日凌晨2点执行完整备份 保留最近4周的备份文件 备份存储在独立分区 /backup(使用永久化挂载…...
FPGA实现数码管显示分秒时间
目录 一. verilog实现 二. 烧录验证 三. 结果验证 使用开发板:DE2-115开发板 一. verilog实现 要实现分和秒,需要知道定时器的频率,通过查手册可知,我使用的开发板时钟为50hz,也就是时钟一个周期是2微秒。 5000000…...
读书记录九之《在峡江的转弯处-陈行甲人生笔记》
距离上本读完的书,写读后感有很长一段时间了,中间读了几本书,但都没写点文字,没错,是懒病又犯了。陈行甲这本书,一开始从网络上推荐看到,看之前介绍是一本人物自传的回忆录。我个人对这类贴近的…...
可视化开发:用Qt实现Excel级动态柱状图
Qt柱状图 QtChart 首先我们介绍一下 图表建立的基础:Qt Charts QtChart 是Qt框架的一个模块,专注与提供交互式数据可视化功能 俗话就是 用于用户轻松创建各种类型的图表和图形界面 它包含的图表类型有很多:折线图,饼图&#x…...
从零实现Json-Rpc框架】- 项目实现 - 基于Dispatcher模块的RPC框架
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
kubekey -实现懒人一键部署K8S集群
kubekey -实现懒人一键部署K8S集群 操作步骤 官网: https://kubesphere.io/zh/ 一、执行以下命令快速创建一个 Kubernetes 集群。 Master节点 如果您访问 GitHub/Googleapis 受限,请登录 Linux 主机,执行以下命令设置下载区域。 [roottest ~]…...
Android设计模式之模板方法模式
一、定义: 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、结构: AbstractClass抽象类:定义算法的骨架,包含模板方法和若干…...
李宏毅机器学习笔记(1)—机器学习基本概念+深度学习基本概念
机器学习基本概念 1、获取模型 步骤 1.1、假定未知函数 带未知参数的函数 1.2、定义损失函数 真实值:label MAE MSE 几率分布,cross-entropy? 1.3、优化 单独考虑一个参数 让损失函数最小,找导数为零的点 单独考虑w,w…...
数字IC后端项目常见问题之streamOut layermap和innovus drc violation
Q1:我需要将Innovus设计GDS导出到Virtuoso,但发现写出GDS的过程会报如下所示的警告。这里写出GDS使用的是Virtuoso (DFII) streamOut mapping文件! Clock Gen模块Routing DRC,Timing分析及解决 streamOut tease.gds2 -mapFile cd…...
短剧系统开发动漫短剧系统源码开发上线小程序app教程
一、市场规模与用户增长:突破677亿,Z世代成主力 整体扩张 2025年短剧市场预计同比增长15%,规模达677.9亿元,用户规模6.62亿(占网民59.7%)。动漫短剧作为细分领域,增速显著受益于二次元文化渗透&…...
太阳能高杆路灯:照亮未来的新光
在全球能源转型进程加速以及可持续发展理念日益深入人心的背景下,太阳能高杆路灯作为融合新能源技术、智能控制技术与多功能集成特性的创新产品,正逐步革新传统路灯的格局。其不仅有效解决了传统路灯对电网供电的依赖问题,更为城市及乡村的照…...
《C++Linux编程进阶:从0实现muduo 》-第8讲.C++面试如何高效获取线程ID
章节重点 在C面试时,经常被问到如果高效获取线程ID,但不少同学都不知道如何回答。 重点是通过__thread关键字。 重点内容 视频讲解:《CLinux编程进阶:从0实现muduo C网络框架系列》-第8讲. C面试如何高效获取线程ID 测试获取线…...
【Tauri2】011——菜单menu(2)
前言 前面简单地创建了菜单,接下来就来试试菜单中的action Rust中菜单项注册action AppHandle in tauri - Rusthttps://docs.rs/tauri/2.4.0/tauri/struct.AppHandle.html#method.on_menu_event这就需要用到App或者AppHandle中的方法on_menu_event #[must_use] …...
架构设计基础系列:面向对象设计的原则
引言 面向对象设计(Object-Oriented Design,OOD)是软件开发中的重要概念,其核心在于通过对象、类、继承、封装和多态等机制,实现对现实世界问题的抽象和建模。OOD不仅有助于提高代码的可重用性、可维护性和可扩展性&a…...
UE5学习笔记 FPS游戏制作35 使用.csv配置文件
文章目录 导入.csv要求首先创建一个结构体导入配置文件读取配置 导入 .csv要求 第一行必须包含标题 第一列的内容必须不能重复,因为第一列会被当成行的名字,在数据处理中发挥类似于字典的key的作用 当前的配置文件内容如下 首先创建一个结构体 结构…...
嵌入式单片机ADC数模转换的基本方法
第一:模数转换的概述 1:模数转换的概念 一般在电路中,信号分为两种,一种是模拟信号,一种是数字信号,绝大多数传感器采集的都是模拟信号,如温度、湿度、烟雾浓度、亮度.......,但是对于计算机需要处理的数字信号,那就需要利用电路把模拟信号转换为数字信号,这个转换的…...
Web数据挖掘及其在电子商务中的研究与应用
标题:Web数据挖掘及其在电子商务中的研究与应用 内容:1.摘要 随着互联网的飞速发展,Web数据呈现出爆炸式增长,电子商务领域更是积累了海量数据。在此背景下,对Web数据进行有效挖掘并应用于电子商务具有重要意义。本研究旨在探索Web数据挖掘技…...
01-Docker 安装
1、安装环境介绍 安装环境:Linux CentOS 7 本安装教程参考Docker官方文档,地址如下:https://docs.docker.com/engine/install/centos/ 2、卸载旧版docker 首先如果系统中已经存在旧的Docker,则先卸载: yum remove do…...
Redis 的缓存雪崩、击穿、穿透及其解决办法
文章目录 Redis 的缓存雪崩、击穿、穿透及其解决办法缓存雪崩解决办法 缓存击穿解决方案 缓存穿透解决方案 Redis 的缓存雪崩、击穿、穿透及其解决办法 本篇文章回顾 Redis 当中缓存崩溃、击穿、穿透现象以及相应的解决办法,主要的参考资料是:https://w…...
