Skip to content

How to run DfMon in Standalone mode

Konstantin Lepeshenkov edited this page Jan 11, 2024 · 12 revisions

Durable Functions Monitor is itself an Azure Function, so you can run it in same ways as a typical Azure Function can be run. Client-side HTML statics are self-hosted, so no need to host them anywhere separately.

NOTE: the below instructions are relevant to a Durable Function that uses default Storage Provider.

For monitoring Durable Task SQL Provider use DfMon for Durable Task SQL Provider

For monitoring Netherite use DfMon for Netherite.

1. Deploy to Azure

Deploy to Azure

This button will deploy a new DfMon instance into your Azure Subscription from this (latest) NuGet package. You will need to have an AAD app created and specify its Client Id as one of the template parameters.

See instructions on how to configure authentication/authorization here.

NOTE: the instance will be deployed to the selected Resource Group's location. The default Region parameter in Azure Portal's Deploy from a custom template wizard has no effect here. It only defines where the deployment metadata will be stored, so feel free to leave it to default.

  • docker pull scaletone/durablefunctionsmonitor:[put-latest-tag-here]

  • docker run -p 7072:80 -e AzureWebJobsStorage="your-azure-storage-connection-string" -e DFM_NONCE="i_sure_know_what_i_am_doing" scaletone/durablefunctionsmonitor:[put-latest-tag-here]

    WARNING: setting DFM_NONCE to i_sure_know_what_i_am_doing turns authentication off. Please, protect your endpoint as appropriate.

  • Navigate to http://localhost:7072

    The home page will show you the list of existing Task Hubs to choose from. WARNING: by default, all Task Hubs in the underlying Storage account are accessible. To restrict the list of allowed Task Hubs specify an extra DFM_HUB_NAME environment variable with a comma-separated list of Task Hub names.

3. Deploy to your Kubernetes cluster

kubectl create secret generic dfm-secret \
  --from-literal=AzureWebJobsStorage='<your-azure-storage-connection-string>' \
  --from-literal=WEBSITE_AUTH_CLIENT_ID='<your-aad-app-client-id>' \
  --from-literal=WEBSITE_AUTH_OPENID_ISSUER='<your-token-issuer>' \
  --from-literal=DFM_ALLOWED_USER_NAMES='<your-email>'

kubectl apply -f https://raw.githubusercontent.com/microsoft/DurableFunctionsMonitor/main/durablefunctionsmonitor.dotnetbackend/dfm-aks-deployment.yaml

This will create a secret with all required config settings and then run this Docker container with this deployment yaml.

WARNING: by default, all Task Hubs in the underlying Storage account are accessible. To restrict the list of allowed Task Hubs specify an extra DFM_HUB_NAME secret value with a comma-separated list of Task Hub names.

See instructions on how to configure authN/authZ here.


You can find the detailed list of supported configuration settings here: Config Settings Reference.