我如何才能简单地读取 Ubuntu 16.04 的所有不同缓冲区(系统日志、用户日志、应用程序日志等)并在运行时将它们转发到外部服务器(可以是任何操作系统)? 是否有任何 systemd 或日志 API 对此有帮助?
请给出意见!
答案1
rsyslogd
满足您的需求。
如何在 ubuntu-14-04-lts 上使用 rsyslog 设置远程系统日志记录
默认情况下,
rsyslog
每个新的 Ubuntu 安装中都会运行一个实例。该rsyslog
工具负责接收来自内核和操作系统应用程序的所有日志消息,并将它们分发到 中的文件中/var/log
。但是,
rsyslog
它能做的远不止这些,包括登录远程服务器。这对于在大量服务器中聚合日志或无法将日志写入磁盘时非常有用。在本教程中,我们将
rsyslog
在远程计算机上安装,以便我们可以将所有日志发送到远程服务器,并将所有日志重定向到该远程服务器。rsyslog
在远程服务器上安装您需要
rsyslog
在远程机器上运行一份副本,该副本将接收来自现有服务器的日志。最好将其放在远程位置。原因是,如果此服务器与您的服务器同时崩溃,您将无法获取任何日志来排除任何问题。假设您在远程计算机上使用 Ubuntu,那么您已经在运行
rsyslog.
它了。如果没有,您可以按照rsyslog
网站内提供的说明进行安装。安装完成后,您需要确保它监听我们将发送日志的端口。默认端口是 514,我们将保留该端口。您需要编辑文件
/etc/rsyslog.conf
并取消注释以下行:# provides UDP syslog reception #$ModLoad imudp #$UDPServerRun 514 # provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514
取消注释这些行之后,它应如下所示:
# provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
完成后,您现在可以
rsyslog
通过运行命令重新启动服务service rsyslog restart
。您的实例现在可以从远程主机接收日志了。在本地服务器上rsyslog
设置rsyslog
这个过程非常简单。您需要做的就是告诉
rsyslog
服务器上的现有实例将日志发送到远程服务器。这就像在/etc/rsyslog.d
名为的文件夹中创建文件一样简单10-rsyslog.conf
。在该文件中,您需要输入的是*.* @remote.server:514
写入该文件后,
rsyslog
通过运行重新启动服务service rsyslog restart
,您的日志现在将开始发送到远程服务器。您可以通过登录远程服务器并检查日志文件夹来验证这一点,您会发现现在您的日志标有客户端服务器的主机名。