MSAPulse 1.0.1
dotnet add package MSAPulse --version 1.0.1
NuGet\Install-Package MSAPulse -Version 1.0.1
<PackageReference Include="MSAPulse" Version="1.0.1" />
<PackageVersion Include="MSAPulse" Version="1.0.1" />
<PackageReference Include="MSAPulse" />
paket add MSAPulse --version 1.0.1
#r "nuget: MSAPulse, 1.0.1"
#:package MSAPulse@1.0.1
#addin nuget:?package=MSAPulse&version=1.0.1
#tool nuget:?package=MSAPulse&version=1.0.1
MSAPulse
Production-Ready Observability Kit for .NET 10
MSAPulse is a lightweight, drop-in observability infrastructure designed for .NET applications. It solves logging, tracing, and database monitoring challenges with a single configuration line, eliminating the need for complex boilerplate code.
Unlike black-box NuGet packages, MSAPulse provides full source code ownership, allowing you to inspect, modify, and extend the architecture without vendor lock-in.
Key Features
Distributed Tracing & Logging
- Auto-Correlation: Generates a unique
CorrelationIdfor every HTTP request and propagates it through the entire stack. - Structured Logging: Pre-configured Serilog integration with rich context (MachineName, ThreadId, UserAgent, RequestPath).
- Visual Dashboard: Includes a ready-to-use Docker setup for Seq (or compatible log servers).
Database Performance (EF Core)
- Slow Query Detection: Automatically intercepts and logs SQL queries exceeding your defined threshold (default: 500ms).
- Deep Insight: Captures the exact SQL command, parameters, and execution duration.
- Zero Code Change: Works via
DbCommandInterceptor, requiring no changes to your existing repositories.
Source Code Control
- Clean Architecture: Strictly separated into
Core(Interfaces/Models) andInfrastructure(Implementation). - .NET 10 Ready: Built using the latest LTS features for maximum performance.
- No Hidden Dependencies: You own the code.
Integration Guide (3 Minutes)
1. Add Projects to Solution
Copy the src/MSAPulse.Core and src/MSAPulse.Infrastructure folders into your solution directory.
dotnet sln add src/MSAPulse.Core/MSAPulse.Core.csproj
dotnet sln add src/MSAPulse.Infrastructure/MSAPulse.Infrastructure.csproj
2. Add Reference
Link MSAPulse to your Web API project:
dotnet add YourWebApi/YourWebApi.csproj reference src/MSAPulse.Infrastructure/MSAPulse.Infrastructure.csproj
3. Configure Program.cs
Wire up the services and middleware in your startup file.
using MSAPulse.Infrastructure.Extensions;
var builder = WebApplication.CreateBuilder(args);
// 1. Register MSAPulse Services
builder.Services.AddMSAPulse(builder.Configuration);
// 2. Add Performance Interceptor to EF Core
builder.Services.AddDbContext<AppDbContext>((sp, options) =>
{
options.UseSqlServer(connectionString)
.AddMSAPulseInterceptor<AppDbContext>(sp);
});
var app = builder.Build();
// 3. Enable Middleware (Must be at the top of the pipeline)
app.UseMSAPulse();
app.Run();
Configuration
Control behavior via appsettings.json.
{
"MSAPulse": {
"SlowQueryThresholdMs": 500, // Log warning if query takes > 500ms
"EnablePerformanceTracking": true, // Collect internal metrics
"IncludeExceptionDetails": false, // Set true for Development
"SeqUrl": "http://localhost:5341" // Log server URL
}
}
Dashboard Setup
MSAPulse includes a docker-compose.yml file to spin up a local visualization dashboard (Seq) instantly.
docker-compose up -d
Access the dashboard at: http://localhost:8081
Architecture
MSAPulse.Core: Pure C# logic, Interfaces, Models. (Zero external dependencies).
MSAPulse.Infrastructure: Implementations, Middleware, Serilog configuration, and EF Core Interceptors.
License
MIT License
Copyright © 2025 MSA Technologies.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.EntityFrameworkCore (>= 10.0.0)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- MSAPulse.Core (>= 1.0.0)
- Serilog (>= 4.2.0)
- Serilog.AspNetCore (>= 9.0.0)
- Serilog.Enrichers.Environment (>= 3.0.0)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Sinks.Console (>= 6.0.0)
- Serilog.Sinks.File (>= 6.0.0)
- Serilog.Sinks.Seq (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.