C# Serilog接收Loki,将日志大批量发送给Loki。如何减少批量数量?
我正在尝试将我的日志从.netcore 3.1 API发送到Loki服务器。为此,我使用了Serilog Sinks Loki nugget软件包。 当我运行代码时,会立即发送日志,我可以在Grafana中看到它们。随着时间的推移,日志的延迟越来越大。最后,我看到我的日志延迟10分钟到达洛基。 我读过这篇文章,了解到Serilog Sinks Loki位于Serilog Sinks Http之上,所以我需要在那里配置一些东西,以使我的日志更快到达,但不知道如何,有人能帮我吗? 我的目标是立即发送日志,不要延迟 这是我的program.cs代码C# Serilog接收Loki,将日志大批量发送给Loki。如何减少批量数量?,c#,logging,httpclient,serilog,C#,Logging,Httpclient,Serilog,我正在尝试将我的日志从.netcore 3.1 API发送到Loki服务器。为此,我使用了Serilog Sinks Loki nugget软件包。 当我运行代码时,会立即发送日志,我可以在Grafana中看到它们。随着时间的推移,日志的延迟越来越大。最后,我看到我的日志延迟10分钟到达洛基。 我读过这篇文章,了解到Serilog Sinks Loki位于Serilog Sinks Http之上,所以我需要在那里配置一些东西,以使我的日志更快到达,但不知道如何,有人能帮我吗? 我的目标是立即发送
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);
});
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.UseLamar()
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.ConfigureLogging(日志=>
{
var凭证=新的基本凭证(“LOKI-SERVER-URL”、“用户”、“密码”);
var log=new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.FromLogContext()的
.WriteTo.LokiHttp(凭据)
.CreateLogger();
logging.AddSerilog(log);
});
}
虽然Serilog.Sinks.Loki
包装了一个Serilog.Sinks.Http
sink,它允许您配置消息的发送频率()
也就是说,Sinks.Sink.Http
的默认周期是2秒,因此10分钟对于使用默认设置发送消息来说太长了。您可能存在连接问题,阻止接收器发送消息或阻止服务器接收消息
您是否尝试过启用以查看接收器是否捕获了任何错误
如果没有,您可以监视网络流量,以查看在接收器尝试发送日志事件时是否可以找到失败的尝试和/或超时
您还可以将一些调试消息写入文件或其他内容,以查看发送消息的频率/数量
这里有一个最近发行的Serilog.Sinks.Loki
repo(也许是您创建的?)
非常感谢您的回答,在这里和GitHub,是的,就是我。这很奇怪。因为今天早些时候,我注意到我所有的日志每10分钟到达一大块(准确地说),这似乎是一种模式。(这发生在我通过VS在本地运行代码时,甚至在我将代码发布到Azure web app之后)现在你们告诉我,默认周期是2秒,我又看了看grafana,似乎几秒钟后日志就到了。我无法解释这种行为,除了可能Loki服务器存在连接问题。无论如何,非常感谢你!