/DurableFunctionsMonitor

A monitoring/debugging UI tool for Azure Durable Functions

Primary LanguageTypeScriptMIT LicenseMIT

logo

Durable Functions Monitor

A monitoring/debugging UI tool for Azure Durable Functions

Azure Durable Functions provide an easy and elegant way of building cloud-native Reliable Stateful Services in the Serverless world. The only thing that's missing so far is a UI for monitoring, managing and debugging your orchestration instances. This project tries to bridge the gap.

Visual Studio Marketplace Installs Nuget Nuget

Prerequisites

To run this on your devbox you need to have Azure Functions Core Tools globally installed (which is normally already the case, if you're working with Azure Functions - just ensure that you have the latest version of it).

OR

Docker Desktop, if you prefer to run it locally as a container.

How to run

As a VsCode Extension.

  • Install it from the Marketplace or from a VSIX-file.
  • (if you have Azure Functions extension also installed) Goto Azure Functions View Container, observe all your TaskHubs under DURABLE FUNCTIONS tab and click on them to connect.
  • (if not) Type Durable Functions Monitor in your Command Palette and then confirm or provide Storage Connection String and Hub Name.

OR

As a standalone service, either running locally on your devbox or deployed into Azure: Deploy to Azure

OR

Install it as a NuGet package into your own Functions project (.Net Core only).

Features

1. View the list of your Orchestrations and/or Durable Entities, with sorting, infinite scrolling and auto-refresh:

2. Filter by time range and column values:

3. Visualize the filtered list of instances as a Time Histogram or as a Gantt chart:

4. Monitor the status of a certain instance:

5. Quickly navigate to a certain instance by its ID:

6. Observe Sequence Diagrams and Gantt Charts for orchestrations:

7. Restart, Purge, Rewind, Terminate, Raise Events, Set Custom Status:

8. Purge Orchestration/Entity instances history:

9. Clean deleted Durable Entities:

10. Create custom Orchestration/Entity status tabs with Liquid Templates:

  1. Create a Liquid template file and name it like [My Custom Tab Name].[orchestration-or-entity-name].liquid or just [My Custom Tab Name].liquid (this one will be applied to any kind of entity).
  2. In the same Storage Account (the account where your Durable Functions run in) create a Blob container called durable-functions-monitor.
  3. Put your template file into a tab-templates virtual folder in that container (the full path should look like /durable-functions-monitor/tab-templates/[My Custom Tab Name].[orchestration-or-entity-name].liquid).
  4. Restart Durable Functions Monitor.
  5. Observe the newly appeared My Custom Tab Name tab on the Orchestration/Entity Details page:

Sample Liquid Template:

 <h2>These people were invited:</h2>
 <ul>
 {% for participant in Input.Participants %}
   <li><h3>{{participant}}<h3></li>
 {% endfor %}
 </ul>  

You can have multiple templates for each Orchestration/Entity type, and also multiple 'common' (applied to any Orchestration/Entity) templates. Here is a couple of more sample templates.

NOTE1: this .Net object is passed to your templates as a parameter. Mind the property names and their casing.

NOTE2: code inside your templates is still subject to these Content Security Policies, so no external scripts, sorry.

11. Connect to different Durable Function Hubs and Azure Storage Accounts: