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 "系统告警: 内存使用率过高"

继续学习

掌握了系统监控后,继续学习更多高级主题