In a .NET Console app, can I flush data instead of waiting flush interval?

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 ?

Also, one more question :
for the transaction type, I use ApiConstants.TypeRequest, can I use any other string here, or am I limited to the values in ApiConstants ?

Hi @glacasa,

unfortunately, a Flush API is not available yet.
Here is a GitHub issue if you want to track the progress of that feature: Agent API to flush all the queued events · Issue #288 · elastic/apm-agent-dotnet · GitHub

For transition types, you can use an arbitrary strings.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.