Linux 系统监控
学习系统性能监控、资源管理和故障诊断,确保系统稳定运行
监控概述
系统监控是运维工作的核心,通过实时监控系统资源使用情况、性能指标和运行状态, 可以及时发现问题并采取相应措施,确保系统稳定高效运行。
CPU 监控
处理器使用率和负载
内存监控
内存使用和交换空间
磁盘监控
存储空间和I/O性能
性能分析
系统性能趋势分析
CPU 和负载监控
实时CPU监控
# 查看CPU使用率
top
htop
vmstat 1
# 查看系统负载
uptime
w
cat /proc/loadavg
CPU详细信息
# CPU信息
lscpu
cat /proc/cpuinfo
# CPU使用统计
sar -u 1 5
iostat -c 1 5
进程CPU使用
# 按CPU使用率排序
ps aux --sort=-%cpu | head -10
# 实时进程监控
top -o %CPU
htop -s PERCENT_CPU
内存监控
内存使用情况
# 查看内存使用
free -h
cat /proc/meminfo
# 实时内存监控
vmstat 1
sar -r 1 5
进程内存使用
# 按内存使用排序
ps aux --sort=-%mem | head -10
# 详细内存信息
pmap -d PID
cat /proc/PID/status
交换空间监控
# 查看交换空间
swapon -s
cat /proc/swaps
# 交换使用统计
sar -S 1 5
磁盘和I/O监控
磁盘空间监控
# 查看磁盘使用
df -h
du -sh /*
# 查找大文件
find / -size +100M -type f 2>/dev/null
ncdu /
I/O性能监控
# I/O统计
iostat -x 1 5
sar -d 1 5
# 实时I/O监控
iotop
iftop
磁盘健康检查
# SMART信息
smartctl -a /dev/sda
smartctl -H /dev/sda
# 磁盘错误检查
dmesg | grep -i error
journalctl -u systemd-fsck@
系统监控工具
命令行监控工具
基础工具
- top/htop - 进程监控
- vmstat - 系统统计
- iostat - I/O统计
- sar - 系统活动报告
高级工具
- iotop - I/O监控
- nethogs - 网络监控
- atop - 全面监控
- glances - 系统概览
监控脚本示例
#!/bin/bash
# 系统监控脚本
LOG_FILE="/var/log/system_monitor.log"
THRESHOLD_CPU=80
THRESHOLD_MEM=90
THRESHOLD_DISK=85
# CPU检查
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
if (( $(echo "$CPU_USAGE > $THRESHOLD_CPU" | bc -l) )); then
echo "$(date): CPU使用率过高: $CPU_USAGE%" >> $LOG_FILE
fi
# 内存检查
MEM_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
if [ $MEM_USAGE -gt $THRESHOLD_MEM ]; then
echo "$(date): 内存使用率过高: $MEM_USAGE%" >> $LOG_FILE
fi
告警和通知
设置告警阈值
推荐阈值
- CPU使用率 > 80%
- 内存使用率 > 90%
- 磁盘使用率 > 85%
- 负载 > CPU核心数
关键指标
- 服务停止运行
- 磁盘空间不足
- 网络连接异常
- 系统错误日志
通知方式配置
# 邮件通知
echo "系统告警: CPU使用率过高" | mail -s "系统告警" [email protected]
# 短信通知 (使用API)
curl -X POST "https://api.sms.com/send" \
-d "phone=13800138000&message=系统告警"
# 日志记录
logger -p local0.warning "系统告警: 内存使用率过高"