我在用着:
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
我看到 rsyslog 在 ubuntu、debian、fedora 和许多其他发行版上是默认的。首先,我认为这个5.8.6太旧了,所以它没有提供文本文件输入功能,但是google了一下,从3.X开始也可以做同样的事情。
我在这里做错了什么?
附加问题: 我试过 syslog-ng,配置文件非常好,在这个功能上效果很好。但是google了一圈,似乎并没有像rsyslog那样被广泛使用。关于它们没有很好的比较(几乎已经过时了)。您建议使用哪个,syslog-ng 或 rsyslog?(我使用的是 Ubuntu/Debian)
谢谢!
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"
根据这个文件,应该是
代替:
解决了问题。
这是关于许可。
/etc/rsyslog.conf
有这些线:它会在初始化后放弃 syslog 用户和组的权限。
/var/log/nginx/access.log
只能由www-data
和adm
组中的用户访问。更改
$PrivDropToGroup syslog
以$PrivDropToGroup adm
使其工作。感谢@quanta 指出
$InputFilePollInterval
指令中的错误。