【问题标题】:logstash-forwarder missing log events for frequently rolling log fileslogstash-forwarder 缺少频繁滚动日志文件的日志事件
【发布时间】:2015-10-06 18:25:00
【问题描述】:

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

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

我的应用程序为每个批处理作业创建日志文件,并使用 log4j2 作为日志框架。 log4j2 被定制为根据我通过 bash 脚本调用提供的提要名称动态创建日志文件,并使用 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 名称创建日志文件

很少有批处理作业运行时间更长并处理数百万个数据。业务需求是捕获流经我的应用程序的数据并将其记录下来以供审计。

但是,对于大多数工作,我没有看到大多数提要丢失任何日志事件。但是对于某些提要,由于处理的数据量很大,基于大小的汇总每 3 分钟发生一次。,有日志事件丢失。

我可能无法创建 sizeBasedTriggeringPoicy,因为在任何给定时间可能有超过 1500 个提要处理,增加 sizeBasedTriggeringPolicy 可能会导致磁盘空间问题。 p>

这是我的 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 分钟收到一次日志。但是我的应用程序正在连续处理数据,并且可以看到记录在我的日志文件中的事件。 根据我的分析,我发现之前滚动文件的偏移量已被用于当前日志文件

应该向 logstash 转发器添加哪些配置才能捕获所有日志事件。

我试过-tail=true,还是不行。

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

【问题讨论】:

  • 您没有包含您的 logstash 配置。您是否在使用日期过滤器?{}你的 elasticsearch refresh_interval 设置为多少?
  • 这是一个存在于 logstash-forwarder 的错误,并在 file-beats 中得到解决。
  • 您应该回答自己的问题,并为找到您问题的其他人提供问题的链接。

标签: logstash logstash-forwarder


【解决方案1】:

在提出这个问题时,FileBeats 正在开发中。 Elastic 团队建议使用 FileBeats 作为 logstash-forwarder 将被淘汰。

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多