当你遇到服务器性能问题时,你要做的第一件事就是 检查你的 Linux 日志。在系统日志中,您可以找到来自操作系统不同组件(如内核或各种服务)的一些有用的诊断消息,因此您很可能会在那里找到故障原因。
日志中的每条消息都是操作系统中某些事件的结果:来自用户、授权、服务关闭或应用程序故障。这些事件根据其严重程度具有不同的优先级。Linux 中有以下类型的事件:
emerg
- 失败,最高优先级;alert
- 紧急警告;crit
- 关键事件;err
- 一般错误;warn
- 普通警告;notice
- 通知;info
- 信息消息;debug
- 调试信息;
目前,Linux 中主要的日志收集服务有 系统日志 和 系统日志。它们与大多数现代发行版软件包兼容并能独立运行。
系统日志
该服务的日志位于“/ var / log /”文件夹中以普通文本文件的形式保存日志信息。日志信息根据事件类型保存在不同文件中。例如,“/var/log/auth.log”包含用户在系统中的授权信息,“/var/log/kern.log” 包含内核消息。文件名在不同的发行包中可能有所不同,因此我们来看一下配置文件,了解其中的内容。/etc/rsyslog.d/50-default.conf“。

这些规则显示哪个文件包含每种类型的日志消息。左侧部分以以下形式显示消息类型“[来源].[优先]”右侧显示日志文件的名称。在写入消息类型时“*”字符可以添加。它表示空值或“没有” 将其从列表中删除。让我们仔细看看前两个规则。
“auth,authpriv.* /var/log/auth.log” “*.*;auth,authpriv.none -/var/log/syslog”
第一条规则意味着从授权机制收到的所有消息都将被记录到“/var/log/auth.log”文件。所有授权尝试(无论成功与否)都将记录在此文件中。第二条规则表示,除与授权相关的消息外,所有消息都将记录到“在/ var / log / syslog的”文件。这两个文件通常是最受欢迎的。以下规则定义了存储内核日志的路径“字距。*”和邮件服务日志“邮件。*=
日志文件可以借助任何文本编辑器打开,例如 减, 猫, 尾巴。让我们打开“/var/log/auth.log“ 文件
less /var/log/auth.log

该文件的每一行都是从应用程序或服务收到的一条单独消息。所有消息(无论其来源如何)都具有相同的格式,并由 5 个部分组成。让我们以屏幕截图中突出显示的消息为例。
- 消息时间戳 - “12 月 06 日 18:33:XNUMX”
- 发送消息的计算机的名称 - “vds”
- 发送消息的应用程序或服务的名称 - “sshd”
- 进程 ID — [653]
- 消息文本 - “已接受来自 188.19.42.165 端口 2849 ssh2 的 mihail 密码”
这是成功连接 SSH 的示例。
失败的登录尝试如下所示:

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

让我们打开 在/ var / log / syslog的 文件
屏幕截图上突出显示的消息是关于网络接口关闭的消息。

要通过长文本文件搜索信息,请使用 grep的 实用程序。您可以找到从以下位置收到的所有消息 PPTP 服务于“在/ var / log / syslog的“档案。
grep 'pptpd' /var/log/syslog

在诊断过程中,您可以使用 尾巴 可以显示文件最后几行的实用程序。命令“尾-f / var / log / syslog”将让您实时观看日志记录。
该服务 系统日志 非常灵活和强大。它可用于收集本地系统以及企业级的日志。您可以在官方网站上找到完整的文档 https://www.rsyslog.com/
Linux 中的日志轮换
日志记录不断发生,因此文件大小不断增长。轮换机制可确保自动归档旧日志并创建新文件。根据规则,轮换可以每天、每周、每月或按大小限制进行。创建新日志时,可以删除旧日志或通过电子邮件发送旧日志。日志轮换由以下方式执行: 实现 实用程序。您可以在“/etc/logrotate.conf”文件中。文件内容也在“/etc/logrotate.d/”文件夹
新规则可以记录到主配置文件中。但是,最好在“/etc/logrotate.d/”默认情况下,此目录中有几个文件

让我们看一下文件“/etc/logrotate.d/rsyslog“包含日志轮换规则 系统日志 服务。

首先,规则应该包含日志文件的路径,然后包含所有在括号中的指导方针。
- 旋转7 - 要保留的文件数量 - 7
- 每天 - 每天创建一个新文件
- 压缩 - 压缩并存档旧文件

您可以在屏幕截图中看到“/ var / log /”文件夹中有主日志“系统日志”等7个档案,与配置文件中的规则相对应。
您可以在手册中找到有关 logrotate 的更详细描述,执行“人logrotate”命令
收集 Linux 日志 - journald
原木采伐服务 系统日志 是初始化系统的一部分 systemd.Linux 日志文件存储在“/var/log/日志/” 以特殊格式保存,可以使用 日记 实用程序。记录格式与 系统日志.
命令 日记 不带任何属性会显示所有记录,但不适合较大的日志。让我们看看这个实用程序的一些选项。
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
- 实时显示消息
为了获得更好的灵活性,您可以组合这些选项。让我们显示 PPTP 服务
journalctl -u pptpd -p err

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

要了解日志文件占用了多少磁盘空间,请执行以下命令
journalctl --disk-usage
为了将日志文件限制为 1Gb,请执行以下命令
journalctl --vacuum-size=1G
打开二进制文件
现在让我们看看“/ var / log /”文件夹,其中存储了所有登录尝试。这些文件是二进制文件,只能使用特殊程序打开。
/var/日志/wtmp 包含有关成功登录尝试的信息。使用 last 实用程序打开它。

/var/日志/btmp - 包含所有失败的登录尝试。可以使用 lastb 以高级权限打开。属性 -n 定义从文件末尾显示的行数。

/var/log/loadlog - 包含每个帐户记录的上次登录操作的时间。可以使用 最后记录
