Monitoring - verisoftCZ/verisoft-framework GitHub Wiki
Aplikační monitoring řešíme pomocí Application Insights. Konkrétně přes Microsoft.ApplicationIsnights.AspNetCore
- krokem je vytvoření application insights v azure portál a vygenerování application insights connection stringu
- krokem je přidání connection stringu do appsettings.ENV.json
{
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=YOUR_INSTRUMENTATION_KEY;IngestionEndpoint=https://YOUR_REGION_ENDPOINT"
},
// ... other settings
}
použití v projektu:
using Verisoft.Core.AspNet
private static void RegisterMonitoring(IServiceCollection serviceCollection, IConfiguration configuration)
{
serviceCollection.AddVerisoftApplicationInsights(configuration, new Verisoft.Core.AspNet.ApplicationInsights.AIOptions()
{
EnableSqlCommandTextTracking = true, //povolí/zakáže logovat SQL do appinsights
EnableHangfireTracking = false, //disables hangfire SQL dependencies, but allows tracking of other - nedoporučuji používat genruje spoustu eventu každou vteřinu a plní applicationsight což je drahé
});
}
Pro trackování vlastních eventů je možné použít IBusinessTracker
z nugetu Verisoft.Core.AspNet
konkrétně jde (Verisoft.Core.AspNet.ApplicationInsights)
registrace healthchecks do aplikace
private static void RegisterHealthChecks(IServiceCollection serviceCollection, IConfiguration configuration)
{
serviceCollection.AddVerisoftHealth(configuration, c =>
{
c.ConnectionString = configuration["Database:ConnectionString"]; //connection string k DB
c.DatabaseName = "<DBNAME>";
});
}
v program.cs
app.MapHealthChecks("/health");
Test: https://localhost:9999/health - nutné změnit port
Na tyto health checky je pak nutné napojit azure monitor aby sledoval jestli jsou mikroservisy dostupné a případně lze nastavit alerty na správce aplikace