Skip to content

第15章:日志管理

15.1 日志文件的位置

系统日志目录

  • /var/log/:系统日志文件的默认存储位置
  • 常见日志文件:
    • syslog:系统日志
    • auth.log:认证日志(Ubuntu/Debian)
    • secure:安全日志(CentOS/RHEL)
    • messages:系统消息日志(CentOS/RHEL)
    • kern.log:内核日志
    • boot.log:启动日志
    • cron.log:定时任务日志
    • dpkg.log:包管理日志(Ubuntu/Debian)
    • yum.log:包管理日志(CentOS/RHEL)

应用程序日志

  • Web服务器日志

    • Apache:/var/log/apache2/
    • Nginx:/var/log/nginx/
  • 数据库日志

    • MySQL:/var/log/mysql/
    • PostgreSQL:/var/log/postgresql/
  • 其他应用日志

    • Docker:/var/log/docker/
    • Samba:/var/log/samba/

15.2 查看系统日志、错误日志

使用cat命令查看日志

  • 查看完整日志文件:

    bash
    $ cat /var/log/syslog
  • 查看日志文件的最后几行:

    bash
    $ tail /var/log/syslog
    $ tail -n 50 /var/log/syslog  # 查看最后50行
  • 实时查看日志:

    bash
    $ tail -f /var/log/syslog  # 实时跟踪日志

使用grep命令搜索日志

  • 搜索包含特定关键词的日志:

    bash
    $ grep "error" /var/log/syslog  # 搜索包含error的日志
    $ grep -i "error" /var/log/syslog  # 忽略大小写
    $ grep -n "error" /var/log/syslog  # 显示行号
  • 搜索特定时间的日志:

    bash
    $ grep "May 20" /var/log/syslog  # 搜索5月20日的日志

使用journalctl命令查看systemd日志

  • 查看所有日志:

    bash
    $ sudo journalctl
  • 查看特定服务的日志:

    bash
    $ sudo journalctl -u sshd  # 查看SSH服务日志
  • 查看最近的日志:

    bash
    $ sudo journalctl -n 100  # 查看最近100条日志
  • 实时查看日志:

    bash
    $ sudo journalctl -f  # 实时跟踪日志
  • 查看特定时间范围的日志:

    bash
    $ sudo journalctl --since "2023-05-20 00:00:00" --until "2023-05-20 23:59:59"

15.3 通过日志排查系统故障

常见故障排查

启动故障

  1. 查看启动日志:

    bash
    $ sudo journalctl -b  # 查看当前启动的日志
    $ sudo journalctl -b -1  # 查看上一次启动的日志
  2. 检查启动失败的服务:

    bash
    $ sudo systemctl list-units --state=failed
  3. 查看具体服务的启动日志:

    bash
    $ sudo journalctl -u 服务名

网络故障

  1. 查看网络相关日志:

    bash
    $ grep "network" /var/log/syslog
    $ sudo journalctl -u NetworkManager
  2. 查看DHCP相关日志:

    bash
    $ grep "dhcp" /var/log/syslog

认证故障

  1. 查看认证日志:

    • Ubuntu/Debian:
      bash
      $ cat /var/log/auth.log
    • CentOS/RHEL:
      bash
      $ cat /var/log/secure
  2. 搜索登录失败记录:

    bash
    $ grep "Failed" /var/log/auth.log

应用程序故障

  1. 查看应用程序日志:

    • Nginx:
      bash
      $ cat /var/log/nginx/error.log
    • Apache:
      bash
      $ cat /var/log/apache2/error.log
  2. 搜索应用程序错误:

    bash
    $ grep "error" /var/log/nginx/error.log

日志分析技巧

  1. 关注错误关键词

    • error
    • failed
    • denied
    • cannot
    • permission
    • timeout
  2. 查看时间戳

    • 确认故障发生的具体时间
    • 分析故障发生的顺序
  3. 关联多个日志文件

    • 系统日志与应用日志结合分析
    • 不同服务的日志相互关联
  4. 使用日志分析工具

    • logwatch:日志分析工具
    • logrotate:日志轮转管理
    • ELK Stack(Elasticsearch, Logstash, Kibana):企业级日志分析平台

实战练习:日志管理

  1. 查看系统日志:

    bash
    $ tail -n 50 /var/log/syslog
  2. 搜索系统错误:

    bash
    $ grep "error" /var/log/syslog | tail -n 20
  3. 查看认证日志:

    • Ubuntu/Debian:
      bash
      $ tail -n 50 /var/log/auth.log
    • CentOS/RHEL:
      bash
      $ tail -n 50 /var/log/secure
  4. 使用journalctl查看日志:

    bash
    $ sudo journalctl -n 100
    $ sudo journalctl -u sshd -n 50
  5. 实时查看日志:

    bash
    $ tail -f /var/log/syslog
  6. 查看启动日志:

    bash
    $ sudo journalctl -b
  7. 搜索特定时间的日志:

    bash
    $ grep "$(date +"%b %d")" /var/log/syslog

通过学习日志管理,你将能够查看和分析系统日志,及时发现和排查系统故障,确保系统的稳定运行。日志是系统的"黑匣子",掌握日志管理技能对于系统管理员来说非常重要。

© 2026 编程马·菜鸟教程 版权所有