系统巡检脚本分享:守护服务器的“健康卫士”
在日常的运维工作中,系统巡检是一项至关重要的任务。它可以帮助我们及时发现服务器的潜在问题,确保系统的稳定运行。今天,我想和大家分享一个实用的系统巡检脚本,它能够帮助我们快速、全面地检查服务器的健康状况。
一、为什么需要系统巡检脚本?
随着业务的不断发展,服务器的数量和复杂性也在不断增加。手动巡检不仅耗时耗力,而且容易遗漏一些关键问题。而一个自动化、标准化的巡检脚本可以:
-
节省时间:自动完成重复的检查任务,释放运维人员的时间去处理更复杂的问题。
-
提高准确性:避免人为失误,确保每次巡检都能覆盖所有关键指标。
-
快速发现问题:及时发现潜在的性能瓶颈、资源不足或配置错误,避免问题扩大化。
-
记录历史数据:方便后续分析和回溯,为优化和故障排查提供依据。
二、巡检脚本的功能
我们的系统巡检脚本主要涵盖以下几个方面:
1. 系统基本信息
-
主机名、IP地址:确认服务器的身份。
-
版本操作系统:确保系统环境符合要求。
-
内核版本:检查内核是否有更新或潜在兼容性问题。
2. 硬件资源
-
CPU使用率:检查CPU是否过载。
-
内存使用情况:查看内存使用率和剩余空间。
-
磁盘空间:检查磁盘使用率,避免磁盘空间不足导致服务中断。
-
网络连接:查看网络接口状态,确保网络连接正常。
3. 关键服务状态
-
Web服务(如Nginx、Apache):检查服务是否正常运行。
-
数据库服务(如MySQL、PostgreSQL):确保数据库服务可用。
-
消息队列服务(如RabbitMQ、RocketMQ):检查消息队列服务是否正常。
4. 安全检查
-
防火墙状态:确认防火墙是否启用并配置正确。
-
用户登录记录:检查是否有异常登录行为。
-
系统日志:查看系统日志,发现潜在的安全问题。
5. 性能指标
-
系统负载:查看系统负载情况,评估服务器的整体压力。
-
进程监控:检查关键进程的资源占用情况,发现异常进程。
三、巡检脚本示例
以下是一个基于Linux系统的巡检脚本示例,使用Shell编写。你可以根据实际需求进行修改和扩展。
bash复制
#!/bin/bash
# 定义日志文件路径
LOG_FILE="/var/log/system_health_check.log"
# 写入日志函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}
# 系统基本信息
log "===== 系统基本信息 ====="
log "主机名: $(hostname)"
log "IP地址: $(hostname -I)"
log "操作系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d '=' -f2)"
log "内核版本: $(uname -r)"
# 硬件资源
log "===== 硬件资源 ====="
log "CPU使用率: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')%"
log "内存使用情况: $(free -m | grep Mem | awk '{print $3"MB/"$2"MB"}')"
log "磁盘空间: $(df -h | grep /dev/sda1 | awk '{print $5}')"
log "网络连接状态: $(ping -c 4 8.8.8.8 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')"
# 关键服务状态
log "===== 关键服务状态 ====="
log "Nginx服务状态: $(systemctl is-active nginx)"
log "MySQL服务状态: $(systemctl is-active mysql)"
log "RabbitMQ服务状态: $(systemctl is-active rabbitmq-server)"
# 安全检查
log "===== 安全检查 ====="
log "防火墙状态: $(systemctl is-active firewalld)"
log "最近用户登录记录: $(last | head -5)"
# 性能指标
log "===== 性能指标 ====="
log "系统负载: $(uptime | awk -F'average: ' '{print $2}')"
log "关键进程监控: $(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10)"
log "===== 巡检完成 ====="
脚本使用说明
-
将上述脚本保存为
system_health_check.sh
。 -
赋予脚本执行权限:
chmod +x system_health_check.sh
。 -
运行脚本:
./system_health_check.sh
。 -
检查日志文件:
cat /var/log/system_health_check.log
。
四、定期执行巡检脚本
为了确保系统巡检的持续性和有效性,可以将巡检脚本加入定时任务(Cron Job),每天定时执行。
bash复制
# 编辑Cron任务
crontab -e
# 添加以下内容,每天凌晨2点执行巡检脚本
0 2 * * * /path/to/system_health_check.sh
五、总结
系统巡检脚本是运维工作中不可或缺的工具。通过自动化巡检,我们可以及时发现并解决问题,确保服务器的稳定运行。希望这篇博客能为你提供一些有用的思路和参考。如果你有任何改进意见或更复杂的巡检需求,欢迎在评论区留言,我们一起探讨!