SqlCommandMonitor 1.0.200

Sql Command Monitor

SqlCommandMonitor je NuGet balíček pro snadné sledování a logování všech SQL příkazů (DbCommand) prováděných v aplikacích ASP.NET Core s Entity Framework Core.
Umožňuje zachytávat prováděné SQL příkazy, dobu jejich trvání, počet ovlivněných řádků a související informace o HTTP requestu a volající metodě.

Funkce

  • Zachycení SQL příkazů pro všechny typy DbContext.
  • Logování:
    • Časové razítko (Timestamp)
    • SQL příkaz (SqlCommand)
    • Počet ovlivněných řádků (AffectedRows)
    • Doba vykonání v ms (DurationMs)
    • Request ID (RequestId)
    • HTTP route (HttpRoute) - HTTP metoda + cesta
    • Volající metoda (CallingMethod)
    • Zdrojový soubor:řádek (SourceFileLine)
  • Podpora více DbContextů současně.
  • Middleware pro asociaci SQL příkazů s HTTP requesty.
  • Endpoint pro získání statistik SQL příkazů (volitelná HTTP Basic autentizace).
  • Jednoduchá registrace do DI kontejneru.

Instalace

dotnet add package SqlCommandMonitor

Registrace

builder.Services.AddSqlCommandMonitor(builder.Configuration);

Implementace

