使用 Rsyslog 将应用程序日志发送到 syslog 服务器

使用 Rsyslog 将应用程序日志发送到 syslog 服务器

我正在尝试设置我的 rsyslog,以将 /opt/appname/logs 下的应用程序生成的日志发送到远程 syslog 服务器。我已经将 rsyslog 配置为发送操作系统级别的日志,但想看看它是否也可以发送应用程序的日志。我不确定 IncludeConfig 指令是否有效,因为它会查找另一个 *.conf 文件。

答案1

rsyslog 支持从文件读取。这是通过imfile模块完成的。您需要以下配置:

module(load="imfile" PollingInterval="10") #needs to be done just once

# needs to be done for each file you want to watch
input(type="imfile" File="/path/to/file1" 
     Tag="tag1" 
      StateFile="statefile1" 
      Severity="error" 
      Facility="local7")

更多信息请访问rsyslog 文档站点

答案2

您始终可以使用旧的语法:

例如。/etc/rsyslog.d/11-your-file.conf

$ModLoad imfile

$InputFileName  /app/your-file.log 
$InputFileTag   your-tag
$InputFileStateFile     your-tag 
$InputFileSeverity      info
$InputFileFacility      local7 
$InputRunFileMonitor
$InputFilePersistStateInterval 1000 
local7.*  @@remote-rsyslog-server:port

答案3

如果你挂接启动脚本,你可以使用可以组合

tail -n 0 -F /opt/appname/logs/file | logger ... 

记录器的参数将是优先级,您可以指定远程系统日志服务器,或者只使用本地设置,并让 rsyslog 为您进行转发。

这种设置的缺点是,您必须确保在应用程序启动时跟踪日志,否则您会错过中间的记录。

一个更好的解决方案,但是会带来更多的工作,那就是使用类似 logstash 的东西。

您可以根据应用程序日志配置输入,对于文件,您可以使用sincedb它从上次停止的地方继续,并且您有一个模块可以输出到系统日志。

根据你的需求,这可能需要太多的工作。

相关内容