aspire-monitoring

作者: microsoft

**分析技能** - 觀察 Aspire 應用程式:日誌、追蹤、指標、資源狀態、遙測匯出、瀏覽器遙測及獨立儀表板。路由…

npx skills add https://github.com/microsoft/aspire-skills --skill aspire-monitoring

Aspire Monitoring

Aspire CLI provides full observability locally. For deployed apps, route to platform-specific tools.

Diagnostics Bridge — Where To Look

NeedEnvironmentToolCommand / Route
Console logsLocal devAspire CLIaspire logs <resource>
Structured logsLocal devAspire CLIaspire otel logs [resource]
Distributed tracesLocal devAspire CLIaspire otel traces [resource]
Span detailLocal devAspire CLIaspire otel spans [resource]
Running AppHostsLocal devAspire CLIaspire ps
Resource stateLocal devAspire CLIaspire describe (add --include-hidden if a resource is missing)
Telemetry exportLocal devAspire CLIaspire export [resource]
Standalone dashboardAny (no AppHost)Aspire CLIaspire dashboard run (foreground/blocking — see below)
Browser console / network / diagnosticsLocal dev (frontend)Aspire CLI + dashboardDiscover <frontend>-browser-logs, start its tracked browser, then inspect its console logs
AppHost / deployment definitionAuthoringaspire-deployment skill→ aspire-deployment skill
AKS workload (pod logs, pod state)Deployed AKSkubectl + Container Insightskubectl logs <pod>, kubectl describe pod <pod>, Container Insights in Azure Monitor
Azure resource health (App Insights, Front Door, NSP, private endpoint)Deployed Azureazure-diagnostics→ azure-diagnostics skill
App Service / Container Apps logsDeployed Azureazure-diagnostics→ azure-diagnostics skill
Logs/stateDeployed Docker / ComposeDocker CLIdocker logs <container>, docker compose logs <service>

Decision tree:

  1. Is this about AppHost code or deployment definition? → aspire-deployment skill.
  2. Is the app running locally via aspire start? → Aspire CLI.
  3. Is it deployed to AKS? → kubectl + Container Insights for workload; azure-diagnostics for the cluster's Azure resources.
  4. Is it deployed to other Azure (App Service, Container Apps)? → azure-diagnostics.
  5. Is it deployed to Docker / Compose? → docker / docker compose CLI.

See diagnostics-bridge.md for detailed routing.

Investigation Workflow

When something is wrong, investigate before editing code:

  1. aspire describe — check resource state and endpoints
  2. aspire otel logs <resource> — structured logs first
  3. aspire logs <resource> — console output as secondary view
  4. aspire otel traces <resource> — cross-service activity
  5. aspire export — zipped telemetry snapshot for deeper analysis

Local Commands Reference

CommandPurposeExample
aspire logs <resource>Console stdout/stderraspire logs apiservice
aspire logs --followStream logs in real-timeaspire logs apiservice --follow
aspire otel logsStructured OpenTelemetry logsaspire otel logs
aspire otel tracesDistributed trace dataaspire otel traces
aspire otel spansIndividual span detailaspire otel spans
aspire otel logs --trace-id <id>Logs correlated to trace (⚠️ verify flag)aspire otel logs --trace-id abc123
aspire otel logs --dashboard-urlQuery 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-urlQuery a standalone dashboardaspire otel traces --dashboard-url "http://localhost:18888/login?t=TOKEN"
aspire describeResource state, endpoints, healthaspire describe --format Json
aspire describe --include-hiddenInclude proxies, helper containers, migrationsaspire describe --include-hidden --format Json
aspire resourcesCompatibility alias for resource statePrefer aspire describe in new guidance
aspire exportPortable telemetry bundleaspire export
aspire dashboard runStandalone 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.

