CentOS系统监控脚本是确保服务器稳定运行的重要工具,它能够实时收集系统资源使用情况、服务状态及性能指标,帮助管理员及时发现并解决问题,以下将从监控脚本的设计原则、核心功能实现、部署方法及优化建议等方面进行详细阐述。

监控脚本的设计原则
设计高效的监控脚本需遵循几个基本原则:轻量化是关键,避免脚本占用过多系统资源,反而在监控过程中影响服务器性能。模块化设计便于扩展,例如将CPU、内存、磁盘等监控项拆分为独立模块,方便后续新增或修改功能。可配置性至关重要,通过配置文件灵活定义监控阈值、日志路径等参数,适应不同业务场景需求。
核心功能实现
一个完整的CentOS系统监控脚本通常包含以下核心功能模块:
CPU监控
通过/proc/loadavg或top命令获取系统负载平均值,监控1分钟、5分钟和15分钟的负载情况,可结合mpstat命令分析CPU各核心的使用率,判断是否存在性能瓶颈,当15分钟负载超过CPU核心数时触发告警。内存监控
利用free命令统计总内存、已用内存、空闲内存及缓冲区使用情况,重点监控MemAvailable(可用内存)指标,避免因内存不足导致服务崩溃,若可用内存低于设定阈值(如总内存的10%),则记录日志并发送告警。磁盘监控
通过df -h命令检查各分区的使用率,特别关注根分区()和日志分区(如/var/log),当磁盘使用率超过90%时,脚本需自动清理临时文件或通知管理员扩容,同时监控磁盘I/O性能,如使用iostat命令分析读写速率。
网络监控
监控网络流量、连接数及端口状态,通过iftop或nload命令实时查看带宽使用情况,结合netstat或ss命令检查异常连接(如大量TIME_WAIT状态),需验证关键服务端口(如80、22)是否可达,确保网络服务正常。服务状态监控
使用systemctl status或service命令检查核心服务(如httpd、mysql、nginx)的运行状态,若服务异常退出,脚本可尝试自动重启并记录故障信息,同时通过邮件或短信发送告警。
脚本部署与执行
监控脚本通常以Shell或Python语言编写,以下是Shell脚本的简单示例框架:
#!/bin/bash
# 监控CPU负载
load_avg=$(uptime | awk -F'load average:' '{ print $2 }')
echo "当前负载: $load_avg"
# 监控内存使用
mem_usage=$(free | grep Mem | awk '{printf "%.2f", $3/$2 * 100.0}')
echo "内存使用率: $mem_usage%"
# 监控磁盘使用
disk_usage=$(df -h / | awk 'NR==2{print $5}')
echo "根分区使用率: $disk_usage" 部署时,可将脚本保存为monitor.sh,赋予执行权限(chmod +x monitor.sh),并通过crontab定时执行,例如每5分钟运行一次:
*/5 * * * * /path/to/monitor.sh >> /var/log/monitor.log 2>&1
日志与告警机制
监控脚本的日志记录需包含时间戳、监控项及异常值,便于后续分析,告警机制可通过邮件(使用mail命令或sendmail)或即时通讯工具(如企业微信、钉钉机器人)实现,当内存使用率超过阈值时,发送告警邮件:

if (( $(echo "$mem_usage > 80" | bc -l) )); then
echo "内存使用率过高: $mem_usage%" | mail -s "系统告警" admin@example.com
fi 优化与扩展建议
为提升监控效率,可采取以下优化措施:
- 减少资源消耗:避免频繁调用高开销命令,如用
/proc/stat替代top获取CPU数据。 - 数据持久化:将监控数据写入数据库(如InfluxDB),结合Grafana实现可视化展示。
- 智能告警:引入滑动窗口算法,避免短时间内重复告警;支持分级告警(如警告、严重、紧急)。
- 安全加固:限制脚本执行权限,避免敏感信息(如密码)硬编码在脚本中。
相关问答FAQs
Q1:如何避免监控脚本对系统性能造成影响?
A1:通过轻量化设计(如减少命令调用次数)、合理设置监控间隔(如5-10分钟),以及将脚本优先级调低(使用nice命令)来降低资源消耗,可结合ionice优化I/O优先级,避免磁盘争用。
Q2:监控脚本如何实现自动化故障处理?
A2:通过预定义故障处理逻辑实现自动化,例如检测到服务异常时尝试重启(systemctl restart service_name),磁盘空间不足时清理/tmp目录(rm -rf /tmp/*),并在处理失败后触发人工介入告警。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复