logging - Rsyslog - 日志未显示在服务器上
问题描述
尝试配置Rsyslog客户端以将日志发送到 Rsyslog 服务器。
两台机器都在带有Vagrant的 Centos7 上运行。
请参阅下面的每台机器的配置。
当我在客户端机器内登录时 - 它不会反映在服务器的日志中。
例如:
logger "Some message..."
但是当我将服务器的 IP 添加到命令中时:
logger -n 192.168.11.11 "Some message..."
我可以看到在服务器机器上创建了一个带有客户端 IP 的目录:
[root@server log]# ls -la
total 200
drwxr-xr-x. 11 root root 4096 Aug 1 12:02 .
drwxr-xr-x. 18 root root 254 Jul 31 21:39 ..
drwx------. 2 root root 25 Jul 31 22:18 192.168.11.22 <--- HERE
drwxr-xr-x. 2 root root 191 Feb 28 20:54 anaconda
drwx------. 2 root root 23 Jul 31 21:39 audit
-rw-------. 1 root utmp 0 Aug 1 03:14 btmp
drwxr-xr-x. 2 chrony chrony 6 Apr 12 2018 chrony
-rw-------. 1 root root 188 Jul 31 21:39 cron
-rw-r--r--. 1 root root 26911 Aug 1 12:02 dmesg
-rw-r--r--. 1 root root 26742 Jul 31 21:39 dmesg.old
-rw-r--r--. 1 root root 374 Jul 31 21:47 firewalld
-rw-r--r--. 1 root root 292292 Aug 1 12:12 lastlog
-rw-------. 1 root root 198 Jul 31 21:39 maillog
.......
.......
在其中有一个vagrant.log
文件,我可以在其中看到客户端的日志消息:
2019-08-01T13:00:06+00:00 192.168.11.22 vagrant: Some message...
问题:知道为什么我看不到客户端本地日志吗?
对于本次讨论:
- SELINUX 被禁用。
- 这没有帮助。
系统日志配置
服务器 IP:192.168.11.11
。
客户端 IP 192.168.11.22
:.
两台机器都安装并启用了 rsyslog,并且在文件中具有以下通用设置/etc/rsyslog.conf
:
#### MODULES ####
$ModLoad imuxsock
$ModLoad imjournal
#Open port 514 For UDP
$ModLoad imudp
$UDPServerRun 514
#### GLOBAL DIRECTIVES ####
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
#### RULES ####
kern.* /dev/console
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
local7.* /var/log/boot.log
文件上每台机器的添加 /etc/rsyslog.conf
。
在服务器机器上:
## Rules for processing remote logs
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~
在客户端机器上,我设置 UDP 转发到服务器的 IP:
# ### begin forwarding rule ###
#UDP Forwarding
*. * @192.168.11.11:514
# ### end of the forwarding rule ###
防火墙配置
在服务器机器上 - 在防火墙上打开端口 514:
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --reload
并验证:
[root@server /]# sudo ss -tulnp | grep "rsyslog"
udp UNCONN 0 0 *:514 *:* users:(("rsyslogd",pid=2711,fd=3))
udp UNCONN 0 0 :::514 :::* users:(("rsyslogd",pid=2711,fd=4))
解决方案
尝试*.
在客户端主机上删除一个空白:
*. * @192.168.11.11:514
在远程主机上发送具有任何级别的日志的默认格式如下所示:
*.* @remote-host:514
然后重新启动客户端和服务器上的 rsyslog 服务systemctl restart rsyslog
并再次检查。
编辑:
从评论中粘贴 - 在解决问题的系统日志服务器上完成的另外 2 个步骤:
评论
#### Rules ####
服务器上的部分。& ~
从## Rules for processing remote logs
部分中删除。
推荐阅读
- c++ - 更改 glutSolidCube() 以支持纹理?
- python-3.x - 如何通过 pydantic 模式重命名来自数据库的响应 - FastAPI
- c# - XAML 中的花括号实际上是什么意思?
- python - 卡在 Collab RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:
- python - 使用python:查找文件并复制到另一个目录
- bash - 根据用户输入重复 bash 脚本
- r - 使用 R 包bayesplot 中的 mcmc_areas() 更改一些后验分布的颜色
- visual-studio-code - VSCode:在定义的文本之间切换
- arrays - 用 3 个参数减少调用,中间有一个奇怪的参数
- python - 将模块文件夹名而不是文件名添加到 Tortoise ORM config_file