diff --git a/examples/Demo/Demo.csproj b/examples/Demo/Demo.csproj index 86d54363..7121aef5 100644 --- a/examples/Demo/Demo.csproj +++ b/examples/Demo/Demo.csproj @@ -58,6 +58,7 @@ + diff --git a/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs b/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs new file mode 100644 index 00000000..ae1bb141 --- /dev/null +++ b/examples/Demo/Features/SerilogGrafanaLokiLogger/SerilogGrafanaLokiExample.cs @@ -0,0 +1,34 @@ +using NBomber.CSharp; +using Serilog; +using Serilog.Sinks.Grafana.Loki; + +namespace Demo.Features.SerilogGrafanaLokiLogger; + +public class SerilogGrafanaLokiExample +{ + public void Run() + { + var scenario = Scenario.Create("hello_world_scenario", async context => + { + await Task.Delay(1000); + + context.Logger.Information("my log message: {0}", context.InvocationNumber); + + return Response.Ok(); + }) + .WithoutWarmUp() + .WithLoadSimulations( + Simulation.KeepConstant(copies: 1, during: TimeSpan.FromSeconds(30)) + ); + + NBomberRunner + .RegisterScenarios(scenario) + .WithLoggerConfig(() => + new LoggerConfiguration() + .MinimumLevel.Debug() + .WriteTo.GrafanaLoki("http://localhost:3100", + new [] {new LokiLabel {Key = "application", Value = "NBomber"}}) + ) + .Run(); + } +} diff --git a/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml b/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml new file mode 100644 index 00000000..f8192632 --- /dev/null +++ b/examples/Demo/Features/SerilogGrafanaLokiLogger/docker-compose.yaml @@ -0,0 +1,13 @@ +version: "3" + +services: + loki: + image: grafana/loki:master + ports: + - 3100:3100 + command: -config.file=/etc/loki/local-config.yaml + + grafana: + image: grafana/grafana:master + ports: + - "3000:3000" diff --git a/examples/Demo/Program.cs b/examples/Demo/Program.cs index 0228665d..103a779f 100644 --- a/examples/Demo/Program.cs +++ b/examples/Demo/Program.cs @@ -11,6 +11,7 @@ using Demo.Features.ElasticsearchLogger; using Demo.Features.RealtimeReporting.CustomReportingSink; using Demo.Features.RealtimeReporting.InfluxDB; +using Demo.Features.SerilogGrafanaLokiLogger; using Demo.Features.Timeouts; using Demo.HelloWorld; using Demo.HelloWorld.LoadSimulation; @@ -24,7 +25,7 @@ // ------------------------------- // ----- Hello World examples ----- // ------------------------------- -new HelloWorldExample().Run(); +//new HelloWorldExample().Run(); // new ScenarioWithInit().Run(); // new ScenarioWithSteps().Run(); // new StepsShareData().Run(); @@ -60,6 +61,7 @@ // ---- Logs ---- // new ElasticsearchExample().Run(); +new SerilogGrafanaLokiExample().Run(); // ---- Timeouts ---- // new ScenarioCompletionTimeout().Run();