Skip to content

[Draft] Add /admin/health/connectivity endpoint + connectivity health check (Network Troubleshooter prototype) - #11939

Draft
Evan (EvanR-Dev) wants to merge 2 commits into
devfrom
user/evanroman/network-troubleshooter-connectivity-check
Draft

[Draft] Add /admin/health/connectivity endpoint + connectivity health check (Network Troubleshooter prototype)#11939
Evan (EvanR-Dev) wants to merge 2 commits into
devfrom
user/evanroman/network-troubleshooter-connectivity-check

Conversation

@EvanR-Dev

@EvanR-Dev Evan (EvanR-Dev) commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Draft — for design discussion, not for merge.

Prototype for the Flex Consumption Network Troubleshooter (host side of "Approach 1").

What this adds

  • A /admin/health/connectivity route (tag-filtered on the connectivity tag), alongside /admin/health/live and /ready.
  • An SDK-free DnsConnectivityHealthCheck (host-owned), registered on the WebHost scope so it runs in validation mode as well as on a normal worker.
  • IConnectivityValidator abstraction (+ ConnectivityContext/ConnectivityResult): a plain contract an extension implements with its own SDK + connection resolution — no Microsoft.Extensions.Diagnostics.HealthChecks dependency on extensions. Final home is Microsoft.Azure.WebJobs; prototyped in the host here.
  • ConnectivityHealthCheck host adapter: enumerates the app's triggers (IFunctionMetadataManager + BindingMetadata.Connection), matches each to a registered validator by trigger type, invokes it with the binding's connection + settings, and aggregates into a connectivity-tagged IHealthCheck. Keeps HealthChecks host-side, once.
  • Tests: an extension-registered check flows through DynamicHealthCheckService's merge + tag filter; and the adapter invokes registered validators with the right binding context.

Why

Flex Consumption needs per-dependency connectivity checks run from the app's network context. This demonstrates building on the existing health-check framework: host-owned SDK-free checks plus extension-owned provider checks via IConnectivityValidator, invoked on a validation-mode worker.

Companion extension probe (Event Hubs): Azure/azure-sdk-for-net#62329.

…draft)

Prototype for the Flex Consumption Network Troubleshooter (Approach 1):
- Add the /admin/health/connectivity route, tag-filtered on the connectivity tag,
  alongside /admin/health/live and /ready.
- Add a SDK-free DnsConnectivityHealthCheck (host-owned), registered on the WebHost
  scope so it runs in validation mode as well as on a normal worker.
- Add a test proving an extension-registered connectivity IHealthCheck in the
  ScriptHost (JobHost) scope flows through DynamicHealthCheckService's merge and the
  connectivity tag filter, with no host dependency on the extension SDK.

DRAFT: demonstration for design discussion; not for merge.

Co-authored-by: Dobby <dobby@microsoft.com>
Demonstrates the extension-owned connectivity model without forcing a
Microsoft.Extensions.Diagnostics.HealthChecks dependency on extensions:
- IConnectivityValidator (+ ConnectivityContext/ConnectivityResult): a plain
  contract an extension implements using its own SDK + connection resolution.
  Final home is Microsoft.Azure.WebJobs (both host and extensions already
  reference it); defined in the host here only to prototype the mechanism.
- ConnectivityHealthCheck: host adapter that enumerates the app's triggers via
  IFunctionMetadataManager, matches each to a registered validator by trigger
  type, invokes it with the binding's connection + settings, and aggregates into
  a connectivity-tagged IHealthCheck. Keeps HealthChecks host-side, once.
- Tests proving a registered validator is invoked with the binding connection and
  settings, that unhealthy results surface, and that triggers with no validator
  are skipped.

Companion extension probe: Azure/azure-sdk-for-net#62329.

DRAFT: demonstration for design discussion; not for merge.

Co-authored-by: Dobby <dobby@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant