A monitoring/debugging UI tool for Azure Durable Functions
There is now a .NET Isolated version available. Instructions on how to "inject" it into your projects are here. And it is also deployable as a standalone instance, here is how to deploy it.
Should now be installable as a PWA (#164).
Fixed the way Task Hub name is being resolved from host.json
(#158)
Pending/running suborchestrations are now also clickable (#132).
Large inputs/outputs/custom statuses will now first appear as links. Clicking on that link will initiate a file download, the downloaded file will contain the data (#124).
Activity inputs should now be visible in orchestration's execution history (#127).
Improved performance of the SQL query that fetches execution history from MSSQL storage (#129). Thanks @bhugot for contribution!
Instance list settings (column visibility, sorting and client filtering) are now persisted (#134).
'Send Signal' dialog for Entities now accepts strings and other data types (numbers etc.) as a signal input (#139).
Fixed an issue with Entity's DateTime properties being shown in an incorrect time zone (#140).
Fixed an issue with npm global package folder being incorrectly resolved under certain circumstances (#145).
Moved to az-func-as-a-graph v1.3.2.
durablefunctionsmonitor.dotnetbackend.6.4.nupkg durablefunctionsmonitor.dotnetisolated.6.4.nupkg
[VsCode] Full support for Netherite. Netherite-based Task Hubs are automatically discovered and shown in the TreeView:
When connecting to an auto-discovered Netherite-based Task Hub you will be asked for an Event Hubs authorization rule to use.
You can also connect to a Netherite-based Task Hub by providing a Storage connection string (use Attach to Task Hub...
command for that). If Task Hubs in that Storage are Netherite-based, you will also be asked for an Event Hubs connection string. Both connection strings will be stored in VsCode Secret Storage and appear under 'Stored Connection Strings' node:
IMPORTANT: for DfMon to be able to show anything, your Netherite-based service must be running (otherwise all requests to DfMon's backend will take forever).
[VsCode] Included recent version of az-func-as-a-graph, which now supports PowerShell and Python V2 Functions. E.g. here is how sample PowerShell app looks like:
Btw. az-func-as-a-graph tool is now also available standalone as a VsCode web extension.
[VsCode] (#81) Fixed incompatibility with Azure Account extension's MSAL-based authentication.
Added support for VsCode workspaces. Now Task Hubs from all projects in a workspace will be auto-discovered and shown in the TreeView:
Disabled all modification buttons in the UI when the instance is in ReadOnly mode or when the user has ReadOnly access.
durablefunctionsmonitor.dotnetbackend.6.2.0.nupkg durablefunctionsmonitor-6.2.0.vsix
TestTaskName
resulted in 401 Unauthorized
.host.json
file.durablefunctionsmonitor.dotnetbackend.6.1.1.nupkg durablefunctionsmonitor-6.1.1.vsix
(#88) Updated backend's code to correctly understand Easy Auth V2 auth settings.
Committed latest version of az-func-as-a-graph, with support for .NET Isolated and Java projects.
[VsCode] Multiple Task Hubs and custom DB schemas are now supported for MSSQL Durability Provider:
Thanks @bhugot for this contribution.
[VsCode] (#57) Added Task Hubs Discovery Mode
setting:
When discovering Task Hubs in Storage accounts, by default, DfMon first tries to use Storage Keys (and executes listKeys
operation against each Storage account) and falls back to Identity-based connections. To prevent DfMon from doing listKeys
set this setting to Do not use Storage Keys
. To let DfMon always use Storage Keys only set this setting to Do not use Azure Account
.
[VsCode] Fixed the issue whereas DfMon would fail to discover Task Hubs in Azure Subscriptions due to some Storage account-wide Deny assignments created by Azure Databricks.
durablefunctionsmonitor.dotnetbackend.6.1.0.nupkg durablefunctionsmonitor-6.1.0.vsix
Migrated to .NET 6 and Azure Functions 4.x (#56).
[VsCode] Tree View entirely reimplemented. Now it separately shows Task Hubs from:
Your Azure Subscriptions (when signed in to Azure)
Your currently opened local project (if it is a Functions project)
Your local Azure Storage emulator (if running)
And from the list of custom persisted Connection Strings
To connect to an arbitrary Task Hub via a Connection String:
Use the same Attach to Task Hub...
button:
Or use context menu on Stored Connection Strings
tree node:
Or use Durable Functions Monitor
command.
Entered Connection Strings are persisted using VsCode SecretStorage API. On Windows you should be able to see them in Windows Credential Manager:
To remove a persisted Connection String, use the Forget this Connection String
context menu:
Now it is the release version of SQL Storage Provider that is supported. And it is now fully supported.
New parentInstanceId
field for SubOrchestrations. The field is filterable and sortable:
And allows to quickly navigate from a SubOrchestration to its parent:
Suspend
and Resume
buttons for orchestrations:
Function Graph improvements (#48). Binding nodes:
are now also clickable (not all of them) and try its best to open the relevant resource in Azure Portal or Storage Explorer.
New DFM_ALLOWED_READ_ONLY_APP_ROLES
config setting (#45). Allows to specify the list of App Roles that should be given readonly access to the instance. Thanks @s-pilo for implementing this.
New DFM_INGRESS_ROUTE_PREFIX
config setting (#52), to support Kubernetes deployments with URL rewrite rules. If your DfMon instance is exposed under e.g. https://my-cluster/my-dfmon
URL, set DFM_INGRESS_ROUTE_PREFIX
to my-dfmon
, so that all requests are routed correctly.
durablefunctionsmonitor.dotnetbackend.6.0.0.nupkg durablefunctionsmonitor-6.0.0.vsix
Support for identity-based connections (#40).
VsCode extension will now try to use your VsCode Azure login to connect to Storage accounts, for which storage keys are disabled. Accounts like that will be marked as identity-based
in the tree:
Standalone/Injected mode now supports Managed Identities for connecting to Storage, just like Durable Functions themselves. See here for details on how to configure config settings for that.
NOTE: you will need to have all the required role assignments to that Storage account, as described here. For VsCode ext it should be you who have all those assignments, for Standalone/Injected mode it should be the Managed Identity that your DfMon instance runs under.
durablefunctionsmonitor.dotnetbackend.5.5.0.nupkg durablefunctionsmonitor-5.5.0.vsix
durablefunctionsmonitor.dotnetbackend.5.4.1.nupkg durablefunctionsmonitor-5.4.1.vsix
DFM_ROLES_CLAIM_NAME
setting. It allows to customize the name of the claim to be used for identifying user's app roles (to be matched against DFM_ALLOWED_APP_ROLES
setting). Note that this should be the claim as it appears in HttpRequest.HttpContext.User object, not in the access token. By default DfMon uses the claim called roles
for this. But depending on how your authentication is configured, user's app roles can appear under a different claim name, e.g. http://schemas.microsoft.com/ws/2008/06/identity/claims/role
. Use this new setting to make role validation still work for you.durablefunctionsmonitor.dotnetbackend.5.4.0.nupkg durablefunctionsmonitor-5.4.0.vsix