假设系统中有大约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
1条答案
按热度按时间koaltpgm1#
根据网络目标的工作方式,我认为不需要任何 Package 器。网络目标已经包含了一个队列,它可以在满的时候丢弃消息。因此,目前,下面是一个合理的配置: