日志与监控
查看系统日志
dmesg # 内核日志(硬件、驱动)
dmesg -T # 显示人类可读时间
dmesg | grep -i error # 只看错误
dmesg -w # 实时跟踪内核日志
journalctl # systemd 日志(推荐)
journalctl -u nginx # 查看某服务的日志
journalctl -u nginx -f # 实时跟踪某服务日志
journalctl --since "2024-01-01 10:00" --until "2024-01-01 11:00" # 按时间范围
journalctl -p err -b # 本次开机以来的错误级日志
journalctl --disk-usage # 日志占用
journalctl --vacuum-size=200M # 清理日志至 200M 内
常见的 /var/log 日志位置
| 文件 | 内容 |
|---|---|
/var/log/syslog / /var/log/messages | 系统综合日志 |
/var/log/auth.log / /var/log/secure | 登录认证日志 |
/var/log/nginx/access.log、error.log | nginx 访问/错误日志 |
/var/log/cron | 定时任务日志 |
/var/log/dpkg.log / /var/log/yum.log | 软件安装日志 |
/var/log/boot.log | 开机日志 |
跟踪与分析
tail -f /var/log/nginx/error.log # 实时跟踪日志(最常用)
tail -f -n 100 file # 先看末尾 100 行再跟踪
grep -E "ERROR|FATAL" error.log | tail -20 # 过滤错误
tail -1000 access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head # Top 访问 IP
logrotate -f /etc/logrotate.d/nginx # 手动执行日志切割
排查时优先 journalctl -p err -b 与 tail -f 双开。
系统性能监控
top / htop # 实时 CPU、内存、进程
vmstat 1 # 每秒刷新:cpu、内存、io、上下文切换
free -h # 内存现状
iostat -x 1 # 磁盘 io
sar -u 1 5 # CPU 使用率采样 5 次(sysstat)
sar -r 1 # 内存采样
sar -n DEV 1 # 网卡流量采样
uptime # 负载情况(1/5/15 分钟)
负载判断经验:负载 ≈ CPU 核数附近为正常;持续数倍则 CPU 或 IO 瓶颈。
追查资源占用
ps aux --sort=-%mem | head -5 # 内存占用 Top5
ps aux --sort=-%cpu | head -5 # CPU 占用 Top5
ss -tlnp # 端口监听与进程
lsof -i :80 # 端口占用
lsof -p PID # 某进程打开的所有文件
lsof | grep deleted # 已删除但仍被占用的文件(占磁盘常见的坑)
strace -p PID # 跟踪进程系统调用(调试卡死进程)
网络监控
iftop # 实时带宽(需安装)
nload # 网卡流量图表
nethogs # 按进程查看流量
bmon / vnstat # 长期流量统计
常用监控工具包
apt install sysstat htop dstat # Debian 系
dnf install sysstat htop dstat # RHEL 系
生产环境可组合:
vmstat+sar采样落盘,再配 zabbix/prometheus-node-exporter 做周期性采集。