如何在 Debian 11 (Bullseye) 上设置 Rsyslog 服务器

[ad_1]

日志文件对于探测和排除错误至关重要。 它们是系统管理员检查的第一个文件,以缩小错误的可能原因,并通过这样做提出解决问题的解决方案。 在拥有数十或数百台服务器和其他设备的基础架构中,管理日志文件可能是一项挑战。 这就是 rsyslog 的用武之地。

Rsyslog 是一个开源日志程序,它有助于将日志文件转发到 IP 网络中的中央日志服务器。 通过集中日志记录,管理员可以轻松地从一个中心点密切关注多个系统的日志文件。 在这篇文章中,我们将引导您完成在 Debian 11 上安装和配置 Rsyslog 服务器的过程。

实验室设置

为了演示如何使用 Rsyslog 将日志文件从客户端系统发送到 Rsyslog 服务器,我们将进行一个简单的实验室设置,如图所示

  • Rsyslog 服务器:Debian 11 IP:192.168.1.151
  • Rsyslog 客户端:Ubuntu 20.04 IP:10.20.0.170

步骤1)在服务器上配置Rsyslog

如前所述,Rsyslog 在客户端-服务器模型中工作,我们将从在 Debian 11 服务器上配置 Rsyslog 开始。 在 Debian 11 上,默认安装了 Rsyslog。 如果由于某种原因 Rsyslog 不存在,您可以使用以下命令安装它:

$ sudo apt install -y rsyslog

安装后,您可以按如下方式检查其运行状态:

$ sudo systemctl status rsyslog

接下来,我们将配置 rsyslog 以在服务器模式下运行。 配置文件是 /etc/rsyslog.conf 文件。 因此,请使用您首选的文本编辑器对其进行编辑。

$ sudo vi /etc/rsyslog.conf

继续并取消注释允许从远程客户端接收 UDP 和 TCP 系统日志的以下行。

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

此后,粘贴以下行以定义 Rsyslog 守护程序将用于存储来自客户端系统的传入日志的模板。

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs

日志文件将使用以下命名约定:

  • /%主机名%/ – 这是客户端系统的主机名。
  • /%程序名称%/ – 这标识了创建日志文件的客户端程序。

要应用更改,请重新启动 rsyslog 守护程序。

$ sudo systemctl restart rsyslog

默认情况下,rsyslog 侦听端口 514。您可以通过执行以下命令来确认这是 rsyslog 守护程序正在侦听的端口 ss 命令.

$ sudo ss -tunlp | grep 514

步骤 2) 为 rsyslog 配置防火墙规则

Rsyslog 守护进程按预期在服务器上运行。 如果您正在运行 UFW 防火墙,请确保允许端口 514 以允许传入的传入日志消息。

$ sudo ufw allow 514/tcp
$ sudo ufw allow 514/udp

然后重新加载防火墙以应用防火墙规则,如下所示。

$ sudo ufw reload

下一步将是配置客户端 Ubuntu 系统以将日志文件发送到 rsyslog 服务器。

步骤3)配置rsyslog客户端系统

最后一步是配置客户端系统以将日志文件发送到 rsyslog 服务器。 登录到客户端并再次确保 rsyslog 守护程序已安装并正在运行。

接下来,编辑 rsyslog 配置文件。

$ sudo vi /etc/rsyslog.conf

导航到文件的最后并添加这些行。

#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-ip-address:514

#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-ip-address:514

这些行指示客户端通过 UDP 和 TCP 协议将日志文件发送到 rsyslog 服务器。 请注意,第一行有一个 @ 符号表示 UDP,第二行有两个 @@ 符号表示 TCP 协议。

如果远程服务器遇到任何停机时间并且您想要保留您的日志,您可以通过附加显示的行来设置磁盘队列缓冲区。

##设置 rsyslog 服务器关闭时的磁盘队列:

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

以下是对客户端配置的所有修改的摘要。

Save 并退出文件。 现在重新启动 rsyslog 服务以使更改生效。

$ sudo systemctl restart rsyslog

此时,客户端系统应该将日志文件发送到 rsyslog 服务器。 让我们回到服务器并找出答案。

步骤 4) 查看客户端的日志文件

所有日志文件(包括服务器)都存储在 /var/日志/ 目录。 要查看客户端的日志,请运行以下命令:

$ ls /var/log/

客户端的日志文件将保存在与客户端系统的主机名对应的目录中,如下所示。

您可以进一步查看主日志目录中包含的日志文件。

$ sudo ls -l /var/log/ubuntu-20-04/

要实时查看日志,请使用 尾命令 如图所示。 在这里,我们正在查看 sudo 用户的日志。

$ sudo tail -f /var/log/ubuntu-20-04/sudo.log

我们已经成功安装了 rsyslog 并将其配置为允许从客户端系统向 rsyslog 服务器发送日志文件。 您现在可以配置任意数量的客户端系统,将日志发送到 rsyslog 服务器,以实现集中的日志管理结构。

这就是这篇文章的全部内容,我希望你已经发现它提供了信息。 请在下面的评论部分分享您的疑问和反馈。

另请阅读如何使用 Logrotate 在 Linux 中旋转和压缩日志文件

[ad_2]

Related Posts