一、手动检查命令(基础项)
1. 系统资源监控
内存使用:
free -h # 查看内存和交换空间使用情况
cat /proc/meminfo | grep -i "memavailable" # 查看可用内存
CPU 负载:
top -n 1 -b | grep "load average" # 查看负载(1/5/15分钟)
uptime # 系统运行时间及负载
磁盘空间:
df -h # 查看各分区使用情况
du -sh /var/* # 检查特定目录(如 /var)占用
2. 日志检查
关键错误日志:
journalctl -p 3 -b --since "24 hours ago" # 查看过去24小时的系统级错误(优先级3及以上)
grep -i "error\|warning" /var/log/syslog # 过滤系统日志中的错误和警告
tail -n 100 /var/log/auth.log # 检查认证日志(SSH登录等)
3. 磁盘健康
SMART 状态(需安装 smartmontools):
sudo smartctl -a /dev/sda | grep "SMART overall-health" # 检查磁盘健康状态
坏块检测:
sudo badblocks -v /dev/sda # 仅测试读操作(谨慎使用写测试)
4. 网络与服务状态
网络连接:
ss -tulnp | grep -E "LISTEN|ESTAB" # 查看监听和已建立连接
netstat -ant | grep "SYN_SENT" # 检查异常连接(如 SYN 洪水攻击)
服务状态:
systemctl --failed # 列出失败的服务
systemctl status nginx mysql # 检查关键服务(如 Nginx/MySQL)
5. 安全更新与补丁
检查可用更新:
sudo apt update && apt list --upgradable # 列出可升级的包
二、自动化检查(推荐方案)
1. 编写检查脚本
创建脚本 /usr/local/bin/system_check.sh,内容示例:
#!/bin/bash
# 定义日志文件
LOG_FILE="/var/log/daily_system_check.log"
# 清空旧日志
> $LOG_FILE
# 资源检查
echo "===== 系统资源 =====" >> $LOG_FILE
free -h >> $LOG_FILE
echo -e "\nCPU 负载:" >> $LOG_FILE
uptime >> $LOG_FILE
echo -e "\n磁盘使用:" >> $LOG_FILE
df -h >> $LOG_FILE
# 服务状态
echo -e "\n===== 服务状态 =====" >> $LOG_FILE
systemctl --failed >> $LOG_FILE
# 日志错误检查
echo -e "\n===== 错误日志 =====" >> $LOG_FILE
journalctl -p 3 -b --since "24 hours ago" | tail -n 20 >> $LOG_FILE
# 发送邮件通知(需配置邮件服务)
# mail -s "Daily System Check" admin@example.com < $LOG_FILE
2. 设置定时任务
通过 cron 每日执行:
sudo crontab -e
添加以下行(每天凌晨3点执行)
0 3 * * * /usr/local/bin/system_check.sh
3. 日志监控工具(可选)
使用 logwatch 或 fail2ban 分析日志。
部署监控系统(如 Prometheus + Grafana)实现可视化。
三、关键注意事项
备份验证:每日检查备份文件是否生成(如 ls -lh /backups)。
安全审计:定期运行 lynis audit system 进行深度安全检查。
硬件传感器(安装 lm-sensors):
sensors # 查看 CPU/主板温度
四、进阶建议
使用 Nagios/Zabbix 实现自动化监控和告警。
启用 Automatic Security Updates:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades # 启用自动安全更新
通过以上步骤,可以全面监控 Ubuntu 系统的健康状态,及时发现问题并处理。