Logging Rsyslog-服务器上未显示日志

Logging Rsyslog-服务器上未显示日志,logging,centos,firewall,syslog,rsyslog,Logging,Centos,Firewall,Syslog,Rsyslog,正在尝试配置客户端以将日志发送到Rsyslog服务器 这两台机器都在Centos7上运行 请参阅下面每台机器的配置 当我在客户端计算机中登录时,它不会反映在服务器的日志中 例如: logger "Some message..." 但当我将服务器的IP添加到命令时: logger -n 192.168.11.11 "Some message..." 我可以看到服务器计算机上正在创建一个带有客户端IP的目录: [root@server log]# ls -la total 200 drwxr-x

正在尝试配置客户端以将日志发送到Rsyslog服务器

这两台机器都在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
.......
.......
问题:知道我为什么看不到客户端本地日志吗?

关于本次讨论:

  • SELINUX已禁用
  • 没有帮助

  • Rsyslog配置 服务器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 
     & ~
    
    客户端上计算机I设置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

    发送远程主机上任何级别日志的默认格式如下:
    *.@远程主机:514

    然后使用
    systemctl restart rsyslog
    在客户端和服务器上重新启动rsyslog服务,然后再次检查


    编辑:

    从注释粘贴-在解决问题的syslog服务器上执行的另外两个步骤:

  • 评论服务器上的
    ###########
    部分

  • 从处理远程日志的
    ##规则
    部分删除
    &


  • 感谢@Alexey在两个关键点上帮助了我

    我还将添加一些可能对其他人有帮助的更有用的要点:

    1:首先检查两台机器的连通性。 例如,如果使用vagrant网络,请将两台机器置于相互可见(ping)的网络模式。例如,仅主机模式正常,但每台机器位于其隔离网络上的内部模式将不工作

    2:仅在syslog服务器中需要取消注释以下代码:

    $ModLoad imudp
    $UDPServerRun 514
    
    3:在客户端计算机上-您可以对所有
    #####规则####
    部分进行注释,并将转发规则放在文件的末尾 您可以指定内联转发(如果在
    /etc/hosts
    中配置,则使用客户端IP或主机名):

    5:注意rsyslog语法-例如,如果您将其用作配置脚本的一部分以替换和编辑配置文件中的行-请检查输出:

    在一行中指定$template部分:

    $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs
    
    将导致错误:

    Aug 03 13:50:04服务器rsyslogd[5539]:错误:中有额外字符 已忽略配置行:'?RemoteLogs'[v8.24.0-34.el7]

    这是正确的语法-将规则拆分为新行(如果使用
    sed
    -只需添加
    /n
    ):

    6:在
    /etc/rsyslog.conf
    中每次更改后,不要忘记
    systemctl重新启动rsyslog
    。由于类似于#5的情况,请始终检查rsyslog状态:
    systemctl status rsyslog

    7:新版本的rsyslog(我认为5+)支持更简洁的语法——例如,它现在作为Ubuntu新版本的默认语法出现,但由于某些原因,Centos7上没有

    8:在syslog服务器上-确保防火墙已启用并配置为在相关端口上接受UDP(请参阅相关的配置脚本):


    @Rotmya请检查,服务器的本地日志上是否有来自客户端的事件?以下一些提示可能会有所帮助:1.确保配置文件的最后一个字符串为空。2.在服务器的配置中:注释掉字符串
    &
    ,然后检查。3.在服务器的配置中:尝试在处理远程日志的规则之后粘贴本地规则。谢谢@Alexey:About“服务器的本地日志上是否有来自客户端的事件?”我看不到,您可以指定要“跟踪”的文件夹吗?$~被移除。关于远程规则的放置-在我的配置中(在问题中指定)###处理远程日志的规则部分位于服务器的rsyslog.conf文件的全局指令和规则部分之前。您可以尝试以下步骤:1)要正确解析名称,请在主机上的
    /etc/hosts
    中添加记录,并使用
    ping
    2)放置部分
    处理远程日志的规则
    在客户端配置上的
    GLOBAL DIRECTIVES
    部分和注释掉
    规则部分之后,使用
    systemctl restart rsyslog
    3)重新启动服务器服务在客户端配置上指定:
    *.info@192.168.11.11:514
    4)使用
    systemctl restart rsyslog
    5)检查文件夹
    /var/log
    on服务器,如果存在具有客户端dns名称(非ip)的文件夹,则可能存在客户端已发送的
    systemd.log
    rsyslog.log
    。谢谢@Alexey。根据您的所有说明,应将以下内容作为答案:1。服务器上的注释规则部分。2.删除&~。你能把它加到你的答案里吗?@Rotmya,很高兴它能帮上忙。只是想问一下,您现在是否正在查看由服务器生成的日志更新?
    #### 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
    
    sshd.log  su.log  sudo.log  systemd-logind.log
    
    $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs
    
    $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
    *.* ?RemoteLogs
    
    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