我没有看到 rsyslog 拾取我试图监控的所有文件。我使用的是 Ubuntu 12.04 LTS 的标准配置,但将以下内容添加到 /etc/rsyslog.d/30-logentries.conf。
我只看到来自 /var/log/myapp.log 的消息和 /etc/rsyslog.d/50-default.conf 中监控的几个系统日志文件被推送到 LogEntries,而不是我尝试监控的其他文件。
我已经验证了以下内容:
- 我的其他日志文件可供所有人读取
- 我的其他日志文件正在写入
- LogEntries 正在从服务器接收日志消息
- /var/log/syslog 可以看到 LogEntries 看到的内容,因此日志消息不会因日志条目而丢失
- 重新启动 rsyslog 无法解决问题
对我做错的事情有什么想法吗?
$ModLoad imfile # Load the imfile input module
$ModLoad imklog # for reading kernel log messages
$ModLoad imuxsock # for reading local syslog messages
$InputFileName /var/log/myapp.log
$InputFileTag myapp:
$InputFileStateFile myapp
$InputRunFileMonitor
$InputFileName /var/log/nginx/myapp.log
$InputFileTag nginx-myapp:
$InputFileStateFile nginx-myapp
$InputRunFileMonitor
$InputFileName /var/log/nginx/access.log
$InputFileTag nginx-access:
$InputFileStateFile nginx-access
$InputRunFileMonitor
$InputFileName /var/log/nginx/error.log
$InputFileTag nginx-error:
$InputFileStateFile nginx-error
$InputRunFileMonitor
$InputFileName /var/log/nginx/redir-to-http-myapp.log
$InputFileTag nginx-redir-to-http-myapp:
$InputFileStateFile nginx-redir-to-http-myapp
$InputRunFileMonitor
$InputFileName /var/log/nginx/redir-to-www-myapp.log
$InputFileTag nginx-redir-to-www-myapp:
$InputFileStateFile nginx-redir-to-www-myapp
$InputRunFileMonitor
$InputFilePollInterval 1
$DefaultNetstreamDriverCAFile /etc/syslog.logentries.crt
$ActionSendStreamDriver gtls
$ActionSendStreamDriverMode 1
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer *.logentries.com
$template LogentriesFormat,"guidguid-guid-guid-guid-guidguidguid production %HOSTNAME% %syslogtag%%msg%\n"
*.* @@api.logentries.com:20000;LogentriesFormat
答案1
独角兽正在将评论转换为 CW……
要让 rsyslog 处理文件,其文件必须可由 rsyslog 读取。尽管 nginx 日志文件是全球可读的,但 nginx 日志目录 ( /var/log/nginx/
) 却不是。授予 rsyslog 对该目录的访问权限可以解决此问题。