CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite
6.9.1-develop.3
See the version list below for details.
Requires NuGet 2.5 or higher.
dotnet add package CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite --version 6.9.1-develop.3
NuGet\Install-Package CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite -Version 6.9.1-develop.3
<PackageReference Include="CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite" Version="6.9.1-develop.3" />
<PackageVersion Include="CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite" Version="6.9.1-develop.3" />
<PackageReference Include="CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite" />
paket add CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite --version 6.9.1-develop.3
#r "nuget: CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite, 6.9.1-develop.3"
#:package CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite@6.9.1-develop.3
#addin nuget:?package=CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite&version=6.9.1-develop.3&prerelease
#tool nuget:?package=CkvBalusu.DurableFunctionsMonitor.DotNetIsolated.Netherite&version=6.9.1-develop.3&prerelease
DurableFunctionsMonitor.DotNetIsolated.Netherite
An incarnation of DurableFunctionsMonitor that can be "injected" into your .NET Isolated Azure Function, that uses Netherite Provider.
What you get
The same Svelte UI ships in every DurableFunctionsMonitor package. Once wired into your Function App, it gives you:
- Overview — status tiles, a throughput histogram whose brush sets the time range, "needs attention" (failures in range, instances running or pending longer than your thresholds, a queue backing up, anything suspended), the top orchestrators with p50/p95 duration and failure rate, a storage backlog panel and recent activity.
- Instances — table, timeline and histogram views over the same OData-backed filters, saved views, and bulk actions (terminate, suspend, resume, rewind, raise event, purge) over the selection, 200 instances per call.
- Instance workspace — Timeline (a swimlane of activities, sub-orchestrations, timers and events), History, Inputs, a Sequence diagram, the function Graph, Raw JSON, a Summary of where the time went, and any custom Liquid tabs the hub publishes.
- Failures — failed instances grouped by orchestrator and by a normalised error signature (numbers, GUIDs, quoted values and hashes collapsed to
*). - Entities — the durable entities of the hub, filterable by name and key prefix.
- Storage — the tables, queues and control-queue partitions behind the task hub.
- Activity — an audit trail of every write and dangerous operation made through the UI.
- Settings — five visual themes, light/dark/system mode, density, whether times are shown as UTC or local, and the "needs attention" thresholds.
The UI asks /about once and turns each screen and button on or off from what the backend reports it can do — see Capabilities below. Every JSON payload it shows is pretty-printed and fully expanded, never a truncated preview.
Capabilities
/about reports what this package's DfmExtensionPoints implement against a Netherite Task Hub. Netherite keeps its state in Event Hubs partitions and FASTER stores rather than the XXXInstances/XXXHistory tables or the control queues most of these features read, so:
- Stats, Failures, Children, Storage health, Update input & rewind and Replay (truncate history) are all unsupported; the corresponding endpoints answer
400. - The orchestrator lane of the Timeline (episode markers) is unsupported too, but
/spansstill answers200: the orchestrator lane is just empty andtotals.orchestratorMsisnull. - The audit trail is supported: this package leaves the default Azure Table audit store wired up, so setting
DFM_AUDIT_ENABLED=trueturns it on, using the same Storage account Netherite already needs for itsDurableTaskPartitionstable. - Spans, bulk instance operations, Entities, purge history and conditional GET (ETag, on instance details and history) are always on, independent of the storage provider.
- Purging entities (the entity branch of
/purge-history), cleaning entity storage and deleting a task hub are not implemented by this backend yet, on any provider; those calls answer400.
How to use
Install from NuGet:
dotnet add package DurableFunctionsMonitor.DotNetIsolated.NetheriteInitialize by calling .UseDurableFunctionsMonitorWithNetheriteDurability() extension method during your Function's startup, like this:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults((hostBuilderContext, workerAppBuilder) => { workerAppBuilder.UseDurableFunctionsMonitorWithNetheriteDurability(); }) .Build();By default all settings are read from env variables (all the same config settings are supported), but those can be programmatically (re)configured like this:
var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults((hostBuilderContext, workerAppBuilder) => { workerAppBuilder.UseDurableFunctionsMonitorWithNetheriteDurability((settings) => { // Override DfMon's settings here, e.g. settings.Mode = DfmMode.ReadOnly; // .... }); }) .Build();By default DfMon's endpoint will appear at
http://localhost:7071/my-api-route-prefix/durable-functions-monitor. To override that behavior (e.g. to have it served from the root) add a custom statics-serving function like this:namespace DurableFunctionsMonitor.DotNetIsolated { public class MyCustomDfMonEndpoint: ServeStatics { public MyCustomDfMonEndpoint(DfmSettings dfmSettings, DfmExtensionPoints extensionPoints, ILoggerFactory loggerFactory) : base(dfmSettings, extensionPoints, loggerFactory) { } [Function(nameof(MyCustomDfMonEndpoint))] public Task<HttpResponseData> ServeDfMonStatics( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "/{p1?}/{p2?}/{p3?}")] HttpRequestData req, string p1, string p2, string p3 ) { return this.DfmServeStaticsFunction(req, p1, p2, p3); } } }
Environment variables
| Variable | Effect |
|---|---|
DFM_NONCE |
set to i_sure_know_what_i_am_doing to disable authentication entirely (local development only) |
DFM_MODE |
ReadOnly hides every write action; anything else (or unset) is normal read/write mode |
DFM_DANGEROUS_OPERATIONS_ENABLED |
true allows Restart in place, which rewrites Task Hub storage and re-executes work that already ran (Replay stays unsupported on this provider regardless) |
DFM_AUDIT_ENABLED |
true records every write and dangerous call into the {hub}DfmAudit table, which the Activity screen and the /audit endpoint read |
DFM_STATS_CAP and DFM_AGGREGATION_CACHE_SECONDS have no effect on this package: /stats, /failures and /storage are unsupported here, so there is nothing to cap or cache.
Notes on Task Hub discovery
Netherite does not maintain the XXXInstances/XXXHistory tables that DfMon's default Task Hub discovery routine looks for. This package therefore replaces DfmExtensionPoints.GetTaskHubNamesRoutine with one that reads distinct partition keys from Netherite's own DurableTaskPartitions table. Both connection-string and identity-based (AzureWebJobsStorage__accountName) Storage connections are supported.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
- Azure.Data.Tables (>= 12.12.0)
- Azure.Identity (>= 1.21.0)
- Azure.Storage.Blobs (>= 12.29.2)
- Azure.Storage.Queues (>= 12.27.1)
- Fluid.Core (>= 2.40.0)
- Microsoft.Azure.Functions.Worker (>= 2.52.0)
- Microsoft.Azure.Functions.Worker.Extensions.DurableTask (>= 1.19.0)
- Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite (>= 3.1.1)
- Microsoft.Azure.Functions.Worker.Extensions.Http (>= 3.3.0)
- Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.22.0)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 6.11.0 | 0 | 9/7/2026 |
| 6.10.2 | 10 | 9/6/2026 |
| 6.10.0 | 32 | 9/6/2026 |
| 6.9.1-develop.3 | 37 | 9/6/2026 |
| 6.9.1-develop.2 | 42 | 9/6/2026 |
| 6.9.1-develop.1 | 37 | 9/6/2026 |
| 6.9.0 | 47 | 9/5/2026 |