elasticsearch - 使用 serilog 将日志直接写入 elasticsearch 是个好主意吗

标签 elasticsearch elastic-stack serilog

我正在评估有关分布式日志服务器的不同选项。

在Java世界中,据我所知,最流行的解决方案是filebeat + kafka + logstash + elasticsearch + kibana。

然而,在 .NET 世界中,有一个 serilog 可以将结构日志直接发送到 elasticsearch。因此,唯一需要的组件是 elasticsearch + kibana。

我搜索了很多,但关于这个解决方案在生产中的信息并不多。我不知道它是否足以处理大量日志。

谁能给我一些建议?谢谢。

最佳答案

确实遇到了同样的问题。我们的系统使用“经典”elk-stack 架构,即 FileBeat -> LogStash -> Elastic ( ->Kibana)。 但正如我们在具有大量日志的大型项目中发现的那样,Serilog 是更好的解决方案,原因如下:

  1. CI\CD - 当您有不同类型的日志且您希望拥有不同类型的不同结构时,Serilog 功能会派上用场。在 LogStash 中,您需要创建一个不同的过滤器以根据模式分解消息。这意味着在日志结构方面和 LogStash 方面存在很大的耦合 - 非常容易出错。
  2. 维护 - 由于CI\CD简单,单点变更,更容易维护大量日志。
  3. 可扩展性 - FileBeat 在处理大块数据时存在问题,因为注册表文件往往会“爆炸” - 个人经验引用 stack overflow flow question ; elastic-forum question
  4. 更少的故障点 - 使用 serilog,当使用 Filebeat 时,日志直接发送到 elastic,您必须通过 LogStash。又一个失败的地方。

希望对您的评价有所帮助。

关于elasticsearch - 使用 serilog 将日志直接写入 elasticsearch 是个好主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682219/

相关文章:

salesforce - 错误= >"Elasticsearch Unreachable: [http://localhost:9200/][Manticore::SocketException] Connection refused (Connection refused)"}

elasticsearch - 追加到嵌套对象字段

sql-server - 如何将数据从 ELK 传输到 SQL Server?

c# - Serilog.Extras.AppSettings 和复杂对象

elasticsearch - 通过REST API URI从ElasticSearch中的字段获取不同的值

elasticsearch - 使用文档中字段A的值的单词数组对字段B进行 Elasticsearch

c# - 在字符串前面放置 "$"是有效的 Serilog 代码吗?

asp.net-mvc - Serilog、Elmah 或两者都适用于 ASP.NET MVC 项目?

elasticsearch - 无论如何,是否有阻止访问Elasticsearch内置API(例如/_nodes)的信息? ,/_ cluster,/_ cat等?

java - 在Java中使用Elasticsearch的NoClassDefFoundError