Skip to content

feat: add Azure monitoring dashboard project (APIM + Container Apps) - #137

Merged
tungbq merged 1 commit into
mainfrom
project/azure-monitoring-dashboard
Aug 30, 2026
Merged

feat: add Azure monitoring dashboard project (APIM + Container Apps)#137
tungbq merged 1 commit into
mainfrom
project/azure-monitoring-dashboard

Conversation

@tungbq

@tungbq tungbq commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Summary

New project: azure-monitoring-dashboard — a .NET and a Java sample app behind Azure API Management, running on Azure Container Apps, instrumented for distributed tracing via Azure Monitor, plus an Azure Monitor Workbook giving RED metrics (rate/errors/duration), an SLO tile, and a log-filtering panel for root-cause analysis.

  • dotnet-orders-api (ASP.NET Core, externally exposed via APIM) calls java-inventory-api (Spring Boot, internal-only) to reserve stock — a real cross-service, cross-language call chain to trace end to end.
  • Deliberately uses two different, both-valid instrumentation patterns: .NET via the Azure.Monitor.OpenTelemetry.AspNetCore SDK, Java via the auto-instrumenting Application Insights Java agent (-javaagent, zero code changes) — worth comparing.
  • Dashboard tool: Azure Monitor Workbook, chosen over Managed Grafana after an explicit pros/cons pass — Workbooks win on cost (no extra resource) and fit the "easy log filtering for root cause" requirement more directly via native KQL log panels.
  • ~15% simulated failure rate in dotnet-orders-api on purpose, so the error-rate/SLO panels have real non-zero data instead of a flat 100% success line.

What was verified locally (no Azure credentials in this environment)

  • Both apps build as real Docker images and run together on a shared Docker network; a real order flows through the full dotnet-orders-api → java-inventory-api chain (demo_project.sh, also wired as CI at .github/workflows/verify-azure-monitoring-dashboard.yml).
  • Terraform: fmt, validate, and a full terraform plan resolve the entire local dependency graph correctly (every resource, reference, and attribute name confirmed against the actual installed provider schema via terraform providers schema -json) — plan only stops at the expected Azure-auth boundary (az CLI not present here).
  • The Workbook JSON is well-formed and its structure was checked against real Microsoft example Workbooks.

What was NOT verified (documented in the project README as an explicit boundary)

  • No real terraform apply — no Azure credentials available, same as every other Azure project in this repo. Section "3-Deploy to Azure" in the project README is the real deploy walkthrough, meant to be run against a real subscription.
  • No live screenshots of the deployed Workbook/dashboard.

Test plan

  • ./demo_project.sh run end-to-end — builds both images, places a real order through the cross-service chain, validates Terraform, validates Workbook JSON. All green.
  • terraform fmt -check -recursive / terraform validate / terraform plan (dummy vars, no real apply)
  • Main README.md project table updated (row 22)
  • Real terraform apply against an actual Azure subscription (left for whoever deploys this for real — see project README)

https://claude.ai/code/session_01DgVRQrXf1xhAHKYsV2xVAQ

New sample project demonstrating Azure API Management + Azure Container
Apps with a .NET and a Java service instrumented for distributed tracing
via Azure Monitor, plus an Azure Monitor Workbook giving RED metrics, an
SLO tile, and a log-filtering panel for root-cause analysis.

Verified locally: both apps build, run, and complete a real cross-service
order through a shared Docker network; Terraform validates against the
installed provider schema and resolves its full local dependency graph via
terraform plan up to the Azure auth boundary; the Workbook JSON is
well-formed. Not run through a real terraform apply — no Azure credentials
in this environment, matching every other Azure project in this repo.
@tungbq
tungbq merged commit 6908374 into main Aug 30, 2026
1 check passed
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