1

I'm trying to monitor a console app (automatically run every hour) in .NET

The app is built on an HostBuilder, I have called .UseAllElasticApm() and .UseConsoleLifetime() on it, and I make a transaction by code :

var transaction = Elastic.Apm.Agent.Tracer.StartTransaction("ConsoleAppRunning", ApiConstants.TypeRequest);

try {
    await RunCode();
}
catch (Exception ex){
    transaction.CaptureException(ex);
}
finally{
    transaction.End();
}

The app closes just after the finally.

This code worked on my dev machine, and I could see data appear on APM.

But once built in Release mode and deployed to Production server, I could see the service in Kibana with Environment Production, but no data in it.

After searching a while, I think the problem is the flush interval set to 30s by default

I changed the value to 1s, and added a Task.Delay at the end of the console app, and now I see the transactions in Kibana.

But I don't like this solution, isn't there a way to force flush when I know my app is about to close, and wait for it to be done ?

glacasa
  • 1,770
  • 2
  • 16
  • 32

0 Answers0