Linux服务器系统日志分析实操指南

为什么要分析Linux服务器系统日志

无论是新装的服务器还是运行多年的业务,系统日志都是最重要的排错线索。日志记录了内核、服务、登录、硬件等几乎一切状态变化
当你遇到网站打不开、SSH连不上、磁盘报警时,第一个该去的地方就是日志。

准备工作:先确认能访问日志

  • 你至少需要一台Linux服务器(本文以CentOS 7/8、Ubuntu 20.04为例)
  • 拥有普通sudo权限或root权限(大部分日志默认只有管理员可看)
  • 确认systemd-journald工作正常:
systemctl status systemd-journald

如果没有运行,先启动:sudo systemctl start systemd-journald

三个最常用的日志查看方法

1. 最通用:/var/log/ 目录下的文件

传统的日志存储在/var/log/下,常见文件包括:

  • /var/log/messages(大多数系统消息,CentOS 6及更早版本)
  • /var/log/syslog(Ubuntu、Debian)
  • /var/log/secure(认证与安全日志)
  • /var/log/maillog(邮件服务)
  • /var/log/cron(计划任务)

查看最新50行

sudo tail -50 /var/log/messages

实时跟踪新增日志

sudo tail -f /var/log/messages

按关键词过滤

sudo grep "error" /var/log/messages

结合less分页查看

sudo less /var/log/messages

(按/输入关键词搜索,按n跳转下一个匹配)

2. 现代系统首选:journalctl

journald(systemd的日志组件)把日志集中管理,格式更友好。

查看所有日志journalctl

查看本次启动以来的日志

journalctl -b

只显示指定服务

journalctl -u nginx.service

查看指定时间段的日志

journalctl --since "2025-04-01 10:00:00" --until "2025-04-01 11:00:00"

实时跟踪(类似tail -f)

journalctl -f

3. 内核日志专用:dmesg

硬件、驱动、内核模块的信息通常用dmesg查看:

dmesg | less

查看最后20条

dmesg | tail -20

过滤磁盘相关

dmesg | grep -i sda

高频问题与解决思路

问题1:/var/log/messages 文件巨大,打不开

  • 原因:日志积累过多,未轮转。
  • 临时处理:用tail -200只看尾部,或grep配合时间范围。
  • 根本解决:检查logrotate配置(/etc/logrotate.conf/etc/logrotate.d/),确认轮转周期并强制轮转:sudo logrotate -f /etc/logrotate.conf

问题2:journalctl 报错 “Cannot set file group: Operation not permitted”

  • 解决方案:当前用户没有权限。使用sudo journalctl即可。

问题3:SSH登录失败,想查原因

  • 查看/var/log/secure(或auth.log)中的Failed password记录:
sudo grep "Failed password" /var/log/secure
  • 或使用journalctl专门过滤sshd:
sudo journalctl -u sshd --since today | grep "Failed password"

避坑指南

  1. 时间同步很重要——日志时间是排查的基准。务必运行timedatectl set-ntp true,并用chronyc sources -v检查同步状态。
  2. 不要直接删除日志文件——直接rm会导致写日志的进程失去文件句柄,可能崩溃。正确做法是::> /var/log/messages(清空内容)或使用logrotate。
  3. 区分“系统日志”与“应用日志”——比如Nginx的错误日志在/var/log/nginx/error.log,MySQL在/var/log/mysql/error.log。系统日志只记录OS层面的问题,应用问题需要看各自日志。
  4. 日志太多时优先用grep -i errorjournalctl -p err,只显示警告级别以上的消息,节省时间。

效果验证:确认刚才的操作有效

执行以下命令,验证你已掌握基础分析能力:

# 查看最近5次系统重启记录
last reboot | head -5

# 查看当前内核启动日志中是否有硬件错误
dmesg --level=err | tail -10

# 查看sshd服务昨天是否被爆破
sudo journalctl -u sshd --since yesterday --until today | grep "Failed password" | wc -l

如果输出数字不为0,说明你成功定位到了不安全登录尝试。
下一步可以配置Fail2ban或修改SSH端口来加固。

如果你正在处理Linux服务器系统日志分析,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
WordPress网站安全扫描全攻略:零基础也能排查风险
下一篇
手把手教你用Docker部署Registry私有镜像仓库
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意