Gap-6: App Service Diagnose (B → A) — Dedicated troubleshooting guide#1640
Gap-6: App Service Diagnose (B → A) — Dedicated troubleshooting guide#1640
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a dedicated App Service troubleshooting reference covering common App Service symptoms, diagnostic commands (Azure CLI/Kudu), KQL queries, and MCP tool guidance to support “Gap-6: App Service Diagnose (B → A)”.
Changes:
- Introduces a symptom → cause → quick fix matrix for common App Service failures.
- Adds step-by-step sections with Azure CLI commands and KQL queries for CPU/memory, deployments, crashes, latency, and TLS/custom domains.
- Documents relevant MCP tools and includes a “combined diagnostic script” snippet.
| | Symptom | Likely Cause | Quick Fix | | ||
| |---------|--------------|-----------| | ||
| | High CPU / memory | Runaway process, inefficient code | Use Process Explorer via Kudu, scale up | | ||
| | Deployment failure | Build error, locked files, quota | Check Kudu logs at `https://APP.scm.azurewebsites.net/api/deployments` | | ||
| | App crash / restart | Unhandled exception, OOM kill | Review Event Log and STDERR in Diagnose & Solve | | ||
| | Slow responses | Downstream dependency, no caching | Enable request tracing, check dependency calls | | ||
| | 502 / 503 errors | App not starting, port conflict | Check STDERR logs, verify startup command | | ||
| | TLS / domain errors | Certificate expired, DNS mismatch | `az webapp config ssl list`, verify CNAME | | ||
| | Health check failure | Endpoint not returning 200 | Verify health check path responds within 2 min | |
There was a problem hiding this comment.
The markdown tables use a double leading pipe (||), which renders as an extra empty first column in most markdown renderers and breaks the intended 3-column layout. Use a single leading | for each row (and ideally a trailing |) so the tables render consistently.
| --metric "CpuPercentage,MemoryPercentage" --interval PT1M --output table | ||
|
|
||
| # View running processes via Kudu REST API | ||
| curl -u '$USER:$PASS' https://APP.scm.azurewebsites.net/api/processes |
There was a problem hiding this comment.
Using single quotes prevents shell variable expansion, so this will literally send the username $USER and password $PASS rather than their values. Use double quotes (or omit quotes) so $USER/$PASS expand correctly.
| curl -u '$USER:$PASS' https://APP.scm.azurewebsites.net/api/processes | |
| curl -u "$USER:$PASS" https://APP.scm.azurewebsites.net/api/processes |
| ``` | ||
| mcp_azure_mcp_applens |
There was a problem hiding this comment.
The AppLens tool identifier is inconsistent between the invocation example (mcp_azure_mcp_applens) and the MCP tools table (azure-mcp-applens). Align these names so readers know exactly what to call, and consider adding a language hint (e.g., yaml) to the fenced block to make the example format explicit.
| ``` | |
| mcp_azure_mcp_applens | |
| ```yaml | |
| azure-mcp-applens |
Details# 🔍 Token Analysis Report
fatal: path 'plugin/skills/azure-diagnostics/references/app-service/README.md' exists on disk, but not in 'origin/main' 📊 Token Change ReportComparing Summary
Changed Files
📊 Token Limit Check ReportChecked: 525 files
|
| File | Tokens | Limit | Over By |
|---|---|---|---|
.github/skills/analyze-test-run/SKILL.md |
2471 | 500 | +1971 |
.github/skills/file-test-bug/SKILL.md |
628 | 500 | +128 |
.github/skills/sensei/README.md |
3531 | 2000 | +1531 |
.github/skills/sensei/SKILL.md |
2382 | 500 | +1882 |
.github/skills/sensei/references/EXAMPLES.md |
3707 | 2000 | +1707 |
.github/skills/sensei/references/LOOP.md |
4181 | 2000 | +2181 |
.github/skills/sensei/references/SCORING.md |
3927 | 2000 | +1927 |
.github/skills/skill-authoring/SKILL.md |
817 | 500 | +317 |
plugin/skills/appinsights-instrumentation/SKILL.md |
908 | 500 | +408 |
plugin/skills/azure-ai/SKILL.md |
817 | 500 | +317 |
plugin/skills/azure-aigateway/SKILL.md |
1258 | 500 | +758 |
plugin/skills/azure-aigateway/references/policies.md |
2342 | 2000 | +342 |
plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md |
2600 | 2000 | +600 |
plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md |
2181 | 2000 | +181 |
plugin/skills/azure-compliance/SKILL.md |
1185 | 500 | +685 |
plugin/skills/azure-compute/SKILL.md |
755 | 500 | +255 |
plugin/skills/azure-compute/workflows/vm-recommender/vm-recommender.md |
2393 | 2000 | +393 |
plugin/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md |
7308 | 2000 | +5308 |
plugin/skills/azure-cost-optimization/SKILL.md |
3900 | 500 | +3400 |
plugin/skills/azure-deploy/SKILL.md |
1562 | 500 | +1062 |
plugin/skills/azure-diagnostics/SKILL.md |
1132 | 500 | +632 |
plugin/skills/azure-diagnostics/aks-troubleshooting/networking.md |
2147 | 2000 | +147 |
plugin/skills/azure-diagnostics/aks-troubleshooting/node-issues.md |
2003 | 2000 | +3 |
plugin/skills/azure-enterprise-infra-planner/SKILL.md |
991 | 500 | +491 |
plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md |
2022 | 2000 | +22 |
plugin/skills/azure-hosted-copilot-sdk/SKILL.md |
608 | 500 | +108 |
plugin/skills/azure-kubernetes/SKILL.md |
2266 | 500 | +1766 |
plugin/skills/azure-kusto/SKILL.md |
2149 | 500 | +1649 |
plugin/skills/azure-messaging/SKILL.md |
967 | 500 | +467 |
plugin/skills/azure-prepare/SKILL.md |
2607 | 500 | +2107 |
plugin/skills/azure-prepare/references/aspire.md |
2991 | 2000 | +991 |
plugin/skills/azure-prepare/references/plan-template.md |
2559 | 2000 | +559 |
plugin/skills/azure-prepare/references/recipes/azd/terraform.md |
3012 | 2000 | +1012 |
plugin/skills/azure-prepare/references/resources-limits-quotas.md |
3322 | 2000 | +1322 |
plugin/skills/azure-prepare/references/security.md |
2092 | 2000 | +92 |
plugin/skills/azure-prepare/references/services/functions/bicep.md |
3065 | 2000 | +1065 |
plugin/skills/azure-prepare/references/services/functions/templates/SPEC-composable-templates.md |
6187 | 2000 | +4187 |
plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md |
4649 | 2000 | +2649 |
plugin/skills/azure-prepare/references/services/functions/terraform.md |
3358 | 2000 | +1358 |
plugin/skills/azure-quotas/SKILL.md |
3445 | 500 | +2945 |
plugin/skills/azure-quotas/references/commands.md |
2644 | 2000 | +644 |
plugin/skills/azure-resource-lookup/SKILL.md |
1279 | 500 | +779 |
plugin/skills/azure-resource-visualizer/SKILL.md |
2054 | 500 | +1554 |
plugin/skills/azure-storage/SKILL.md |
1180 | 500 | +680 |
plugin/skills/azure-upgrade/SKILL.md |
1001 | 500 | +501 |
plugin/skills/azure-upgrade/references/services/functions/automation.md |
3463 | 2000 | +1463 |
plugin/skills/azure-upgrade/references/services/functions/consumption-to-flex.md |
2773 | 2000 | +773 |
plugin/skills/azure-validate/SKILL.md |
906 | 500 | +406 |
plugin/skills/entra-app-registration/SKILL.md |
2068 | 500 | +1568 |
plugin/skills/entra-app-registration/references/api-permissions.md |
2545 | 2000 | +545 |
plugin/skills/entra-app-registration/references/cli-commands.md |
2211 | 2000 | +211 |
plugin/skills/entra-app-registration/references/console-app-example.md |
2752 | 2000 | +752 |
plugin/skills/entra-app-registration/references/oauth-flows.md |
2375 | 2000 | +375 |
plugin/skills/microsoft-foundry/SKILL.md |
2870 | 500 | +2370 |
plugin/skills/microsoft-foundry/foundry-agent/create/create.md |
3016 | 2000 | +1016 |
plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md |
5511 | 2000 | +3511 |
plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md |
2342 | 2000 | +342 |
plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md |
4268 | 2000 | +2268 |
plugin/skills/microsoft-foundry/foundry-agent/observe/observe.md |
2547 | 2000 | +547 |
plugin/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md |
2701 | 2000 | +701 |
plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md |
1640 | 500 | +1140 |
plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md |
1739 | 500 | +1239 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md |
2235 | 500 | +1735 |
plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md |
3335 | 2000 | +1335 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md |
1226 | 500 | +726 |
plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md |
5534 | 2000 | +3534 |
plugin/skills/microsoft-foundry/quota/quota.md |
2129 | 2000 | +129 |
plugin/skills/microsoft-foundry/quota/references/capacity-planning.md |
2029 | 2000 | +29 |
plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md |
2162 | 2000 | +162 |
Consider moving content to
references/subdirectories.
Automated token analysis. See skill authoring guidelines for best practices.
jongio
left a comment
There was a problem hiding this comment.
Two CI checks are failing because SKILL.md was not updated alongside this new reference file:\n\n1. Skill Structure - metadata.version needs a bump (1.0.4 -> next). CI requires this when any file under a skill changes.\n\n2. Markdown References - references/app-service/README.md is not linked from SKILL.md. Add an App Service row to the "Troubleshooting Guides by Service" table and a link in the References section at the bottom.\n\nBeyond the CI fixes - the SKILL.md description and "Triggers" section do not mention "App Service" at all. Without adding trigger phrases like "troubleshoot app service", "app service high CPU", "app service deployment failure", this skill will not activate when users ask about App Service issues - making the new guide undiscoverable.\n\nThe guide content itself is solid - good symptom/cause/fix matrices, practical KQL queries, and the combined diagnostic script is a nice touch. Worth also addressing the copilot-bot comments on table formatting, curl quoting, and MCP tool naming.
Closes #1614 | Parent: #1608
1 file: app-service/README.md — High CPU, deployment failures, crashes, slow responses, TLS issues. MCP tool usage guide. KQL queries. Symptom/cause/fix tables.