您尚未登录。

#1 2018-12-25 13:06:35

lujun9972
会员
注册时间: 2016-10-21
帖子: 73

rsyslog到底是从/run/systemd/journal/syslog还是dev-log中读日志的?

我想把本机的日志发到一个中央日志服务器上(rsyslog)

我先安装了rsyslog,然后在 /etc/rsyslog.conf 中加上转发规则,方便期间我设定把所有日志都转发到日志服务器上,而为了防止日志被丢失指定了用TCP来发送:

*.*    @@192.168.1.9

我在 /etc/rsyslog.conf 中确定看到加载了 imuxsock 模块,但是不知道为什么用logger进行测试时中央服务器上只能看到kern日志,而看不到其他任何日志。

后来我尝试将 /etc/systemd/journald.conf中的 ForwardToSyslog 设为 yes后才在中央服务器上看到了其他日志。

整个过程我有两点疑问:
1、不是rsyslog加载了imuxsock模块后就能读取journal产生的日志吗?,为什么必须要设置 ForwardToSyslog 设为 yes后才能在中央服务器上看到了其他日志呢?
2、根据rsyslog的manual,rsyslog似乎是通过读取 /dev/log 来获取日志的,而 /dev/log 是 /run/systemd/journal/dev-log 的软应用。
     但是另一方面,journald.conf 中设置 FowardToSyslog为yes后是将日志写入到 /run/systemd/journal/syslog中的,
     既然写入和读取的都不是同一个文件,为什么还能够时间日志的转发呢?

离线

#2 2018-12-25 13:50:16

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: rsyslog到底是从/run/systemd/journal/syslog还是dev-log中读日志的?

那不就说明是从syslog读的?


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#3 2018-12-26 22:43:56

lujun9972
会员
注册时间: 2016-10-21
帖子: 73

Re: rsyslog到底是从/run/systemd/journal/syslog还是dev-log中读日志的?

xtricman 说:

那不就说明是从syslog读的?

似乎是,但是如果 man rsyslogd 会看到这么一段话

       /dev/log
              The Unix domain socket to from where local syslog messages are
              read.

这个意思,应该是说rsyslog是从 /dev/log 里读的吧

离线

#4 2018-12-27 15:23:23

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: rsyslog到底是从/run/systemd/journal/syslog还是dev-log中读日志的?

http://man7.org/linux/man-pages/man5/jo … onf.5.html
这里谈到的说法是说转发到一个传统的日志守护进程,没有谈到明确的行为。例如它怎么知道咋转发,机器上压根没有这种进程的话它会做什么。没有谈到你说的这个socket的路径。你3楼说的也完全没有谈及rsyslogd从哪里读数据。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#5 2018-12-27 20:35:27

lujun9972
会员
注册时间: 2016-10-21
帖子: 73

Re: rsyslog到底是从/run/systemd/journal/syslog还是dev-log中读日志的?

找到了一个链接解答了这个问题https://unix.stackexchange.com/questions/205883/understand-logging-in-linux
基本上就是说,rsyslogd已经不再监听 /dev/log 了,而是由sytemd-jounald来监听 /dev/log 然后将日志写入 /run/systemd/journal/syslog, rsyslog再通过imuxsock模块监听 /run/systemd/journal/syslog

离线

页脚