rsyslog 文本文件输入模块错误

rsyslog 文本文件输入模块错误

我在用着:

root@u1210: /etc () # lsb_release -d
Description:    Ubuntu 12.10
root@u1210: /etc () # dpkg -l | grep rsyslog
ii  rsyslog                                   5.8.6-1ubuntu9                                    amd64        reliable system and kernel logging daemon

今天,我尝试从 nginx 日志文件读取日志,但出现此错误:

Mar 11 17:34:18 u1210 kernel: imklog 5.8.6, log source = /proc/kmsg started.
Mar 11 17:34:18 u1210 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="9742" x-info="http://www.rsyslog.com"] start
Mar 11 17:34:18 u1210 rsyslogd: rsyslogd's groupid changed to 103
Mar 11 17:34:18 u1210 rsyslogd: rsyslogd's userid changed to 101
Mar 11 17:34:18 u1210 rsyslogd-3003: invalid or yet-unknown config file command - have you forgotten to load a module? [try http://www.rsyslog.com/e/3003 ]
Mar 11 17:34:18 u1210 rsyslogd: the last error occured in /etc/rsyslog.conf, line 68:"$InputFilePollingInterval 10"
Mar 11 17:34:18 u1210 rsyslogd-2124: CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [try http://www.rsyslog.com/e/2124 ]

使用以下方法检查 rsyslog 的配置版本:

root@u1210: /etc () # ps -ef | grep rsyslog
syslog   18934     1  0 17:42 ?        00:00:00 rsyslogd -c5

我只是使用了默认配置,添加了以下几行:

$ModLoad imfile

$InputFileName /var/log/nginx/access.log
$InputFileTag nginx:
$InputFileStateFile nginxxxx
$InputFileSeverity error
$InputFileFacility local7
$InputRunFileMonitor
$InputFilePollingInterval 10

这是配置文件:http://pastebin.com/8RnHXaDd

nginx 日志文件存在:

root@u1210: ~ () # ls -l /var/log/nginx/access.log
-rw-r----- 1 www-data adm 730040 Mar 11 17:49 /var/log/nginx/access.log

我发现 ubuntu、debian、fedora 和许多其他发行版都默认使用 rsyslog。首先,我认为这个 5.8.6 太旧了,所以它不提供文本文件输入功能,但在 google 上搜索后,我发现从 3.X 开始也可以这样做。

我在这里做错了什么?

附加问题: 我尝试了 syslog-ng,配置文件非常好,它在这个功能上表现不错。但是谷歌搜索了一下,它似乎没有像 rsyslog 那样被广泛使用。它们之间没有很好的比较(几乎都过时了)。你建议使用 syslog-ng 还是 rsyslog?(我使用 Ubuntu/Debian)

谢谢!

答案1

rsyslogd-3003: invalid or yet-unknown config file command - have you forgotten to load a module? [try http://www.rsyslog.com/e/3003 ]

rsyslogd: the last error occured in /etc/rsyslog.conf, line 68:"$InputFilePollingInterval 10"

根据文件,应该是

$InputFilePollInterval 10

代替:

$InputFilePollingInterval 10

答案2

解决了的问题。

这是关于许可的。 /etc/rsyslog.conf有以下几行:

$PrivDropToUser syslog
$PrivDropToGroup syslog

初始化后,它会放弃 syslog 用户和组的权限。

/var/log/nginx/access.logwww-data仅组内的和用户可以访问adm

改变它$PrivDropToGroup syslog$PrivDropToGroup adm使其起作用。

感谢@quanta 指出$InputFilePollInterval指令中的错误。

相关内容