我正在评估有关分布式日志服务器的不同选项。
在Java世界中,据我所知,最流行的解决方案是filebeat + kafka + logstash + elasticsearch + kibana。
然而,在 .NET 世界中,有一个 serilog 可以将结构日志直接发送到 elasticsearch。因此,唯一需要的组件是 elasticsearch + kibana。
我搜索了很多,但关于这个解决方案在生产中的信息并不多。我不知道它是否足以处理大量日志。
谁能给我一些建议?谢谢。
最佳答案
我确实遇到了同样的问题。我们的系统使用“经典”elk-stack
架构,即 FileBeat -> LogStash -> Elastic ( ->Kibana)。
但正如我们在具有大量日志的大型项目中发现的那样,Serilog 是更好的解决方案,原因如下:
- CI\CD - 当您有不同类型的日志且您希望拥有不同类型的不同结构时,
Serilog
功能会派上用场。在LogStash
中,您需要创建一个不同的过滤器以根据模式分解消息。这意味着在日志结构方面和LogStash
方面存在很大的耦合 - 非常容易出错。 - 维护 - 由于CI\CD简单,单点变更,更容易维护大量日志。
- 可扩展性 -
FileBeat
在处理大块数据时存在问题,因为注册表文件往往会“爆炸” - 个人经验引用 stack overflow flow question ; elastic-forum question - 更少的故障点 - 使用 serilog,当使用
Filebeat
时,日志直接发送到 elastic,您必须通过LogStash
。又一个失败的地方。
希望对您的评价有所帮助。
关于elasticsearch - 使用 serilog 将日志直接写入 elasticsearch 是个好主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682219/