如何将 Linux 日志发送到远程服务器
本 Linux 教程介绍了如何将 Linux 日志发送到远程服务器。
阅读本教程后,您将了解如何配置Linux服务器和客户端来远程发送日志。您还将学习如何使用 UFW(简单防火墙)打开系统中必要的端口。
这个简短的教程针对寻求快速知识源和快速实施的用户进行了优化。
本文档中描述的所有说明均包含屏幕截图,以方便没有经验的用户遵循它们。
将 Linux 日志发送到远程服务器的优点
实现远程日志记录的主要原因是相同的,因为建议使用专用的/var分区:空间问题,但不仅仅是空间问题。通过将日志发送到远程存储设备,您可以保证在系统崩溃之前访问它们,并保留大型错误历史数据库。这一实施还允许我们集中多个设备的报告。
Linux 远程日志记录入门
本教程中用于远程发送日志的程序是 rsyslog,它默认包含在许多 Linux 发行版中,包括 Debian 和 Ubuntu Linux。
要检查系统中是否安装了 rsyslog 及其状态,请执行以下屏幕截图中所示的命令:
如您所见,在以下屏幕截图中状态为活动状态。
注意:如果您的系统中未安装rsyslog,您可以使用软件包管理器来获取它。 (例如,sudo apt install rsyslog)
如果 rsyslog 未激活,您可以通过运行以下命令启动它:
您还可以通过运行以下命令来启动 rsyslog:
注意:有关管理 Debian/Ubuntu 服务的更多信息,请阅读 Debian 上的停止、启动和重新启动服务。
rsyslog 工具需要在发送(客户端)和接收(服务器)设备中进行配置。本教程的下一部分将解释如何配置服务器端。以下是配置客户端的说明。
如何将 Linux 日志发送到远程服务器:服务器端
我们必须配置服务器和客户端来远程发送日志。本节将提供服务器端配置说明以继续配置客户端。
rsyslog 配置文件是 /etc/rsyslog.conf。您可以使用任何文本编辑器(例如 nano 或 vi)编辑此文件。
在本教程中,我使用nano。打开文件,如下图所示:
远程发送日志时,本地和远程设备都会写入相同的文件。因此,阅读它会成为一项令人不舒服的任务。为了避免这种情况并单独获取日志,请将以下代码添加到/etc/rsyslog文件中,如下图所示:
*.* ?RemoteLogs
& ~
向下滚动文件并通过删除每行开头的数字符号 (#) 来取消注释以下行:
input(type="imudp" port="514")
另外,取消注释以下内容:
input(type=”imtcp” port=”514”)
这四行必须如前面的屏幕截图所示,以允许通过 TCP 和 UDP 协议进行日志记录。
完成文件编辑后,如果您使用 nano,请按 Ctrl+X,然后按 Y 保存更改。
编辑并保存/etc/rsyslog.conf文件后,我们需要更新防火墙规则以允许流量通过配置文件中默认定义的端口514。
为了编辑本教程中的防火墙规则,我使用 UFW(简单防火墙)。
要打开 TCP 协议的 514 端口,请运行下图所示的命令:
最后,通过运行以下命令打开 UDP 端口 514:
现在,您的服务器配置已准备好获取远程日志。通过运行以下命令重新启动 rsyslog 服务:
服务器准备就绪后,我们继续进行客户端配置。
如何将 Linux 日志发送到远程服务器:客户端
本教程部分介绍如何配置 Linux 客户端将日志发送到远程服务器。以下描述的步骤必须在客户端设备上完成。
在客户端,我们需要编辑的配置文件是/etc/rsyslog.conf。
在客户端设备上运行如下图所示的命令:
在此文件中,我们需要添加具有以下语法的行:
在我的例子中,服务器IP是192.168.0.103。因此,我将添加以下行,如下面的屏幕截图所示:
注意:如果仅使用 UDP 协议,则仅使用 at 符号 (@)。
编辑文件后,按 Ctrl+X,然后按 Y 保存更改。
现在,通过执行命令重新启动 rsyslog 以应用更改,如下所示:
我们完成了客户端配置并准备读取服务器中的远程日志。
读取服务器上的Linux日志
执行上述步骤后,两个系统都已准备好发送和接收日志。
Linux 日志存储在/var/log 目录下。默认使用rsyslog时,本地日志和远程日志都写在同一个日志文件中,读起来不太舒服。但是,当我们编辑服务器上的服务器 /etc/rsyslog.conf 文件时,我们指示 rsyslog 将日志存储在不同的目录和文件中。
根据我们的配置,远程日志将存储在/var/log下以远程主机名称命名的目录中。在我的例子中,远程主机名为linux2;因此,要查看远程日志,我需要查看 /var/log/linux2下的文件,其中linux2是远程主机名,您需要将其替换为您的客户端主机名。
正如您在下面的屏幕截图中看到的,在 /var/log 下, 每个设备有两个目录:本地 (LinuxHint) 和远程 (linux2) 设备。
因此,要查看远程目录中的日志,我运行以下命令,您需要将 linux2 替换为您的远程主机名:
正如您在上图中看到的,有一个名为 RemoteLog.log 的文件,这是我们在编辑服务器 /etc/rsyslog.conf 文件时定义的文件名。
要读取日志,您可以在以下示例中使用 less 命令:
如您所见,远程日志记录工作正常。
现在,远程日志记录已准备就绪。
阅读手册页,了解有关 rsyslog 及其附加功能的更多信息,包括安全性、多线程、MySQL、Oracle、PostgreSQL 和其他数据库集成、消息过滤、输出配置等,网址为 https://linux.die.net /man/5/rsyslog.conf。
Rsyslog 替代方案
市场提供了具有附加功能的 rsyslog 的其他替代品,其中一些功能如下:
NXLog: NXLog 是 rsyslog 的替代品,支持 GNU/Linux 和 Windows 操作系统。它是开源的,提供社区版和企业版。它具有收集恶意行为信息的附加功能。它还支持过滤事件日志和日志转发。
syslog-ng: syslog-ng OSE是rsyslog的另一种替代品,它支持Linux、Microsoft Windows、FreeBSD、Mac OS X、SOLARIS、AIX等。与NXLog一样,它提供企业版和社区版。
LogZilla:这是另一个日志选项,对家庭用户和实验室免费,但对商业用户付费。据其网站称,它可以降低资源成本,并根据收集的数据自动触发可操作的见解。
您还可以探索更多替代方案,但 Rsyslog 仍然是 Linux 和 Unix 用户中最受欢迎的。
结论
正如您所看到的,配置和实施远程 Linux 日志记录是一个简单的过程,任何 Linux 用户都可以独立完成,无论其知识水平如何。远程日志记录是解决诸如由于大量日志而导致磁盘已满等问题的一个很好的解决方案,如本文所述。生产服务器极有可能保证在事件发生之前访问关键信息。 Rsyslog 是开源且免费的,它是 Linux 社区支持最多的远程日志记录软件。本教程主要针对 Linux,但 rsyslog 具有 Windows 代理功能,允许系统管理员和用户在 Microsoft Windows 和 Linux 操作系统之间共享日志。
感谢您阅读本教程,我们希望它对您有用。继续阅读 LinuxHint 以获得更专业的教程。