Linux系统下实现每小时CPU与内存自动监控方案

XMSDN
本方案基于Linux系统,通过结合top、free等系统命令与cron定时任务,实现每小时自动采集CPU使用率、内存占用率等关键指标,采集数据按时间戳存储至日志文件,支持后续分析与趋势追踪,方案无需额外依赖,通过简单脚本即可完成配置,有效满足系统资源长期监控需求,及时发现异常波动,保障系统稳定运行。

在Linux系统运维中,CPU和内存是核心性能指标,实时监控其使用情况能帮助管理员及时发现系统瓶颈、异常进程或潜在故障,本文将介绍如何通过Linux内置工具和定时任务,实现每小时自动检查CPU与内存使用率,并将监控结果记录到日志文件,为系统性能优化和故障排查提供数据支持。

监控需求与工具选择

监控目标

  • CPU使用率:包括用户态(%us)、系统态(%sy)、IO等待(%wa)等关键指标,判断CPU是否过载或存在瓶颈。
  • 内存使用率:包括已使用内存(used)、空闲内存(free)、可用内存(available)、缓冲/缓存(buff/cache)等,避免内存不足导致系统卡顿或进程OOM(Out of Memory)。

工具选择

  • 基础命令topfreevmstat(无需安装,系统自带,适合快速获取实时数据)。
  • 专业工具sysstat(包含mpstatsar等命令,可收集历史数据,生成趋势报告)。
  • 定时任务crontab(Linux内置定时工具,用于设置每小时自动执行监控脚本)。

基础方案:crontab+Shell脚本实现每小时监控

监控脚本设计

首先编写一个Shell脚本,通过topfree命令提取CPU与内存使用率,并将结果按时间格式记录到日志文件,脚本示例如下(/usr/local/bin/check_resources.sh):

#!/bin/bash
# 日志路径(建议创建专用目录,权限设为755)
LOG_DIR="/var/log/resource_monitor"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/resource_check_$(date +%Y%m%d).log"
# 时间戳(格式:2023-10-01 12:00:00)
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 获取CPU使用率(取用户态+系统态,排除IO等待和空闲)
# top -bn1:批处理模式,只刷新1次;grep "Cpu(s)":过滤CPU行;awk提取百分比并计算
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}' | cut -d'%' -f1)
# 获取内存使用率(已使用内存占比,排除buff/cache)
# free -m:以MB为单位显示内存;awk提取已使用和总内存,计算百分比
MEMORY_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
MEMORY_USED=$(free -m | awk '/Mem:/ {print $3}')
MEMORY_USAGE=$(awk "BEGIN {printf \"%.2f\", $MEMORY_USED/$MEMORY_TOTAL*100}")
# 获取可用内存(推荐关注,包含可回收的buff/cache)
MEMORY_AVAILABLE=$(free -m | awk '/Mem:/ {print $7}')
MEMORY_AVAILABLE_PERCENT=$(awk "BEGIN {printf \"%.2f\", $MEMORY_AVAILABLE/$MEMORY_TOTAL*100}")
# 写入日志文件(格式:时间戳|CPU使用率|内存使用率|可用内存(MB)|可用内存百分比)
echo "$TIMESTAMP|CPU: ${CPU_USAGE}%|Memory: ${MEMORY_USAGE}%|Available: ${MEMORY_AVAILABLE}MB|Available: ${MEMORY_AVAILABLE_PERCENT}%" >> "$LOG_FILE"
# 日志文件轮转(可选:保留30天日志,避免占用过多磁盘)
find "$LOG_DIR" -name "resource_check_*.log" -mtime +30 -exec rm {} \;

脚本权限与测试

  • 给脚本添加执行权限:
    chmod +x /usr/local/bin/check_resources.sh
  • 手动执行测试,确认日志文件生成:
    /usr/local/bin/check_resources.sh
    cat /var/log/resource_monitor/resource_check_$(date +%Y%m%d).log

    预期输出示例:

    Linux系统下实现每小时CPU与内存自动监控方案

    
    2023-
💡 温馨提示

📌 阅读须知 Rules & Notice

本站坚持免费分享,致力于为大家提供实用、优质的内容与资源。

🔗欢迎大家收藏与转发,转载请保留本站链接,请勿私自去除版权信息。

📚所有外部整理资源,仅作学习交流使用,请勿用于各类商业用途。

🤝网络相聚本是缘分,希望大家文明交流,理性浏览。

🛠️若发现内容有误或涉及侵权,我们将第一时间处理整改。

💖 感谢每一位朋友的陪伴与支持

✨ 用心分享,一路同行 ✨

目录[+]