builder.Services.AddDbContext<AppDbContext>((sp, options) =>
{
    var interceptor = sp.GetRequiredService<DbCommandMonitorInterceptor>();

    options.UseSqlServer(builder.Configuration.GetConnectionString("default), opts =>
    {
        opts.MigrationsHistoryTable("MigrationHistory_App");
    });

    options.AddInterceptors(interceptor);
});

Přidání middleware a endpointu do pipeline

Middleware by měl být registrován po middlewarech, které mohou spouštět SQL příkazy (např. endpoint), aby bylo možné správně asociovat SQL příkazy s HTTP requestem:

app.UseSqlCommandMonitor();

Tento middleware automaticky přidá endpoint pro získání statistik SQL příkazů:

GET /sql-command-stats
  • Endpoint vrací data ve formátu JSON.

  • Podporuje volitelnou HTTP Basic autentizaci.

  • Pokud je v konfiguraci nastavena sekce BasicAuth, endpoint je chráněn.

  • Pokud BasicAuth není nastavena, endpoint je veřejně dostupný.

Příklad statistik SQL příkazů

[
  {
    "Timestamp": "2026-01-06T14:22:10.123Z",
    "RequestId": "26bf23be-105e-427a-a87a-66ac4c6cb24c",
    "HttpRoute": "GET /api/notes/{id}",
    "CallingMethod": "GetNoteById",
    "SourceFileLine": "NoteRepository.cs:45",
    "AffectedRows": null,
    "readRows": 1,
    "DurationMs": 12,
    "SqlCommand": "SELECT [n].[Id], [n].[Title], [n].[Content] FROM [Notes] AS [n] WHERE [n].[Id] = @__id_0"
  },
  {
    "Timestamp": "2026-01-06T14:22:18.456Z",
    "RequestId": "ea6f450c-20d5-474c-9690-cc6f91547e87",
    "HttpRoute": "PUT /api/notes/{id}",
    "CallingMethod": "UpdateNote",
    "SourceFileLine": "NoteRepository.cs:78",
    "AffectedRows": 1,
    "readRows": null,
    "DurationMs": 8,
    "SqlCommand": "UPDATE [Notes] SET [Title] = @p0, [Content] = @p1 WHERE [Id] = @p2"
  }
]

Konfigurace

Možnosti monitorování SQL příkazů lze nakonfigurovat pomocí SqlCommandMonitorOptions při registraci služby.

{
  "SqlCommandMonitorOptions": {
    "Enabled": true,
    "MaxBufferSize": 1000,
    "MinimumLogLevel": "Warning",
    "WarningThresholdMs": 50,
    "BasicAuth": {
      "Username": "user",
      "Password": "password"
    }
  }
}
  • Enabled – zapnutí / vypnutí monitorování
  • MaxBufferSize – maximální počet uložených záznamů
  • MinimumLogLevel – minimální úroveň logování
  • WarningThresholdMs – prahová hodnota v milisekundách pro logování SQL příkazů jako Warning (příkazy s kratší dobou trvání jsou logovány jako Information)
  • BasicAuth – volitelná sekce pro ochranu endpointu přihlašovacími údaji

Pokud není konfigurace uvedena v appsettings.json, použijí se následující výchozí hodnoty:

  • Enabled – true
  • MaxBufferSize – 1000
  • MinimumLogLevel – Information
  • WarningThresholdMs – 50
  • BasicAuth – null (ochrana endpointů je vypnuta)

Tok zpracování SQL příkazů

DbCommandMonitorInterceptor
        │
        ▼
     MonitorData
        │
        ├──► MonitorDataBuffer.Add(...)  (vždy → nejstarší záznamy jsou zahazovány dle MaxBufferSize)
        │                                
        │
        └──► MonitorDataLogger.Log(...)  (filtrováno → MinimumLogLevel, WarningThresholdMs)
                                          
                                          
  • Každý zachycený SQL příkaz je vždy přidán do bufferu.

  • Při překročení MaxBufferSize jsou automaticky odstraněny nejstarší záznamy.

  • Filtrace se aplikuje výhradně na logování.

Showing the top 20 packages that depend on SqlCommandMonitor.

Packages Downloads
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
3
SqlCommandMonitor.Dashboard
Dashboard pro monitorování SQL příkazů v reálném čase.
2

Version Downloads Last updated
1.0.207 1 02/02/2026
1.0.206 0 02/02/2026
1.0.205 1 02/01/2026
1.0.204 1 02/01/2026
1.0.203 1 01/31/2026
1.0.202 1 01/31/2026
1.0.201 0 01/30/2026
1.0.200 1 01/27/2026
1.0.128 3 01/24/2026
1.0.127 2 01/24/2026
1.0.126 2 01/24/2026
1.0.125 3 01/24/2026
1.0.124 3 01/24/2026
1.0.123 2 01/24/2026
1.0.122 2 01/24/2026
1.0.121 3 01/24/2026
1.0.120 3 01/24/2026
1.0.119 3 01/24/2026
1.0.118 3 01/24/2026
1.0.117 3 01/24/2026
1.0.116 4 01/24/2026
1.0.115 3 01/24/2026
1.0.114 3 01/24/2026
1.0.113 2 01/24/2026
1.0.112 2 01/24/2026
1.0.111 3 01/24/2026
1.0.110 3 01/24/2026
1.0.109 3 01/24/2026
1.0.108 3 01/24/2026
1.0.107 2 01/24/2026
1.0.106 2 01/24/2026
1.0.104 3 01/24/2026
1.0.103 2 01/24/2026
1.0.102 3 01/24/2026
1.0.101 2 01/24/2026
1.0.99 3 01/24/2026
1.0.98 3 01/24/2026
1.0.97 2 01/24/2026
1.0.96 3 01/24/2026
1.0.95 3 01/24/2026
1.0.94 3 01/24/2026
1.0.93 2 01/24/2026
1.0.92 3 01/23/2026
1.0.91 3 01/23/2026
1.0.90 3 01/23/2026
1.0.89 3 01/23/2026
1.0.88 3 01/23/2026
1.0.87 3 01/23/2026
1.0.86 3 01/23/2026
1.0.85 2 01/23/2026
1.0.84 1 01/27/2026
1.0.83 1 01/25/2026
1.0.82 3 01/14/2026
1.0.81 3 01/13/2026
1.0.80 3 01/13/2026
1.0.79 2 01/13/2026
1.0.78 3 01/13/2026
1.0.77 3 01/13/2026
1.0.76 3 01/13/2026
1.0.75 3 01/13/2026
1.0.74 3 01/13/2026
1.0.73 3 01/13/2026
1.0.72 3 01/13/2026
1.0.71 3 01/13/2026
1.0.70 3 01/13/2026
1.0.69 3 01/11/2026
1.0.68 3 01/11/2026
1.0.67 3 01/11/2026
1.0.66 3 01/11/2026
1.0.65 3 01/11/2026
1.0.64 3 01/11/2026
1.0.63 3 01/11/2026
1.0.62 3 01/11/2026
1.0.61 3 01/11/2026
1.0.60 3 01/11/2026
1.0.59 3 01/11/2026
1.0.58 3 01/11/2026
1.0.57 3 01/11/2026
1.0.56 3 01/11/2026
1.0.55 3 01/11/2026
1.0.54 3 01/11/2026
1.0.53 3 01/11/2026
1.0.52 3 01/11/2026
1.0.51 3 01/11/2026
1.0.50 3 01/11/2026
1.0.49 3 01/11/2026
1.0.48 3 01/11/2026
1.0.47 4 01/11/2026
1.0.46 3 01/11/2026
1.0.45 4 01/10/2026
1.0.44 3 01/10/2026
1.0.43 2 01/10/2026
1.0.42 4 01/10/2026
1.0.41 3 01/10/2026
1.0.40 3 01/10/2026
1.0.39 3 01/10/2026
1.0.38 3 01/10/2026
1.0.37 3 01/10/2026
1.0.35 3 01/10/2026
1.0.34 3 01/10/2026
1.0.33 3 01/10/2026
1.0.32 2 01/10/2026
1.0.31 3 01/09/2026
1.0.30 3 01/09/2026
1.0.29 3 01/09/2026
1.0.28 3 01/09/2026
1.0.27 2 01/09/2026
1.0.26 3 01/09/2026
1.0.25 3 01/09/2026
1.0.24 3 01/09/2026
1.0.23 3 01/09/2026
1.0.22 3 01/09/2026
1.0.21 3 01/09/2026
1.0.20 3 01/08/2026
1.0.19 3 01/08/2026
1.0.18 3 01/08/2026
1.0.17 3 01/08/2026
1.0.16 3 01/08/2026
1.0.15 3 01/08/2026
1.0.14 3 01/08/2026
1.0.13 3 01/08/2026
1.0.12 3 01/08/2026
1.0.11 3 01/08/2026
1.0.10 3 01/08/2026
1.0.9 3 01/08/2026
1.0.8 3 01/07/2026
1.0.7 3 01/07/2026
1.0.6 3 01/06/2026
1.0.5 3 01/06/2026
1.0.4 3 01/06/2026
1.0.3 3 01/06/2026
1.0.2 3 01/06/2026
1.0.1 2 01/06/2026