知识库 使用 Profitserver 服务的简单说明
主要 知识库 如何阅读 Linux 日志以及在哪里找到它

如何阅读 Linux 日志以及在哪里找到它


当您的服务器性能出现任何问题时,首先应该检查 Linux 日志。在系统日志中,您可以找到来自操作系统不同组件(例如内核或各种服务)的一些有用的诊断信息,因此您很可能在那里找到故障原因。

日志中的每条消息都是操作系统中某些事件的结果:来自用户、授权、服务关闭或应用程序故障。这些事件根据其严重程度具有不同的优先级。Linux 中有以下类型的事件:

  1. emerg - 失败,最高优先级;
  2. alert - 紧急警告;
  3. crit - 关键事件;
  4. err - 一般错误;
  5. warn - 普通警告;
  6. notice - 通知;
  7. info - 信息消息;
  8. debug - 调试信息;

目前,Linux 系统中主要的日志采集服务是rsyslog和systemd-journald。它们与大多数现代发行版软件包集成,并且可以独立运行。

系统日志

该服务的日志以普通文本文件的形式存储在“ /var/log/ ”文件夹中。日志消息会根据事件类型被放入不同的文件中。例如,“ /var/log/ auth.log ”包含有关用户在系统中的授权信息,“ /var/log/kern.log ”包含内核消息。由于不同发行版软件包的文件名可能有所不同,因此让我们查看一下配置文件“ /etc/rsyslog.d/50-default.conf ”来了解各个文件的位置。

Linux 上的 rsyslog

这些规则显示了每种类型的日志消息对应的文件。左侧以“ [来源].[优先级] ”的格式显示消息类型,右侧显示日志文件名。在填写消息类型时,可以添加“ * ”字符。它表示空值或“无”,会将其从列表中删除。让我们仔细看看前两条规则。

“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”

第一条规则表示,所有从授权机制收到的消息都将被记录到“ /var/log/auth.log ”文件中。所有授权尝试(无论成功与否)都将被记录到此文件中。第二条规则表示,除与授权相关的消息外,所有消息都将被记录到“ /var/log/syslog ”文件中。这两个文件通常是最常用的。以下规则定义了内核日志“ kern.* ”和邮件服务日志“ mail.* ”的存储路径。

可以使用任何文本编辑器打开日志文件,例如less、cat或tail。我们来打开“ /var/log/auth.log ”文件。

less /var/log/auth.log
Запись в лог-файле Линукс о неудачной попытке авторизации SSH

该文件的每一行都是从应用程序或服务收到的一条单独消息。所有消息(无论其来源如何)都具有相同的格式,并由 5 个部分组成。让我们以屏幕截图中突出显示的消息为例。

  1. 消息时间戳 - “12 月 06 日 18:33:XNUMX”
  2. 发送消息的计算机的名称 - “vds”
  3. 发送消息的应用程序或服务的名称 - “sshd”
  4. 进程 ID — [653]
  5. 消息文本 - “已接受来自 188.19.42.165 端口 2849 ssh2 的 mihail 密码”

这是成功连接 SSH 的示例。

失败的登录尝试如下所示:

Linux 逻辑

此文件还记录具有高级权限的命令

Linux 上的应用程序

让我们打开/var/log/syslog文件

屏幕截图上突出显示的消息是关于网络接口关闭的消息。

Утилита logorotate

要从长文本文件中查找信息,请使用grep工具。您可以在“ /var/log/syslog ”文件中找到从pptpd服务接收的所有消息。

grep 'pptpd' /var/log/syslog
файл “/etc/logrotate.d/rsyslog”

在诊断过程中,您可以使用tail工具来显示文件的最后几行。命令“ tail -f /var/log/syslog ”可以让您实时查看日志记录。

rsyslog服务非常灵活且功能强大。它既可用于本地系统日志采集,也可用于企业级日志采集。您可以在官方网站https://www.rsyslog.com/上找到完整的文档。

Linux 中的日志轮换

日志记录持续进行,因此文件大小不断增长。轮换机制确保旧日志自动归档,并创建新文件。根据设定的规则,轮换可以按日、周、月或大小限制进行。创建新日志后,旧日志可以直接删除或通过电子邮件发送。日志轮换由logrotate工具执行。您可以在“ /etc/logrotate.conf ”文件中找到主要配置。文件内容也会在“ /etc/logrotate.d/ ”文件夹中进行处理。

新规则可以记录到主配置文件中。不过,最好在“ /etc/logrotate.d/ ”目录下创建一个单独的文件。默认情况下,该目录下有一些文件。

Настраиваем ротацию логов в Линукс

让我们来看一下“ /etc/logrotate.d/rsyslog ”文件,其中包含rsyslog服务日志的轮换规则。

Пример вывода всех ошибок pptpd в лог-файлах

首先,规则应该包含日志文件的路径,然后包含所有在括号中的指导方针。

  • 旋转7 - 要保留的文件数量 - 7
  • 每天 - 每天创建一个新文件
  • 压缩 - 压缩并存档旧文件
Учимся читать логи Линукс

从截图中可以看到,“ /var/log/ ”文件夹中有主日志“ syslog ”和7个归档文件,这与配置文件中的规则相符。

您可以通过执行“ man logrotate ”命令,在手册中找到关于 logrotate 的更详细描述。

收集 Linux 日志 - journald

日志采集服务systemd-journald是初始化系统systemd的一部分。Linux 日志文件以特殊格式存储在“ /var/log/journal/ ”目录下,可以使用journalctl工具打开。记录格式与rsyslog完全相同。

不带任何参数的journalctl命令会显示所有记录,但对于较大的日志文件来说并不适用。我们来看看这个工具的一些选项。

  • journalctl -b - 显示自上次启动以来的所有记录
  • journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10" - 显示特定时间段内的记录
  • journalctl -u pptpd - 显示特定服务的记录
  • journalctl -k - 显示内核消息
  • journalctl -p err - 显示特定优先级的消息,在这种情况下显示更高优先级的消息(crit、alert、emerg)
  • journalctl -f - 实时显示消息

为了获得更大的灵活性,您可以组合使用这些选项。让我们显示pptpd服务的所有错误。

journalctl -u pptpd -p err
上次

如果将可执行文件的路径指定为属性,该实用程序将显示该文件发送的所有消息。例如,让我们显示自 2020 年 2 月 18 日 04:15 以来文件“ /usr/bin/sudo ”发送的所有消息。实际上,它将显示所有以更高权限执行的命令。

journalctl -S "2020-02-18 04:15" /usr/bin/sudo
柯曼多伊 lastb

要了解日志文件占用了多少磁盘空间,请执行以下命令

journalctl --disk-usage

为了将日志文件限制为 1Gb,请执行以下命令

journalctl --vacuum-size=1G

打开二进制文件

现在我们来看看“ /var/log/ ”文件夹中的一些特殊文件,所有登录尝试都存储在这些文件中。这些文件是二进制文件,只能用特定的程序打开。

/var/log/wtmp文件包含成功登录尝试的信息。请使用 last 工具打开它。

使用 lastlog

/var/log/btmp文件包含所有登录失败的尝试。可以使用 lastb 命令以高级权限打开它。参数-n定义了从文件末尾开始显示的行数。

/var/log/lastlog文件包含每个帐户记录的最后登录操作时间。可以使用lastlog 命令打开它。

❮ 上一篇文章 Linux 文本编辑器
下一篇文章❯ 如何在 CentOS 中配置网络接口

向我们咨询有关 VPS 的问题

无论白天还是黑夜,我们随时准备解答您的问题。