如何在Ubuntu 18.04 LTS上配置rsyslog集中式日志服务器

时间:2020-02-23 14:32:39  来源:igfitidea点击:

任何Linux系统上的日志都是关键的,用于分析和故障排除与系统和应用程序相关的任何问题。
在Graylog等工具的帮助下,我们可以轻松地将这些日志运送到集中式平台,以便于可视化。
在本教程中,我们将研究如何在Ubuntu 18.04 LT上配置rsyslog集中式日志服务器。

在Linux上,默认情况下,所有日志文件都位于/var/log目录下。
有几种类型的日志文件存储不同的消息,可以是Cron,内核,安全性,事件,用户等。
主要是这些日志文件由rsyslog服务控制。

在最近具有SystemD的系统上,一些日志由JournalD守护程序管理,它们是写入二进制格式。
这些日志是易失性的,因为它们被写入RAM,并且不会耐受系统重新启动。
他们经常被发现。 /run/log/journal/但请注意,journald还可以配置为通过写入文件来永久存储日志消息。

将rsyslog配置为Ubuntu 18.04上的中央日志服务器

我们将把rsyslog服务器配置为中央日志管理系统。
这请遵循Client-Server模型,其中rsyslog服务将侦听UDP/TCP端口。
rsyslog使用的默认端口为514.在客户端系统上,rsyslog将通过UDP或者TCP端口收集并将日志返回到中央rsyslog服务器。

使用Syslog消息时,存在具有日志文件的优先级/严重性级别。
即:出现,恐慌(紧急):级别0 - 这是最低日志级别。
系统是Unusableualert(警报):级别1 - 必须采取动作立即(错误):级别3 - 关键条件网络(警告):级别4 - 警告条件(通知):5级 - 正常但重要的条件(信息):级别6 - 信息消息Debug(调试):级别7 - 这是最高级别 - 调试级别消息

rsyslog默认安装在新安装的Ubuntu 18.04系统上。
如果由于未安装包的任何原因,则可以通过运行安装它:

sudo apt-get install rsyslog

安装时,检查服务以查看它是否正在运行:

$sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2016-07-18 11:30:10 UTC; 4 days ago
Main PID: 903 (rsyslogd)
Tasks: 4 (limit: 4704)
CGroup: /system.slice/rsyslog.service
└─903 /usr/sbin/rsyslogd -n

配置rsyslog以在服务器模式下运行

现在将rsyslog服务配置为在服务器模式下运行:

sudo vim /etc/rsyslog.conf

取消注释UDP和TCP端口绑定的行:

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

如果我们想限制从特定子网,IP或者域的访问,请如下add:

$AllowedSender TCP, 127.0.0.1, 192.168.10.0/24, *.example.com

我们可以在以后添加以后 input(type="imtcp" port="514")线。
记得用正确的替代给定的值

为接收远程消息创建一个新模板

让我们创建一个将指示rsyslog服务器如何存储传入的syslog消息的模板。
在之前添加模板 GLOBAL DIRECTIVES部分:

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

将使用上面的模板解析收到的日志并存储在目录中 /var/log/
文件命名遵循"公约": %HOSTNAME% and %PROGRAMNAME%变量,例如:客户端主机名以及产生日志消息的客户端设施。

&~指示rsyslog守护程序将日志消息存储到指定的文件。

可以使用的其他变量包括:

%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

重新启动rsyslog服务以使更改生效:

sudo systemctl restart rsyslog

确认服务是否正在侦听已配置的端口:

$ss -tunelp | grep 514
udp    UNCONN   0        0                 0.0.0.0:514            0.0.0.0:*      users:(("rsyslogd",pid=15220,fd=5)) ino:441816 sk:2 <->                        
udp    UNCONN   0        0                    [::]:514               [::]:*      users:(("rsyslogd",pid=15220,fd=6)) ino:441817 sk:5 v6only:1 <->               
tcp    LISTEN   0        25                0.0.0.0:514            0.0.0.0:*      users:(("rsyslogd",pid=15220,fd=7)) ino:441820 sk:a <->                        
tcp    LISTEN   0        25                   [::]:514               [::]:*      users:(("rsyslogd",pid=15220,fd=8)) ino:441821 sk:11 v6only:1 <->

配置rsyslog防火墙

如果我们有UFW防火墙服务运行,请允许rsyslog防火墙端口:

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

将rsyslog配置为客户端

完成rsyslog服务器后,将返回到rsyslog客户端计算机并配置它们以将日志发送到远程rsyslog服务器。

sudo vim /etc/rsyslog.conf

允许保存FQDN:

$PreserveFQDN on

结束添加远程rsyslog服务器:

*.* @ip-address-of-rsysog-server:514

我们还可以使用FQDN而不是服务器IP地址:

*.* @fqdn-of-rsysog-server:514

以上线将启用ODP的日志,用于TCP使用 @@而不是单身 @

*.* @@ip-address-of-rsysog-server:514
OR
*.* @@fqdn-of-rsysog-server:514

还添加以下内容rsyslog服务器将关闭:

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

然后重新启动rsyslog服务

sudo systemtcl restart rsyslog