簡體   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