本文目录导读:

是的,脚本完全可以监控内存使用率并在超过阈值时发送告警。
下面为您提供几个不同场景下的脚本方案,包括 Linux 和 Windows 系统,以及多种告警方式(邮件、钉钉/微信、终端告警)。
Linux 系统 (Bash 脚本)
这是最常用、最灵活的方式。
核心命令:free
#!/bin/bash
# 告警阈值(百分比)
THRESHOLD=80
# 检查间隔(秒)
INTERVAL=60
while true; do
# 获取内存使用率(精确到整数)
# free 命令输出示例:
# total used free shared buff/cache available
# Mem: 8010000 5000000 1000000 200000 2010000 2500000
USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
if [ $USAGE -gt $THRESHOLD ]; then
echo "[$(date)] 警告: 内存使用率已达 ${USAGE}% (阈值: ${THRESHOLD}%)"
# 在这里添加告警命令 (见下方“告警方法”)
fi
sleep $INTERVAL
done
告警方法(可选用一种或多种):
-
终端弹窗(桌面环境):
notify-send "内存告警" "内存使用率已达 ${USAGE}%" -
发送邮件(需安装
mail或mailx):echo "内存使用率已达 ${USAGE}%" | mail -s "服务器内存告警" your-email@example.com -
发送钉钉/企业微信机器人消息(需要 webhook URL):
curl -s -X POST "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"服务器内存告警: 当前使用率 ${USAGE}%\"}}"
Windows 系统 (PowerShell 脚本)
适合在 Windows 服务器上运行。
# 告警阈值(百分比)
$Threshold = 80
# 检查间隔(秒)
$Interval = 60
while ($true) {
# 获取内存使用率
$OS = Get-CimInstance Win32_OperatingSystem
$UsedMemory = $OS.TotalVisibleMemorySize - $OS.FreePhysicalMemory
$TotalMemory = $OS.TotalVisibleMemorySize
$Usage = [math]::Round(($UsedMemory / $TotalMemory) * 100, 0)
if ($Usage -gt $Threshold) {
$Time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$Message = "[$Time] 警告: 内存使用率已达 ${Usage}% (阈值: ${Threshold}%)"
# 输出到控制台
Write-Host $Message -ForegroundColor Red
# 告警方法示例
# 发送邮件(需配置 Send-MailMessage)
# Send-MailMessage -To "admin@example.com" -From "alerts@example.com" -Subject "内存告警" -Body $Message -SmtpServer "smtp.example.com"
# 写入 Windows 事件日志(可在事件查看器中查看)
Write-EventLog -LogName Application -Source "MemoryMonitor" -EntryType Warning -EventId 1001 -Message $Message
}
Start-Sleep -Seconds $Interval
}
更专业的监控方案(推荐用于生产环境)
虽然脚本简单有效,但在生产环境中,通常建议使用专门的监控工具,它们更稳定、易于管理,并且自带告警功能。
| 工具 | 优点 | 适用场景 |
|---|---|---|
| Prometheus + Alertmanager | 工业级,可扩展性强,支持复杂告警规则 | 大型分布式系统、容器化环境 (K8s) |
| Zabbix | 功能全面,自带告警和可视化 | 传统服务器、网络设备监控 |
| Grafana + 告警机制 | 和 Prometheus 结合使用,图形化极佳 | 需要良好可视化展示的场景 |
| 系统自带工具 | 如 Linux 的 top、htop,Windows 的资源监视器 |
临时快速查看或最简单的脚本监控 |
- 脚本方案:简单、快捷、灵活,适合个人或小规模、非核心业务的监控。上述 Bash 和 PowerShell 脚本可以直接使用。
- 工具方案:更可靠、功能更强大、维护更容易,适合企业级或生产环境。
您可以根据自己的环境和需求选择一个方案,如果只是想快速搭一个脚本,上面给出的 Linux 或 Windows 脚本代码已经可以直接复制运行。