Releases: scale-tone/DurableFunctionsMonitor
DurableFunctionsMonitor 4.2
- Orchestrations/Entities are now also visualized as a time histogram and as a Gantt chart. Time histogram is interactive, you can zoom it in/out with your mouse:
- 'Send Signal' button for Durable Entities.
- In addition to individual user names (
DFM_ALLOWED_USER_NAMES
setting) the backend now also supports validating AAD App Roles. Specify the list of allowed roles viaDFM_ALLOWED_APP_ROLES
setting - and only the users with one of those roles will be allowed to access your DFM endpoint. User's role should appear in theroles
claim in their access token. - ReadOnly mode now supported. Set
DFM_MODE
config setting toReadOnly
- and all modification operations will be disabled (related methods will return 403). - Content-Security-Policy meta tag can now be customized. Create
custom-meta-tag.htm
blob indurable-functions-monitor
container in your Storage account and put your version of that meta tag there (you can actually put any other arbitrary HTML tags as well). The contents of that blob will appear inside<HEADER>
tag of returned index.html. Handy, if your custom tab templates use external fonts/images. - Minor bugfixes.
durablefunctionsmonitor.dotnetbackend.4.2.0.nupkg
durablefunctionsmonitor-4.2.0.vsix
DurableFunctionsMonitor 4.1
-
Now you can install DFM as a NuGet package into your .Net Core Functions project:
dotnet add package DurableFunctionsMonitor.DotNetBackend
- Make sure
AzureWebJobsStorage
config setting is set correctly - it should point to a Storage where your TaskHub(s) reside. - Invoke DfmEndpoint.Setup(); method at your Function's startup. E.g. like this:
[assembly: WebJobsStartup(typeof(StartupNs.Startup))] namespace StartupNs { public class Startup : IWebJobsStartup { public void Configure(IWebJobsBuilder builder) { DfmEndpoint.Setup(); } } }
-
Now DFM's endpoint should become available at your Function's root URL, which is typically https://my-func/api (or https://my-func/my-route-prefix, if you've customized routePrefix setting in your host.json)
NOTE: by default it will overshadow all your existing HTTP-triggered functions. If you don't want that to happen, add DurableFunctionsMonitorRoutePrefix setting to your CSPROJ-file:This will make DFM be served from https://my-func/api/my-durable-functions-monitor.
IMPORTANT1: that endpoint still does all the AuthN/AuthZ logic, in the same way as standalone DFM does. That means that EasyAuth needs to be configured appropriately for your Function instance, just like for a standalone DFM instance. If you do want to disable AuthN/AuthZ for that endpoint, either set
DFM_NONCE
config setting toi_sure_know_what_i_am_doing
or call DfmEndpoint.Setup() method like this:DfmEndpoint.Setup(new DfmSettings{ DisableAuthentication = true });
IMPORTANT2: a person who is able to access your DFM endpoint can potentially also access all HTTP-triggered endpoints in your project. Make sure you configure AuthN/AuthZ properly.
IMPORTANT3: by default the endpoint exposes all Task Hubs in the underlying Storage account. Restrict the list of allowed Task Hubs either via
DFM_HUB_NAME
config setting (takes a comma-separated list) or via extensions.durableTask.hubName setting in your host.json. -
Long-awaited dark color mode support.
-
Minor bugfixes.
durablefunctionsmonitor.dotnetbackend.4.1.0.nupkg
durablefunctionsmonitor-4.1.0.vsix
DurableFunctionsMonitor 4.0
- Single backend instance now allows to monitor all Task Hubs within given Storage Account (not just one, as before). Task Hub name comes from the first URL path segment, e.g. https://my-dfm-instance/DurableFunctionsHub. When navigating to the root URL, the list of available Task Hubs is shown, to choose from. Yet, DFM_HUB_NAME setting is still fully respected: when set, the backend instance is tied to that Task Hub only. Also it is now possible to put comma-separated list of allowed Task Hubs into there.
- Minor bugfixes.
durablefunctionsmonitor.dotnetbackend.4.0.0.nupkg
durablefunctionsmonitor-4.0.0.vsix
DurableFunctionsMonitor 3.9
- Gantt Charts for orchestrations (in addition to Sequence Diagrams):
- 'Go to instanceId...' feature to quickly navigate to an orchestration/entity instance by its id.
- DotLiquid replaced with Fluid for rendering custom status tabs. Fluid looks much more alive and supports more Liquid features.
- 'Save as .SVG' button for diagrams.
- Status tabs now refresh themselves much smoother.
- Minor bugfixes.
durablefunctionsmonitor.dotnetbackend.3.9.0.nupkg
durablefunctionsmonitor-3.9.0.vsix
DurableFunctionsMonitor 3.8
-
BREAKING: The backend now enforces authentication by default. If you still want to turn it off (e.g. to run it locally on your devbox), set DFM_NONCE config setting to
i_sure_know_what_i_am_doing
. -
Standalone service is now capable of validating AAD access tokens itself, without help from Easy Auth module. This allows hosting DFM instances outside Function Apps (e.g. in AKS, here is a deployment yaml for that). For that to work the following config settings need to be set (in addition to the normal AzureWebJobsStorage and DFM_HUB_NAME ones):
- WEBSITE_AUTH_CLIENT_ID - clientId (aka applicationId) of your AAD application, that you have specifically created for protecting your DFM endpoints. See instructions on how to create an AAD app here.
- WEBSITE_AUTH_OPENID_ISSUER - the Issuer claim (
iss
) in access tokens. Typically looks likehttps://login.microsoftonline.com/<your-aad-tenant-id>/v2.0
. - (greatly recommended) DFM_ALLOWED_USER_NAMES - comma-separated list of user names (emails), that should be allowed to access. Matches the
preferred_username
claim in access tokens. WARNING: without this setting any user will be allowed to access your DFM endpoint.
NOTE: only Azure AD Endpoint V2 is supported.
-
'Restart' button for orchestrations (triggers the new .RestartAsync() method).
-
Sequence diagrams now show some timing (start times and durations)
-
VsCode extension: WebViews are now persistent (do not reload every time you switch between them) and even persist their state (filters, sorting etc.) across restarts.
-
VsCode extension: All logs (when enabled) now go to 'Durable Functions Monitor' output channel.
-
Minor bugfixes.
durablefunctionsmonitor.dotnetbackend.3.8.0.nupkg
durablefunctionsmonitor-3.8.0.vsix
DurableFunctionsMonitor 3.7
- Long-awaited 'Cancel' button on the Orchestrations page.
- Now you can hide the columns you're not interested in:
-
VsCode extension: Local Storage Emulator, Azure Government and other exotic Storage Account types are now supported. If your Local Storage Emulator is running and there're some TaskHubs in it - they will appear automatically on your Azure Functions View Container (if not, try to modify the 'Storage Emulator Connection String' parameter on the Settings page).
-
VsCode extension: Now settings are stored in VsCode's settings.json. File->Preferences->Settings->Durable Functions Monitor:
durablefunctionsmonitor.dotnetbackend.3.7.0.nupkg
durablefunctionsmonitor-3.7.0.vsix
DurableFunctionsMonitor 3.6
-
'Clear Entity Storage...' menu item for doing garbage collection of deleted Durable Entities. Executes the recently added IDurableEntityClient.CleanEntityStorageAsync() method.
-
Custom status visualisation for orchestrations/entities in form of Liquid templates.
-
Performance improvements for loading the list of Orchestrations/Entities.
DurableFunctionsMonitor 3.5
-
Now the Orchestration Details page features a nice mermaid-based sequence diagram:
The diagram shows the entire hierarchy of suborchestrations, activity method invocations (they're shown as calls to itself), events and timers. -
Also it's now possible to navigate to suborchestrations from the history list on the Orchestration Details page.
DurableFunctionsMonitor 3.4
- VsCode extension is now integrated with Azure Account, so once logged in to Azure, you can now see and connect to all your TaskHubs. It is also still possible to connect with connection strings, as before.
- Minor bugfixes related to AAD auth and MSAL library.
DurableFunctionsMonitor 3.3
- customStatus value of your orchestration instances can now be changed with 'Set Custom Status' button.
- Minor bugfixes.