要在 CentOS 上使用 cpustat
实现自动化监控,可以结合 cron
定时任务和脚本编写来实现。以下是详细的步骤:
sysstat
包首先,确保已经安装了 sysstat
包,因为 cpustat
是该包的一部分。
sudo yum install sysstat -y
创建一个脚本文件,例如 /usr/local/bin/monitor_cpu.sh
,并添加以下内容:
#!/bin/bash
# 设置输出文件路径
output_file="/var/log/cpu_usage.log"
# 获取当前日期和时间
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
# 使用 cpustat 获取 CPU 使用率,并格式化输出
cpustat -c 1 1 | awk 'NR>1 {print $0 " " timestamp}' >> "$output_file"
解释:
cpustat -c 1 1
:每秒采样一次 CPU 使用率,共采样一次。awk 'NR>1 {print $0 " " timestamp}'
:跳过标题行,并在每行末尾添加时间戳。>> "$output_file"
:将输出追加到日志文件中。sudo chmod +x /usr/local/bin/monitor_cpu.sh
使用 cron
来定期运行脚本。编辑当前用户的 crontab 文件:
crontab -e
添加以下行来每分钟运行一次脚本:
* * * * * /usr/local/bin/monitor_cpu.sh
保存并退出编辑器。
确保 cron
服务正在运行,并且定时任务已正确添加:
sudo systemctl status crond
查看日志文件 /var/log/cpu_usage.log
以验证输出:
tail -f /var/log/cpu_usage.log
如果希望在 CPU 使用率超过某个阈值时收到邮件通知,可以在脚本中添加邮件发送功能。例如,使用 mail
命令:
#!/bin/bash
# 设置输出文件路径
output_file="/var/log/cpu_usage.log"
# 获取当前日期和时间
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
# 使用 cpustat 获取 CPU 使用率,并格式化输出
cpu_usage=$(cpustat -c 1 1 | awk 'NR>1 {print $0 " " timestamp}')
# 将输出追加到日志文件中
echo "$cpu_usage" >> "$output_file"
# 检查 CPU 使用率是否超过阈值(例如 80%)
if [[ $(echo "$cpu_usage" | awk '{print $3}') > 80 ]]; then
# 发送邮件通知
echo "CPU usage is high: $cpu_usage" | mail -s "High CPU Usage Alert" your_email@example.com
fi
确保系统已配置邮件发送功能(例如使用 postfix
或 sendmail
),并且 mail
命令可用。
通过以上步骤,你可以在 CentOS 上实现 cpustat
的自动化监控,并根据需要发送警报通知。