logstash的nlog配置

drkbr07n  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(192)

假设系统中有大约20个生成应用程序诊断数据(日志)的生成器,每个生成器都使用以下NLog logstash目标配置:

<!-- https://github.com/NLog/NLog/wiki/Network-target -->
    <target xsi:type="Network" name="logstash"
            address="tcp://logstash-server:port"
            newLine="true"
            maxMessageSize="65000" onOverflow="Discard"
            connectionCacheSize="5" keepConnection="True" KeepAliveTimeSeconds="30" >
      <layout xsi:type="JsonLayout" includeAllProperties="true">
        ...
      </layout>
    </target>

我有以下考虑,希望您提出意见:

  • BufferingWrapper Package logstash目标是否有意义?这是否会导致一个巨大的消息,可能超过maxMessageSize
  • 或者出于某种原因使用AsyncWrapper更好?
  • 假设20个生成器每个都拥有5个连接,那么是否存在可以达到的TCP限制?

我想先从强耦合开始,然后再考虑记录到日志文件,然后再将其发送到logstash。对于更大的项目,任何有用的参考或github示例也很感谢。
参考文献:
https://github.com/nlog/nlog/wiki/BufferingWrapper-target
https://github.com/NLog/NLog/wiki/AsyncWrapper-target

koaltpgm

koaltpgm1#

根据网络目标的工作方式,我认为不需要任何 Package 器。网络目标已经包含了一个队列,它可以在满的时候丢弃消息。因此,目前,下面是一个合理的配置:

<!-- https://github.com/NLog/NLog/wiki/Network-target -->
    <!-- TCP protocol must be used and newLine is critical -->
    <target xsi:type="Network" name="logstash"
            address="tcp://logstash-server:port"
            newLine="true"
            maxMessageSize="65000" onOverflow="Discard"
            maxQueueSize="10000"
            connectionCacheSize="5" keepConnection="True" KeepAliveTimeSeconds="30" >
      <layout xsi:type="JsonLayout" includeAllProperties="true">
        ...
      </layout>
    </target>

相关问题