繁体   English   中英

Serilog-Sinks-Loki 将日志大批量传输给 Loki。 如何减少批量?

[英]Serilog-Sinks-Loki transmitting logs to Loki in big batches. How can I reduce batch amount?

我正在尝试将我的日志从 .netcore 3.1 API 发送到 Loki 服务器。 为此,我正在使用 Serilog-Sinks-Loki 金块包。 当我运行我的代码时,日志会立即发送,我可以在 Grafana 中看到它们。 随着时间的推移,日志的延迟越来越大。 最终我看到我的日志在延迟 10 分钟后到达 Loki。 我读到了相关信息并了解到 Serilog-Sinks-Loki 位于 Serilog-Sinks-Http 之上,所以我需要在那里配置一些东西以使我的日志更快到达但不确定如何,有人可以帮我吗? 我的目标是立即发送我的日志,没有延迟。

这是我的 program.cs 代码

public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
                .UseLamar()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .ConfigureLogging(logging =>
                {

                    var credentials = new BasicAuthCredentials("LOKI-SERVER-URL", "USER", "PASSWORD");
                    var log = new LoggerConfiguration()
                            .MinimumLevel.Verbose()
                            .Enrich.FromLogContext()
                            .WriteTo.LokiHttp(credentials)
                            .CreateLogger();
                    logging.AddSerilog(log);
                });
    }

尽管Serilog.Sinks.Loki包装了一个Serilog.Sinks.Http器, 但它没有公开任何允许您配置消息发送频率的设置batchPostingLimitperiod

也就是说, Sinks.Sink.Http的默认周期是 2 秒,因此 10 分钟对于使用默认设置发送的消息来说太长了。 您可能遇到阻止接收器发送消息或阻止服务器接收消息的连接问题。

您是否尝试启用SelfLog以查看接收器是否捕获了任何错误?

如果没有,您可以监视网络流量以查看当接收器尝试发送日志事件时是否可以找到失败的尝试和/或超时。

您还可以扩展 LokiHttpClient并将一些调试消息写入文件或其他内容,以查看发送消息的频率/数量。

作为参考,这是Serilog.Sinks.Loki库中的一个最近问题(也许是您创建的?)

日志在 10 分钟内批量发送一次 #26

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM