
aspire-monitoring
ANALYSIS SKILL - Observe Aspire apps: logs, traces, metrics, resource state, telemetry export, browser telemetry, and the standalone dashboard. Routes between local Aspire CLI, AKS workload diagnostics, and deployed Azure resource health. USE FOR: aspire logs, aspire otel logs, aspire otel traces, aspire otel spans, aspire describe, aspire ps, aspire export, aspire dashboard run, describe --include-hidden, browser logs in dashboard, terminal view, DevTunnel URLs, WithBrowserLogs, App Insights query, AKS pod logs, container app logs. DO NOT USE FOR: start/stop/wait (use aspire-orchestration), deploy/publish/destroy (use aspire-deployment), AppHost code edits like WithBrowserLogs() (use aspireify), Azure provisioning (use azure-prepare). INVOKES: aspire CLI, azure-diagnostics (deployed Azure), kubectl + Container Insights. FOR SINGLE OPERATIONS: Run the aspire CLI command directly for quick log or describe lookups.
- Installs
- 1.1K
- Last 24h
- +27
- Trending rank
- #4665
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/microsoft/aspire-skills --skill aspire-monitoring- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads aspire-monitoring automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Aspire Monitoring
Aspire CLI provides full observability locally. For deployed apps, route to platform-specific tools.
Diagnostics Bridge — Where To Look
| Need | Environment | Tool | Command / Route |
|---|---|---|---|
| Console logs | Local dev | Aspire CLI | aspire logs <resource> |
| Structured logs | Local dev | Aspire CLI | aspire otel logs [resource] |
| Distributed traces | Local dev | Aspire CLI | aspire otel traces [resource] |
| Span detail | Local dev | Aspire CLI | aspire otel spans [resource] |
| Running AppHosts | Local dev | Aspire CLI | aspire ps |
| Resource state | Local dev | Aspire CLI | aspire describe (add --include-hidden if a resource is missing) |
| Telemetry export | Local dev | Aspire CLI | aspire export [resource] |
| Standalone dashboard | Any (no AppHost) | Aspire CLI | aspire dashboard run (foreground/blocking — see below) |
| Browser console / network / diagnostics | Local dev (frontend) | Aspire CLI + dashboard | Discover <frontend>-browser-logs, start its tracked browser, then inspect its console logs |
| AppHost / deployment definition | Authoring | aspire-deployment skill | → aspire-deployment skill |
| AKS workload (pod logs, pod state) | Deployed AKS | kubectl + Container Insights | kubectl logs <pod>, kubectl describe pod <pod>, Container Insights in Azure Monitor |
| Azure resource health (App Insights, Front Door, NSP, private endpoint) | Deployed Azure | azure-diagnostics | → azure-diagnostics skill |
| App Service / Container Apps logs | Deployed Azure | azure-diagnostics | → azure-diagnostics skill |
| Logs/state | Deployed Docker / Compose | Docker CLI | docker logs <container>, docker compose logs <service> |
Decision tree:
- Is this about AppHost code or deployment definition? →
aspire-deploymentskill. - Is the app running locally via
aspire start? → Aspire CLI. - Is it deployed to AKS? → kubectl + Container Insights for workload;
azure-diagnosticsfor the cluster's Azure resources. - Is it deployed to other Azure (App Service, Container Apps)? →
azure-diagnostics. - Is it deployed to Docker / Compose? →
docker/docker composeCLI.
See diagnostics-bridge.md for detailed routing.
Investigation Workflow
When something is wrong, investigate before editing code:
aspire describe— check resource state and endpointsaspire otel logs <resource>— structured logs firstaspire logs <resource>— console output as secondary viewaspire otel traces <resource>— cross-service activityaspire export— zipped telemetry snapshot for deeper analysis
Local Commands Reference
| Command | Purpose | Example |
|---|---|---|
aspire logs <resource> | Console stdout/stderr | aspire logs apiservice |
aspire logs --follow | Stream logs in real-time | aspire logs apiservice --follow |
aspire otel logs | Structured OpenTelemetry logs | aspire otel logs |
aspire otel traces | Distributed trace data | aspire otel traces |
aspire otel spans | Individual span detail | aspire otel spans |
aspire otel logs --trace-id <id> | Logs correlated to trace (⚠️ verify flag) | aspire otel logs --trace-id abc123 |
aspire otel logs --dashboard-url | Query a standalone dashboard (login URL or base URL + --api-key) | aspire otel logs --dashboard-url "http://localhost:18888/login?t=TOKEN" --follow |
aspire otel traces --dashboard-url | Query a standalone dashboard | aspire otel traces --dashboard-url "http://localhost:18888/login?t=TOKEN" |
aspire describe | Resource state, endpoints, health | aspire describe --format Json |
aspire describe --include-hidden | Include proxies, helper containers, migrations | aspire describe --include-hidden --format Json |
aspire resources | Compatibility alias for resource state | Prefer aspire describe in new guidance |
aspire export | Portable telemetry bundle | aspire export |
aspire dashboard run | Standalone dashboard (foreground/blocking) | aspire dashboard run |
Hidden resources are filtered by default
aspire describe and other CLI commands filter out resources marked hidden in the AppHost (proxies, helper containers, migrations). The default output is correct for normal app inspection. Add --include-hidden when:
- Debugging proxies, sidecar/helper containers, or migration jobs.
- An expected resource is "missing" from
aspire resources/aspire describe. - Triaging connectivity or wiring issues that may involve infrastructure resources.
Tips for Agents
# ✅ Use --format Json for machine parsing (supported: describe, start)
aspire describe --format Json
# ✅ When a resource you expect is missing, retry with --include-hidden
aspire describe --include-hidden --format Json
# ✅ Get endpoints from describe, not guessing ports
ENDPOINT=$(aspire describe apiservice --format Json | jq -r '.endpoints[0].url')
# ✅ Use --apphost <path> when multiple AppHosts exist
aspire describe --apphost ./src/MyApp.AppHost/
Version-Specific Diagnostics
Check the running dashboard version and actual error before applying a historical fix. An older fix does not establish that downgrading a newer dashboard is a working mitigation, even temporarily or in an isolated test.
| Symptom | Guidance |
|---|---|
Resource missing from aspire describe | Re-run aspire describe --include-hidden; do not use removed aspire ps --include-hidden. |
| DevTunnel is healthy but has no public URL on 13.5.0-13.5.2 | Fixed in 13.5.3. Use a compatible release containing the fix before changing endpoint configuration. |
| Known multi-path icon Graph crash on 13.5.0-13.5.2 | Fixed in 13.5.3. Use a compatible release containing the fix. |
| Dashboard Graph crashes on 13.5.3 or later | Keep the selected version. Capture the browser console stack trace and dashboard logs to diagnose a separate cause or regression; do not recommend installing 13.5.3 as a workaround. |
Resolved in 13.3: The standalone-dashboard workaround for #16236 is obsolete — use
aspire dashboard run(see below).
Standalone Dashboard (aspire dashboard run)
aspire dashboard run launches the Aspire Dashboard without an AppHost, so any OTLP-emitting application (Aspire or not) can stream telemetry into it.
aspire dashboard run
# Dashboard: http://localhost:18888/login?t=<TOKEN>
# OTLP/gRPC: http://localhost:4317
# OTLP/HTTP: http://localhost:4318
⚠️ Foreground / blocking.
aspire dashboard rundoes not return until you stop it (Ctrl-C). Agents must treat it as a long-running background process — start it with the bash tool'smode="async", capture the dashboard URL and token from initial output, and leave it running. Do not invoke it as a one-shot synchronous command, and do not wait for it to "finish".
Connect the Aspire CLI to a standalone dashboard
aspire otel logs and aspire otel traces accept --dashboard-url. The simplest form passes the full login URL printed by aspire dashboard run — the CLI normalizes it automatically:
# Stream structured logs from a standalone dashboard (login URL form)
aspire otel logs --dashboard-url "http://localhost:18888/login?t=TOKEN" --follow
# Search recent traces
aspire otel traces --dashboard-url "http://localhost:18888/login?t=TOKEN"
For dashboards configured with API-key authentication (e.g., the standalone container image with a separate API key), pass --api-key alongside the base --dashboard-url:
aspire otel logs --dashboard-url https://my-dashboard.example.com --api-key "$DASHBOARD_API_KEY" --follow
The container-image standalone dashboard still works for environments where the CLI isn't available.
Browser Logs (Aspire.Hosting.Browsers)
When a frontend has already opted into WithBrowserLogs(), Aspire creates a child resource named
<frontend>-browser-logs. Browser console messages, errors, exceptions, and network diagnostics
are sent to that child resource's console log stream, not to the frontend's OpenTelemetry logs.
-
Begin with normal
aspire describeoraspire resourcesoutput to find<frontend>-browser-logs;aspire psno longer lists resources. It is a normal child resource, so retry withaspire describe --include-hiddenonly if unavailable. -
Correlate it to the frontend through its parent relationship and
Sourceproperty. -
Start a tracked browser session with:
aspire resource <frontend>-browser-logs open-tracked-browser -
Inspect the browser diagnostics with:
aspire logs <frontend>-browser-logs
Do not use aspire otel logs <frontend> for browser output; it does not return that child
resource's browser diagnostics.
| Need | Action |
|---|---|
| Inspect existing browser diagnostics | Discover <frontend>-browser-logs, start open-tracked-browser, then run aspire logs <frontend>-browser-logs |
| Confirm the browser resource belongs to a frontend | Check the child resource's parent relationship and Source property |
| Confirm a frontend has browser logging enabled | Check the AppHost for .WithBrowserLogs() on the resource |
Add WithBrowserLogs() to a resource | → aspireify skill (AppHost authoring) — do not edit the AppHost from this skill |
Dashboard UX Features
Agents inspecting a running dashboard should know:
- Notification center (bell icon, top-right) — surfaces results of resource commands and lifecycle events. Inline command responses appear here instead of being scraped from the logs panel.
- Rebuild command — available on container and project resources; rebuilds the image and restarts the resource without restarting the whole AppHost. Result lands in the notification center.
- Structured command results — custom resource commands return
ExecuteCommandResultwith aMessagepayload that the dashboard renders inline; HTTP commands setHttpCommandResultMode.Auto | Json | Text | Noneto control how the response body is shown. - 13.5 filtering — filter telemetry by timestamp, use
==/!=for exact numeric values, and search console-log text while streams continue updating. - Terminal view — resources configured with experimental
WithTerminal()open as interactive sessions in the dashboard. - No dashboard AI Assistant — it was removed in 13.5. Use
aspire agent initand the AppHost/CLI agent integration instead. - VS Code launch is opt-in — the Aspire extension no longer opens the dashboard
automatically. Use its in-editor dashboard or configure
dashboardBrowser/launch.json.
Authoring custom commands or
WithBrowserLogs()calls is AppHost work — route toaspireify. This skill is for observing what those features surface in the dashboard.
Why Aspire CLI Can't Do Remote Diagnostics
The Aspire CLI talks to a running AppHost through a local backchannel socket at ~/.aspire/backchannels/. This is by design — there is no remote backchannel. For deployed apps, route to platform-specific tools (azure-diagnostics, kubectl, docker).
Exception: if a Dashboard is reachable (deployed alongside the app, or running standalone), aspire otel logs and aspire otel traces can query it via --dashboard-url (login URL form) and optional --api-key (see the Standalone Dashboard section above). This does not apply to aspire logs or aspire describe.
Handoff Rules
| Scenario | Route To |
|---|---|
| Start/stop/wait/rebuild lifecycle | → aspire-orchestration skill |
| Deploy, publish, pipeline steps, AppHost compute environment binding | → aspire-deployment skill |
AppHost code changes (WithBrowserLogs(), custom commands, WithHttpCommand) | → aspireify skill |
| Deployed Azure resource health (App Insights, Front Door, NSP, private endpoint, ACA, App Service) | → azure-diagnostics skill (azure-skills) |
| AKS workload diagnostics (pod logs, pod state, Container Insights) | → kubectl + Azure Monitor Container Insights |
| Docker / Compose container logs | → docker logs / docker compose logs |
Project-Local Skill Routing
If .agents/skills/aspire/SKILL.md exists (from aspire agent init), see its
references/monitoring.md for deeper telemetry workflow guidance.
References
- diagnostics-bridge.md — Local vs deployed routing detail
- monitoring.md — Telemetry inspection and export patterns
- playwright-handoff.md — Find the correct Aspire frontend URL before browser testing
FAQ
What does the aspire-monitoring skill do?
ANALYSIS SKILL - Observe Aspire apps: logs, traces, metrics, resource state, telemetry export, browser telemetry, and the standalone dashboard. Routes between local Aspire CLI, AKS workload diagnostics, and deployed Azure resource health. USE FOR: aspire logs, aspire otel logs, aspire otel traces, aspire otel spans, aspire describe, aspire ps, aspire export, aspire dashboard run, describe --include-hidden, browser logs in dashboard, terminal view, DevTunnel URLs, WithBrowserLogs, App Insights query, AKS pod logs, container app logs. DO NOT USE FOR: start/stop/wait (use aspire-orchestration), deploy/publish/destroy (use aspire-deployment), AppHost code edits like WithBrowserLogs() (use aspireify), Azure provisioning (use azure-prepare). INVOKES: aspire CLI, azure-diagnostics (deployed Azure), kubectl + Container Insights. FOR SINGLE OPERATIONS: Run the aspire CLI command directly for quick log or describe lookups.
How do I install aspire-monitoring?
Run npx skills add https://github.com/microsoft/aspire-skills --skill aspire-monitoring in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/aspire-monitoring/ (personal) or .claude/skills/aspire-monitoring/ (project).
Which AI agents can use aspire-monitoring?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is aspire-monitoring safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains aspire-monitoring?
It is published by microsoft in microsoft/aspire-skills, and it is an official skill from the maker of the technology it covers. It has 1,106 recorded installs.
More from microsoft/aspire-skills
aspire
microsoft/aspire-skills
WORKFLOW SKILL - Aspire router. Detects AppHosts, enforces guardrails, and selects the right sub-skill. USE FOR: Aspire AppHost, Aspire CLI, distributed app, cloud-native .NET, aspire start/stop/resource/deploy/destroy/publish/init/new/add/wait/describe/ps/logs/otel, aspire agent init, WithBrowserLogs, WithTerminal, Interaction Service, apphost.mts, TS package managers, Yarn Classic, custom resource commands, .aspire/modules recovery, ProjectResource to DotnetProjectResource migration, or Playwright URL discovery. DO NOT USE FOR: non-Aspire projects or ordinary build/test tasks. INVOKES: aspire-init, aspireify, aspire-project-v2-migration, aspire-orchestration, aspire-deployment, aspire-monitoring. FOR SINGLE OPERATIONS: Route directly to the matching sub-skill.
aspire-orchestration
microsoft/aspire-skills
WORKFLOW SKILL — Manage Aspire lifecycle in VS Code or the CLI. WHEN: "start or stop my Aspire app", "aspireapphoststart", "aspireapphoststop", "notEditorOwned", "ambiguousSession", "aspire start", "aspire stop", "aspire wait", resource restart, file-lock errors (MSB3491 or CS2012), port conflicts, git worktrees, "--isolated", "aspire update --self", "aspire update --migrate", "aspire describe --include-hidden", "aspire stop --force", "aspire terminal", integration discovery, default watch, or hot reload. INVOKES: VS Code lifecycle tools first when exposed; Aspire CLI for readiness, inspection, resource operations, isolated worktree starts, and allowed fallbacks. DO NOT USE FOR: deploy/publish/destroy (aspire-deployment), logs/traces/metrics (aspire-monitoring), or AppHost code and resource wiring (aspireify). FOR SINGLE OPERATIONS: Load the matching editor tool first, then obey the exact-target, worktree-isolation, and stop-result rules below.
aspireify
microsoft/aspire-skills
WORKFLOW SKILL - Wire Aspire AppHosts or repair TypeScript AppHost toolchains. Scans the repo, proposes a resource graph, edits C, file-based C, or TypeScript AppHosts, wires ServiceDefaults + OTel, validates with aspire start, then stops. USE FOR: wire/scaffold AppHost, add Postgres/Redis/Rabbit/Mongo, connect frontend to API, after aspire init, AddNextJsApp, AddViteApp, WithBrowserLogs, WithTerminal, Interaction Service, command arguments, apphost.cs, apphost.mts, unified withEnvironment, .aspire/modules refusal, config/secrets, TS dependency restore, pnpm/yarn/bun, or Yarn Classic. DO NOT USE FOR: skeleton drop (aspire-init), lifecycle-only start/stop/wait/restart or aspire update --migrate (aspire-orchestration), publish/deploy/destroy (aspire-deployment), logs/traces (aspire-monitoring). INVOKES: aspire CLI, AppHost source edits, ServiceDefaults wiring. FOR SINGLE OPERATIONS: Run aspire add PACKAGE directly for a one-off integration.
aspire-init
microsoft/aspire-skills
WORKFLOW SKILL - First-run flow for adding Aspire to a repo. Picks aspire new (greenfield) or aspire init (existing repo), drops the AppHost skeleton, then hands off to aspireify for resource wiring. USE FOR: aspire init, aspire new, aspire-starter, aspire-ts-starter, aspire-py-starter, add Aspire to existing repo, scaffold Aspire app, bootstrap Aspire, no AppHost detected, install aspireify, apphost.mts, generated .aspire/modules. DO NOT USE FOR: AppHost wiring on an existing AppHost (use aspireify), start/stop/wait (use aspire-orchestration), deploy/publish (use aspire-deployment), logs/traces (use aspire-monitoring), repo that already has an AppHost. INVOKES: aspire CLI (init, new, doctor), aspireify (handoff after skeleton drop). FOR SINGLE OPERATIONS: Run aspire init or aspire new TEMPLATE directly.
aspire-deployment
microsoft/aspire-skills
WORKFLOW SKILL — Deploy Aspire apps from AppHost models to Docker Compose, Kubernetes, Azure, AWS, or preview Radius. WHEN: "deploy Aspire app", "publish Aspire artifacts", "deploy to Azure Container Apps", "generate Kubernetes artifacts", "deploy to Radius", "tear down Aspire deployment". INVOKES: aspire CLI, Aspire docs, target cloud/container CLIs. FOR SINGLE OPERATIONS: use generic Azure, Kubernetes, Docker, AWS, or Radius tools only when no Aspire AppHost exists.
aspire-project-v2-migration
microsoft/aspire-skills
Open the skill to read its SKILL.md instructions.
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.