如何在 Linux 上设置 Rsyslog 远程日志


每个 Linux 发行版都带有一些日志系统来记录系统活动。这在系统故障排除期间可能很有帮助。Rsyslog 是一个开源的,并且在系统日志处理速度方面非常快。它适用于多个主要的 Linux 发行版,包括基于 Debian 和 Red Hat 的系统。与 SYSLOG 协议相比,它具有若干额外功能,例如用于传输的 TCP 的基于内容的过滤,并提供大量的配置选项。本文介绍了如何分步设置 Rsyslog 远程日志。

安装

如果您的 Linux 系统上未安装 Rsyslog,请使用以下命令安装:

$ sudo apt-get install rsyslog rsyslog-doc

输出应如下所示:

Reading package lists... Done
Building dependency tree
Reading state information... Done
rsyslog is already the newest version.
The following NEW packages will be installed:
rsyslog-doc
0 upgraded, 1 newly installed, 0 to remove and 265 not upgraded.
Need to get 931 kB of archives.
After this operation, 1,828 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://in.archive.ubuntu.com/ubuntu/ trusty-updates/main rsyslog-doc all 7.4.4-1ubuntu2.6 [931 kB]
Fetched 931 kB in 1s (508 kB/s)
Selecting previously unselected package rsyslog-doc.
(Reading database ... 165966 files and directories currently installed.)
Preparing to unpack .../rsyslog-doc_7.4.4-1ubuntu2.6_all.deb ...
Unpacking rsyslog-doc (7.4.4-1ubuntu2.6) ...
Processing triggers for doc-base (0.10.5) ...
Processing 32 changed doc-base files, 1 added doc-base file...
Setting up rsyslog-doc (7.4.4-1ubuntu2.6) ...

Rsyslog 配置存储在 /etc/ryslog.conf 文件中,文件位于 /etc/rsyslog.d/ 目录下。

配置结构

Rsyslog 配置文件结构如下:

  • 模块
  • 配置指令
  • 规则行

模块

Rsyslog 具有模块化架构。它将以动态方式启用功能。模块分类如下:

  • 输入模块 – 用于从各种来源收集消息。
  • 输出模块 – 用于将消息写入各种位置(文件、套接字等)。
  • 解析器模块 – 用于解析消息内容。

配置指令

配置指令是 Rsyslog 的配置说明。这些指令应每行只指定一个,并以美元符号 ($) 开头。

规则行

每条规则行包含两个字段,它们被划分为选择器字段和动作字段。选择器字段又分为两个字段,应如下所示:

  • 设施
  • 优先级

一个示例配置

MODULES
$ModLoad imuxsock
$ModLoad imklog
Directives
# Set the default permissions for all log files.
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
RULES
mail.info/var/log/mail.info
mail.warn/var/log/mail.warn
mail.err/var/log/mail.err
daemon.*/var/log/daemon.log

模板

这是 Rsyslog 最重要的功能之一,它允许用户以所需的格式记录消息。它还可以用于创建动态文件名来记录消息。

检查 Rsyslog 配置

在检查 Rsyslog 配置之前,请确保已重新启动 Rsyslog,以便您的更改立即生效。要重新启动 Rsyslog,请使用以下命令:

$ sudo service rsyslog restart

确保 Rsyslog 正在运行。如果此命令没有返回任何内容,则可以假设它根本没有运行。使用以下命令检查进程是否正在运行:

$ ps -A | grep rsyslog

示例输出应如下所示:

6738 ? 00:00:00 rsyslogd

检查 Rsyslog 配置,使用以下命令:

$ rsyslogd -N1

示例输出应如下所示:

rsyslogd: version 7.4.4, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

检查 Linux 系统日志中是否存在任何 Rsyslog 错误。如果存在错误,您可以在 /var/log/messages 中找到它们。某些日志也可能存储在 /var/log/syslog 中。

$ sudo cat /var/log/messages | grep rsyslog

发送示例数据

通过创建测试事件来验证 Rsyslog 是否正在将数据发送到记录器。要发送数据,请使用以下命令:

$ logger Tutorialspoint

检查 Linux 系统日志以查看 Rsyslog 是否已记录测试事件,要验证它,请使用以下命令:

$ sudo cat /var/log/syslog | grep Tutorialspoint

示例输出应如下所示:

Feb 4 11:25:54 linux tp: Tutorialspoint
Feb 4 11:32:25 linux tp: Tutorialspoint

恭喜!现在,您了解了如何在 Linux 上“设置 Rsyslog 远程日志”。我们将在下一篇 Linux 文章中进一步学习这些类型的命令。继续关注!

更新于: 2020-01-23

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告