如何在Ubuntu 18.04 LTS上配置rsyslog集中式日志服务器
任何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