系统日志
100%

日志 · 第 1 课

系统日志

学习 Linux 日志源、收集器、存储和查看工具如何协同工作。

日志记录由内核、服务、应用程序和安全组件发出的事件。它们可以帮助排查问题和审计,但前提是收集功能正常、时间戳得到正确理解,并且相关来源已包含在内。

跟踪一条日志消息

一条日志路径包含几个不同的环节:

  1. 来源发出事件。
  2. 收集器接收事件并补充信息。
  3. 路由和保留规则选择存储位置或转发目的地。
  4. 查看工具查询已存储的记录。

在 systemd 主机上,systemd-journald 通常会收集服务标准输出、内核消息,以及 journal 原生消息或 syslog 消息。rsyslog 等 syslog 守护进程也可以接收消息,将其写入传统文本文件或转发出去。应用程序也可能自行维护文件或外部遥测数据。

哪个部分决定已接收的消息存储到哪里或转发到哪里?

查找可用日志

不要假定每台主机都有相同的文件。应检查活动的日志服务和本地配置:

$ systemctl --type=service --state=running | grep -E 'journal|syslog'
$ ls -la /var/log
$ journalctl --disk-usage

在使用兼容路由的 Debian 系发行版上,/var/log/syslog 很常见;其他系统则常使用 /var/log/messages。只使用 journal 的主机可能没有这两个文件。应用程序文档和单元配置可以指出其他目的地。

缺少 /var/log/syslog 文件必然意味着什么?

查询 journal

应先使用有边界的查询,而不是倾倒整个 journal:

$ journalctl -b -p warning
$ journalctl -u ssh.service --since '1 hour ago'

-b 选择当前启动,-p 按优先级过滤,-u 按单元过滤。不同主机上的单元名称和保留启动记录并不相同。使用 journalctl --list-boots 查看可用的启动记录;重现问题时,可用 journalctl -f 跟踪新记录。

哪个选项将 journalctl 查询限制在当前启动?

结合上下文阅读记录

传统 syslog 风格的日志行可能如下:

Jan 27 07:41:32 icebox anacron[4650]: Job `cron.weekly' started

其中包含时间戳、主机、程序和 PID,最后是消息。应把消息文本视为应用程序输出,而不是有保证的结构化事实。检查时区、时钟同步、启动 ID、PID 重用,以及事件前后的记录。与单独渲染出的文本相比,journal 字段可以提供更可靠的标识符。

日志可能包含用户名、地址、路径、令牌或其他敏感数据。调查时应采用最小权限访问,对导出内容进行脱敏,并保留原始记录和时间戳。

向外部分享日志摘录前应该做什么?

课程已完成

你已完成 系统日志

现在,你可以在不假定统一存储路径的情况下查找和查询 Linux 日志。

  • 区分事件来源、收集器、路由、存储和查看工具。

  • 查明主机当前使用的日志配置。

  • 按单元、启动、时间或优先级使用有边界的 journal 查询。

  • 结合上下文关联记录,并保护日志中的敏感数据。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 日志