logstash-forwarder缺少频繁滚动日志文件的日志事件

时间:2015-10-06 18:25:00

标签: logstash logstash-forwarder

Logstash转发器缺少频繁滚动日志文件的日志事件。

我的java应用程序有很多批处理作业和实时数据源。基本上它是一个企业集成应用程序。

我的应用程序为每个批处理作业创建日志文件,并使用log4j2作为日志记录框架。 log4j2是自定义的,可以根据我通过bash脚本调用提供的feed名称动态创建日志文件,并使用log4j2路由适配器创建日志文件。

这是log4j2配置。

<?xml version="1.0" encoding="UTF-8"?> <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" shutdownHook="disable"> <Properties>
        <Property name="log-path">${env:LOGPATH}</Property> </Properties> <Appenders>
     <Routing name="RoutingAppender" ignoreExceptions="true">
        <Routes pattern="${ctx:logFileName}">
            <Route>
                <RollingFile name="${ctx:logFileName}"
                    fileName="${log-path}/${ctx:logFileName}.log"
                    filePattern="${log-path}/${ctx:logFileName}_%i.log.gz">
                    <BurstFilter level="DEBUG" rate="16" maxBurst="100"/>
                    <PatternLayout pattern="%d{MM-dd-yyyy HH:mm:ss,SSS}|%level|[%thread]|[${env:USERNAME}]|[%C]|- %msg%n"/>
                    <SizeBasedTriggeringPolicy size="50MB" />
                    <DefaultRolloverStrategy max="20"/>
                </RollingFile>
            </Route>
        </Routes>
    </Routing> </Appenders> <Loggers>
    <Root level="INFO">
        <AppenderRef ref="RoutingAppender"/>
    </Root> </Loggers> </Configuration>

此配置工作正常,并根据提供的loggerFile名称创建日志文件。
很少有批处理作业运行更长时间并处理数百万个数据。业务要求是捕获流经我的应用程序的数据并将其记录以供审计。

但是,对于大多数作业,我没有看到任何日志事件因大多数Feed而丢失。但是,由于处理的数据量大,基于汇总的情况每3分钟发生一次,因此会丢失一些日志事件。

我可能无法增加 sizeBasedTriggeringPoicy ,因为在任何给定时间可能有超过1500个Feed处理,并且增加 sizeBasedTriggeringPolicy可能会导致磁盘空间问题

这是我的logstash转发器配置

{
  "network": {
    "servers": [ "Server1:5004","Server2:5004","Server3:5004"],
    "ssl certificate": "./certs/logstash.crt",
    "ssl key": "./certs/logstash.key",
    "ssl ca": "./certs/logstash.crt",
    "timeout": 15
  },

  "files": [
    {
      "paths": [
        "/opt/logs/*.log"],
      "fields": { "type": "application" },
      "dead time": "10m"
    }
  ]
}

以下是为logstash转发器设置的参数

./logstash-forwarder -quiet=true -config=./logstash-forwarder.conf

Kibana,显示证据,每2分钟收到一次日志。但我的应用程序正在连续处理数据,并可以看到我的日志文件中记录的事件。 根据我的分析,我发现以前滚动文件的偏移量被用于当前日志文件中enter image description here

应该将哪些配置添加到logstash转发器以捕获所有日志事件。

我试过-tail = true,但没有用。

我使用的是0.4.0版本的logstash-forwarder,我的操作系统是RHEL 5.X

1 个答案:

答案 0 :(得分:0)

在提出这个问题时,FileBeats正在开发中。弹性团队建议使用FileBeats作为logstash-forwarder将是日落。