NetEvolve.HealthChecks 5.0: 27+ Targeted Probes, Zero Boilerplate
HealthChecks 5.0 marks a decisive expansion: broader infrastructure coverage and cleaner mechanics with unapologetic .NET 10 readiness.
For most teams, health endpoints in 4.x were honestly just an afterthought. You know the drill: an abstract base class per check, copy‑pasted DI registrations, coverage shaped more by who shouted loudest than by actual risk. Capacity slipped before visibility caught up—streaming drains or index stalls were typically discovered by operators paging through dashboards rather than by proactive probes. Not ideal.
5.0 reverses that imbalance. It treats instrumentation coverage scope as a first‑order design goal—not some leftover chore. Instead of inheritance noise and manual wiring, you get generated clarity. Instead of gaps around vector stores, event hubs, graph traversals, or AI backends, you get deliberate surface area.
Two parallel shifts (plus the platform tailwind) define the jump from 4.x to 5.0:
- Aggressive expansion of supported infrastructure domains
- Performance hardening via compile‑time code generation (eliminating inheritance boilerplate noise)
- Formalized support for .NET 10

The Problem: Fragmented Coverage in 4.x
You could wire a handful of relational checks quickly; beyond that, friction mounted. Want Cassandra and Milvus side by side? That meant bespoke abstractions. Need early visibility into EventHubs partitions or Pub/Sub topics? Manual probes and dashboard spelunking.
Graph traversal sanity for Neo4j or JanusGraph? Usually deferred because “not this sprint.” AI integration (Ollama) lived outside uniform health semantics. The result: instrumented islands separated by latency swamps. Outages started cryptic (“search feels slow”) and matured into incidents only once saturation graphs finally caught up.
Instrumentation traditionally trails feature delivery—teams ship databases, streams, search clusters, and vector indexes faster than they wire consistent health diagnostics. That gap breeds ad‑hoc curl scripts, divergent endpoint semantics, and late-stage detection (usually when capacity is already bleeding).
The Solution: 27+ Targeted Probes with Unified Mechanics
5.0 closes that gap with deliberate portfolio span. Here’s what expanded coverage looks like in practice:
Multi-cloud services (AWS, Azure, GCP) unify under predictable semantics instead of bespoke wrappers. Heterogeneous storage—relational, columnar, time‑series, graph, vector—receives first-class, composable probes. Streaming and event infra (EventHubs, Pulsar, Pub/Sub) surface readiness before message backlogs cascade. And AI pipelines (Ollama models, embedding flows) are folded into standard operational baselines rather than treated as opaque, ‘best effort’ adjuncts.
The outcome? Fewer blind spots, coherent dashboards, faster mean-time-to-explanation.
New Packages (vs 4.20.61)
Unified matrix for faster scanning; Area clarifies operational domain.
| Package | Area | Purpose |
|---|---|---|
| NetEvolve.HealthChecks.AWS.DynamoDB | Cloud / AWS NoSQL | Table read/write probe & throughput sanity |
| NetEvolve.HealthChecks.AWS.EC2 | Cloud / AWS Compute | Instance reachability & state drift detection |
| NetEvolve.HealthChecks.Azure.EventHubs | Cloud / Azure Messaging | Namespace accessibility + partition query |
| NetEvolve.HealthChecks.Azure.Kusto | Cloud / Azure Analytics | Control plane & lightweight query execution |
| NetEvolve.HealthChecks.Azure.Search | Cloud / Azure Search | Index availability & service status |
| NetEvolve.HealthChecks.GCP.Firestore | Cloud / GCP NoSQL | Document CRUD path liveness |
| NetEvolve.HealthChecks.GCP.PubSub | Cloud / GCP Messaging | Topic existence & publish viability |
| NetEvolve.HealthChecks.GCP | Cloud / GCP Shared | Shared primitives for unified GCP checks |
| NetEvolve.HealthChecks.Cassandra | Database / Columnar NoSQL | System keyspace query & coordinator reachability |
| NetEvolve.HealthChecks.CockroachDb | Database / Distributed SQL | Node connectivity & lightweight SQL round‑trip |
| NetEvolve.HealthChecks.Couchbase | Database / KV+Document | Bucket availability & KV latency |
| NetEvolve.HealthChecks.CouchDb | Database / Document | Endpoint status & database listing touch |
| NetEvolve.HealthChecks.EventStoreDb | Database / Event Sourcing | Gossip / cluster info & stream probe |
| NetEvolve.HealthChecks.InfluxDB | Database / Time-Series | Ping + test measurement write/read |
| NetEvolve.HealthChecks.JanusGraph | Database / Graph | Traversal sanity (simple vertex count) |
| NetEvolve.HealthChecks.LiteDB | Database / Embedded NoSQL | File accessibility & collection probe |
| NetEvolve.HealthChecks.MariaDb | Database / Relational | Connection open + trivial query |
| NetEvolve.HealthChecks.Milvus | Database / Vector | Collection existence & vector insertion sanity |
| NetEvolve.HealthChecks.MySql.Devart | Database / Relational Driver | Devart provider integration path check |
| NetEvolve.HealthChecks.Neo4j | Database / Graph | Bolt handshake + minimal cypher ping |
| NetEvolve.HealthChecks.Npgsql.Devart | Database / Relational Driver | Cross‑provider variant connectivity |
| NetEvolve.HealthChecks.OpenSearch | Search / Distributed | Cluster health & index existence |
| NetEvolve.HealthChecks.Oracle.Devart | Database / Relational Driver | Devart Oracle session & probe query |
| NetEvolve.HealthChecks.SQLite.Devart | Database / Embedded Relational | Devart SQLite file access & pragma ping |
| NetEvolve.HealthChecks.Apache.Pulsar | Messaging / Streaming | Tenant lookup & topic metadata probe |
| NetEvolve.HealthChecks.Consul | Registry / Service Discovery | Catalog read & KV key presence |
| NetEvolve.HealthChecks.Ollama | AI / LLM Local | Model list & lightweight prompt execution sanity |
Strategic Pivot
This release is a deliberate pivot from abstract inheritance sprawl to deterministic compilation. The direction harmonizes with the .NET 10 trajectory: trimming improvements, analyzer-driven contract enforcement. Explicit registries replace implicit conventions, tightening maintainability. Observability aligns—metrics map directly to known code paths instead of hidden lazy activation. And future readiness improves as static edges simplify evolution.
It’s an architectural stance: explicit beats implicit, generated beats hand‑wired repetition.
Conclusion
Version 5.0 broadens infrastructure coverage and simplifies the mechanics through source generation. The 27 new packages target domains that previously required manual workarounds—cloud services, graph databases, vector stores, streaming platforms, and local AI inference. The generator replaces repetitive inheritance patterns with explicit, deterministic registries.
If you’re running multi-cloud stacks, heterogeneous storage, or expanding into vector and AI workloads, the expanded portfolio closes visibility gaps. The generator reduces boilerplate and tightens alignment between what’s configured and what’s deployed.
