脚本能监控内存使用率并告警吗?

wen 实用脚本 3

本文目录导读:

脚本能监控内存使用率并告警吗?

  1. Linux 系统 (Bash 脚本)
  2. Windows 系统 (PowerShell 脚本)
  3. 更专业的监控方案(推荐用于生产环境)

是的,脚本完全可以监控内存使用率并在超过阈值时发送告警。

下面为您提供几个不同场景下的脚本方案,包括 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}%"
  • 发送邮件(需安装 mailmailx):

    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 的 tophtop,Windows 的资源监视器 临时快速查看或最简单的脚本监控
  1. 脚本方案:简单、快捷、灵活,适合个人或小规模、非核心业务的监控。上述 Bash 和 PowerShell 脚本可以直接使用
  2. 工具方案:更可靠、功能更强大、维护更容易,适合企业级或生产环境。

您可以根据自己的环境和需求选择一个方案,如果只是想快速搭一个脚本,上面给出的 Linux 或 Windows 脚本代码已经可以直接复制运行

抱歉,评论功能暂时关闭!