我们开始将Serilog与Elasticsearch结合使用,它是一种非常有效的方式来存储结构日志数据(以后使用像Kibana这样的工具可视化它们)。但是,我看到了不直接将日志数据写入后端的优势,而是配置了一个日志代理,例如Logstash,它可以负责为日志消息添加标签,选择索引等。使用此设置,应用程序不需要了解日志数据分布。
Logstash位于中间,问题是Serilog接收器最好使用,因此Logstash可以导入其数据,而无需应用高级和CPU密集型过滤器。我已经看到Redis被提到是Logstash的好伙伴,但是Serilog并没有Redis接收器。对于Serilog接收的任何建议哪些数据可以通过Logstash轻松传输到Elasticsearch索引?
甚至有一种方法可以先使用Elasticsearch sink,然后在进行一些安排并应用额外的标签后再将其环回到Elasticsearch。
答案 0 :(得分:33)
接受的答案是在汇Serilog.Sinks.Http存在之前写的。
可以让HTTP接收器将日志事件发送到Filebeat,而不是记录到文件并让Logstash HTTP input plugin监视它。这意味着创建日志的实例上的移动部件更少。
答案 1 :(得分:13)
我收到了Nicholas Blumhardt(Serilog创建者)的建议,要求将RollingFileSink与JsonFormatter一起使用。
答案 2 :(得分:9)
我已经为Serilog创建了一个支持RabbitMQ的接收器,它使用logstash的rabbitmq输入插件非常好地连接到logstash:
https://www.nuget.org/packages/Serilog.Sinks.RabbitMQ
如果您在应用程序服务器上运行RabbitMQ实例,则可以使用RabbitMQSink使用Serilog登录此RabbitMQ实例,最终通过网络隔离/停机方案。
当网络重新启动时,Logstash将接收队列中的消息。
更新:Sink现在在V2.0中并支持ASP.NET Core 1.0
答案 3 :(得分:0)