systemd、rsyslogd - 日志在哪里?

systemd、rsyslogd - 日志在哪里?

ssh我安装了 Fedora 23 Server 版本,除了设置、fail2bansamba和 用户之外,我在管理方面几乎没有做任何事情。

有一天,我被完全锁定在我的系统之外,并ssh_exchange_identification: read: Connection reset by peer通过谷歌搜索找到了一条消息ssh_exchange_identification:读取:连接被对等方重置

所以我假设fail2ban与禁令有关。没什么大不了的,只需“物理”登录到机器并重置它们即可。尝试执行此操作后,我看到我的控制台变得被淹没带有日志消息(我不记得了,“systemd.service 某些东西只读某些东西”)。这种洪水使得登录变得不可能。我开始输入我的凭据,结果却被破坏了,因为会打印一条日志消息并重置凭据。

我被迫硬重启,即。按机器上的重置按钮/按住电源按钮。

当我想找出问题的根源并找出问题所在时,我进行了一些日志挖掘。但我似乎无法找到原因。

如果我这样做,journalctl --since 2016-04-10我会得到以下信息

Apr 10 12:19:32 Server smartd[620]: Device: /dev/sdc [SAT], 47 Currently unreadable (pending) sectors
-- Reboot --
Apr 11 20:27:53 Server systemd-journal[148]: Runtime journal is using 8.0M (max allowed 81.0M, trying to leave 121.5M free of 802.5M available → current limit 81.0M).

当我假设问题开始时,我删除了所有日志,直到我进行了硬重启。 (/dev/sdc自从我收到驱动器以来,驱动器一直给出该错误)

我还继续阅读https://freedesktop.org/wiki/Software/systemd/Debugging/您应该检查/var/log/messages日志。

我可以看到的相关部分是

Mar  6 18:52:49 Server audit: USER_AUTH pid=3435 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=PAM:authentication grantors=? acct="root" exe="/usr/sbin/sshd" hostname=183.3.202.108 addr=183.3.202.108 terminal=ssh res=failed'
Apr 11 20:28:46 Server rsyslogd-2177: imjournal: begin to drop messages due to rate-limiting
Apr 11 20:39:15 Server rsyslogd-2177: imjournal: 91404 messages lost due to rate-limiting
Apr 11 20:39:15 Server dnf: repo: using cache for: rpmfusion-free

这告诉我有 91404 条日志消息。然而我却找不到其中任何一个。全部据我所知,已被放弃。

由于我想知道到底是什么“破坏”了我的系统,还有其他地方可以存储日志吗?或者我是否只需要祈祷星星不会再次导致同样的问题?

答案1

注意:没有进一步的证据证实我的怀疑,这只是假设性的猜测。

您提到看到一些有关“只读”的内容。您的系统可能遇到不可恢复的损坏或磁盘(或电缆或SATA接口等)上的硬件故障,并将根文件系统重新安装为只读,以防止进一步损坏/损坏。

您需要尽快做的最重要的事情是 1. 确保您的备份是最新的,2. 彻底测试您的磁盘(例如通过测试smartctl),否则它/它们可能会失败。

但是,回到日志记录问题:

如果根文件系统(或/var/log)是只读的,则不会将任何日志写入磁盘。

如果您有另一个可以将日志消息转发到的系统,我建议配置 rsyslog 以将日志记录到本地文件和远程系统。本机也可以向远程系统提供相同的服务。

例如,在我的两个系统(ganeshkali)上,我有以下内容/etc/rsyslog.d/00remote.conf

$ModLoad imudp   # provides UDP syslog reception
$UDPServerAddress 0.0.0.0
$UDPServerRun 514 

if $fromhost-ip == '127.0.0.1' and $syslogfacility-text == 'kern' then @kali

这就是 上的文件ganesh。 on kali,除了@kali替换为 之外,它是相同的@ganesh

这会将kern源自本地主机的所有设施日志条目转发到远程日志记录主机。 IP 地址检查可防止远程日志记录循环崩溃。

还有其他方法可以使用 来配置远程日志记录rsyslog,包括tcp基于日志记录而不是udp.这只是我几年前需要时尝试的第一个方法 - 它有效,而且很简单,而且我还没有任何需要更改它。 在这个网站上搜索了解其他方法和更多详细信息。

顺便说一句,请确保您的防火墙阻止 udp 端口​​ 514 的传入流量。

相关内容