gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:42:59 31 4
gpt4 key购买 nike

我正在尝试将我的日志从 .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水槽,it doesn't expose any of the settings这将允许您配置发送消息的频率( batchPostingLimit , period , etc. )
也就是说,默认期限为 Sinks.Sink.Http是 2 秒,因此 10 分钟对于使用默认设置发送的消息来说太长了。您可能遇到阻止接收器发送消息或阻止服务器接收消息的连接问题。
您是否尝试启用 SelfLog 查看接收器是否捕获了任何错误?
如果没有,您可以监视网络流量以查看当接收器尝试发送日志事件时是否可以找到失败的尝试和/或超时。
您也可以extend the LokiHttpClient并将一些调试消息写入文件或其他内容,以查看发送消息的频率/数量。
引用这里是 Serilog.Sinks.Loki 中的最新问题 repo (也许你创建了它?)

Logs are been sent as a batch once in 10 minutes #26

关于c# - Serilog-Sinks-Loki 将日志大批量传输给 Loki。如何减少批量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64472313/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com