如何在 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 文章中进一步学习这些类型的命令。继续关注!