SymptomGuidance
Resource missing from aspire describeRe-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.2Fixed 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.2Fixed in 13.5.3. Use a compatible release containing the fix.
Dashboard Graph crashes on 13.5.3 or laterKeep 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 run does not return until you stop it (Ctrl-C). Agents must treat it as a long-running background process — start it with the bash tool's mode="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.

  1. Begin with normal aspire describe or aspire resources output to find <frontend>-browser-logs; aspire ps no longer lists resources. It is a normal child resource, so retry with aspire describe --include-hidden only if unavailable.

  2. Correlate it to the frontend through its parent relationship and Source property.

  3. Start a tracked browser session with:

    aspire resource <frontend>-browser-logs open-tracked-browser
    
  4. 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.

NeedAction
Inspect existing browser diagnosticsDiscover <frontend>-browser-logs, start open-tracked-browser, then run aspire logs <frontend>-browser-logs
Confirm the browser resource belongs to a frontendCheck the child resource's parent relationship and Source property
Confirm a frontend has browser logging enabledCheck 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 ExecuteCommandResult with a Message payload that the dashboard renders inline; HTTP commands set HttpCommandResultMode.Auto | Json | Text | None to 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 init and 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 to aspireify. 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

ScenarioRoute 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

來自 microsoft 的更多技能

oss-growth
microsoft
開源增長駭客角色
agent-framework-azure-ai-py
microsoft
使用Microsoft Agent Framework Python SDK(agent-framework-azure-ai)构建Azure AI Foundry代理。适用于使用AzureAIAgentsProvider创建持久化代理、使用托管工具(代码解释器、文件搜索、网络搜索)、集成MCP服务器、管理对话线程或实现流式响应。涵盖函数工具、结构化输出和多工具代理。
development
airunway-aks-setup
microsoft
在AKS上設定AI Runway——從裸叢集到執行模型。涵蓋叢集驗證、控制器安裝、GPU評估、供應商設定及首次部署。時機:「設定AI Runway」、「上線AKS叢集」、「安裝AI Runway」、「airunway設定」、「部署模型至AKS」、「在AKS上進行GPU推論」、「在AKS上設定KAITO」、「在AKS上執行LLM」、「在AKS上使用vLLM」、「在AKS上設定模型服務」、「AI Runway控制器」。
devops
appinsights-instrumentation
microsoft
使用Azure Application Insights檢測Web應用程式的指南。提供遙測模式、SDK設定與組態參考。適用時機:如何檢測應用程式、App Insights SDK、遙測模式、什麼是App Insights、Application Insights指南、檢測範例、APM最佳實踐。
devops
applicationinsights-web-ts
microsoft
使用Application Insights JavaScript SDK(@microsoft/applicationinsights-web)為瀏覽器/Web應用程式進行檢測。適用於真實使用者監控(RUM)——頁面檢視、點擊、AJAX/fetch依賴、例外、自訂事件,以及與後端OpenTelemetry追蹤關聯的瀏覽器端GenAI代理追蹤。涵蓋SDK載入器指令碼與npm設定、框架擴充(React、React Native、Angular)、點擊分析、遙測初始化器,以及從瀏覽器發出的代理/工具/模型span的OTel GenAI語意慣例。
devops
azure-ai-anomalydetector-java
microsoft
使用適用於 Java 的 Azure AI 異常偵測器 SDK 建置異常偵測應用程式。在實作單變量/多變量異常偵測、時間序列分析或 AI 驅動監控時使用。
development
azure-ai-language-conversations-py
microsoft
使用 azure-ai-language-conversations Python SDK 實作對話語言理解(CLU)。當使用 ConversationAnalysisClient 分析對話意圖與實體、建置 NLP 功能,或將語言理解整合至應用程式時使用。
development
azure-ai-ml-py
microsoft
Azure Machine Learning SDK v2 for Python。用於機器學習工作區、作業、模型、資料集、計算資源與管線。 觸發詞:「azure-ai-ml」、「MLClient」、「workspace」、「model registry」、「training jobs」、「datasets」。
development