尝试配置rsyslog客户端以将日志发送到rsyslog服务器。
这两台机器都在centos7上使用Vagrant运行。
请参阅下面每台计算机的配置。
当我在客户端计算机中登录时 - 它没有在服务器的日志上反映。
例如:
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被禁用。
- 这没有帮助。
rsyslog配置
服务器IP:192.168.11.11
。
客户端IP:192.168.11.22
。
这两台机器都安装了RSYSlog&amp;启用并在/etc/rsyslog.conf
文件中具有以下 common 设置:
#### 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
然后使用systemctl restart rsyslog
在客户端和服务器上重新启动RSYSLOG服务,然后再次检查。
编辑:
从评论中粘贴了 - 在解决该问题的Syslog服务器上完成的2个步骤:
-
在服务器上评论
#### Rules ####
部分。 -
从
## Rules for processing remote logs
部分中删除& ~
。
信用 @alexey在两个关键点帮助我。
我还会添加一些可能对他人有帮助的有用点:
1:首先,检查两台机器的连接性。例如,如果使用流量网络,请将两台机器置于他们可以看到(ping(的网络模式。例如,仅主机模式还可以,但是每个机器在其孤立网络上的内部模式都无法正常工作。
2:仅在Syslog服务器中需要删除以下代码:
$ModLoad imudp
$UDPServerRun 514
3:在客户端计算机上 - 您可以评论所有#### Rules ####
部分,并将转发规则放在文件>或的结尾处您可以指定转发直列(使用客户端IP或主机名,如果在/etc/hosts
中配置(:
#### RULES ####
kern.* /dev/console
*.info;mail.none;authpriv.none;cron.none @192.168.11.11:514 # <--- Like this
auth,authpriv.* /var/log/secure
local7.* /var/log/boot.log
4:快速检查UDP连接是否成功:
forward auth登录到服务器(如此auth,authpriv.* @192.168.11.11:514
(。
ssh进入客户端计算机,在用户之间切换并在服务器上查看/var/log/Directory下的以下文件:
sshd.log su.log sudo.log systemd-logind.log
5:请谨慎使用RSYSLOG语法 - 例如,如果您使用SED作为配置脚本的一部分,以替换和编辑配置文件中的行 - 检查输出:
在一行中指定$模板部分:
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs
将导致错误:
8月3日13:50:04服务器rsyslogd [5539]:错误: 配置行忽略:'。?remotelogs'[v8.24.0-34.el7]
这是正确的语法 - 将规则分为新行(如果使用sed
生成 - 只需添加/n
(:
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
6:在/etc/rsyslog.conf
中每次更改之后,不要忘记systemctl restart rsyslog
。由于#5这样的情况,请始终检查RSYSLOG状态:systemctl status rsyslog
。
7:rsyslog的较新版本(我认为5 (支持了更清洁的语法 - 例如,它是默认版本在ubuntu的较新版本上,但出于某些原因而不是Centos7。
。8:在syslog -server上 - 确保启用了防火墙并配置为在相关端口上接受UDP(请参阅所讨论的配置脚本(:
Chain IN_public_allow (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW
ACCEPT udp -- anywhere anywhere udp dpt:syslog ctstate NEW