About production-troubleshooting
production-troubleshooting is a skill for investigating performance problems and errors in test and production environments. It guides operators through evidence-led checks using Sentry, Kubernetes tools, logs, metrics, and Helm configuration.
Key features
- 01Sentry trace and error analysis
- 02Pod status and log inspection
- 03CPU and memory usage checks
- 04Helm resource configuration review
- 05Evidence-based change verification
Use cases
- 01Investigating slow endpoints and database queries
- 02Diagnosing pod crashes and restart loops
- 03Checking suspected CPU or memory throttling
- 04Verifying configuration changes after deployment
MCP support
The workflow can use Sentry MCP to search traces related to incidents and inspect latency or error patterns.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ blogic-cz/ blogic-marketplace --skill production-troubleshootingAfter installing, type/production-troubleshootingin Claude Code to confirm it loaded.
Bundled filesreferences/common-issues.mdreferences/helm-values-locations.md
Details
From the project READMEProduction Troubleshooting
Overview
Diagnose performance issues and errors in production/test environments using systematic investigation workflows with Sentry, kubectl, and Helm configuration analysis.
Prerequisites
Verify access to Sentry and Kubernetes tooling before troubleshooting.
- Prefer
k8s-toolwhen available for environment-aware commands. - Fall back to raw
kubectlcommands whenk8s-toolis not installed or not configured in the current environment. - Confirm namespace and target environment (
testorprod) before running commands.
When to Use This Skill
Apply this skill when:
- Investigating incidents in test/production (not localhost)
- Troubleshooting slow endpoints, slow queries, or elevated latency
- Debugging pod crashes, restart loops,
OOMKilled, or potential throttling - Analyzing Sentry traces for failures or degraded transactions
- Validating Kubernetes resource limits and related Helm values
Investigation Workflow
Follow this symptom-driven workflow and confirm evidence before making changes.
Step 1: Triage by Primary Symptom
Choose the first investigation path based on the reported symptom.
- For pod crash/restart symptoms (
CrashLoopBackOff,OOMKilled, frequent restarts): check pod status and logs first. - For latency/slow endpoint symptoms: inspect traces first, then correlate with logs and pod state.
Step 2A: Inspect Pod Status and Logs (Crash/Restart Path)
Check pod health state before trace analysis when the incident is pod-centric.
Using k8s-tool (preferred):
k8s-tool describe --resource pod --name <pod-name> --env <env>
k8s-tool logs --pod <pod-name> --env <env> --tail 200
Fallback using kubectl:
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace> --tail 200
Look for restart reasons, termination messages, probe failures, and repeated startup errors.
Step 2B: Inspect Sentry Traces (Latency/Error Path)
Use Sentry to identify slow database calls, external latency, and transaction-level failures.
Using Sentry MCP:
- Search for traces related to the reported issue
- Look for slow database queries (for this project, >500ms is a useful baseline heuristic, not a universal threshold)
- Check external API call latency
- Identify error patterns and stack traces
What to look for:
- Database query times exceeding expected baseline (commonly ~500ms in this project)
- External API calls with high latency
- Repeated error patterns
- Performance degradation trends
Step 3: Review Application Logs
Examine kubectl logs for timing information and error patterns.
Using k8s-tool:
k8s-tool logs --pod <pod-name> --env <env> --tail 200
Key log patterns to search for:
[Server]- Server startup and initialization timing[SSR]- Server-side rendering timing[tRPC]- TRPC query execution timing[DB Pool]- Database connection pool statusERRORorWARN- Application errors and warnings
Common issues:
- Sequential API calls instead of parallel (Promise.all)
- Long DB connection acquisition times
- Slow SSR rendering
Step 4: Check Pod Resource Usage
Verify CPU and memory usage to detect throttling.
Using k8s-tool:
k8s-tool top --env <env>
Warning signs:
- CPU usage >70% may indicate potential throttling
- Memory usage >80% may indicate elevated OOM risk
- Consistent high utilization suggests under-provisioning
Step 5: Review Pod Configuration
Check resource limits and Helm values to identify misconfigurations.
Using kubectl:
kubectl get pod <pod-name> -n <namespace> -o yaml
Key sections to check:
resources.limits.cpuandresources.limits.memoryresources.requests.cpuandresources.requests.memory- Environment variables configuration
- Image version and tags
Helm values locations:
- web-app:
/kubernetes/helm/web-app/values.{test,prod}.yaml
Reference references/helm-values-locations.md for detailed Helm configuration structure.
Step 6: Confirm Evidence Before Changing Configuration
Confirm that proposed fixes map to observed evidence before editing Helm values or code.
- Link each change to concrete evidence from traces, logs, pod events, or resource metrics.
- Prefer the smallest reversible change first.
- Re-check traces/logs after deployment to verify impact.
Common Causes & Solutions
CPU/Memory Throttling
- Symptom: Sustained high CPU/memory usage with degraded response times or restarts
- Confirm with evidence: Correlate resource metrics with throttling signals, restart events, and latency spikes
- Solution: Adjust resource requests/limits in Helm values only after confirmation
Network Latency
- Symptom: Slow external API calls, DNS resolution delays
- Confirm with evidence: Validate slow spans and timed log entries for network-bound operations
- Solution: Check network policies, verify DNS configuration, and tune retry behavior where appropriate
Database Connection Pool Issues
- Symptom:
[DB Pool]errors, slow connection acquisition - Confirm with evidence: Match pool warnings with trace timing and connection wait patterns
- Solution: Review
idleTimeoutMillisand pool size configuration
Sequential API Calls
- Symptom: Multiple API calls taking cumulative time
- Confirm with evidence: Verify sequential span ordering in traces or timestamped log sequence
- Solution: Refactor to use
Promise.all()for parallel execution
Resources
kubectl commands
Use these common operations with k8s-tool when available, or run equivalent raw kubectl commands as fallback:
k8s-tool logs --pod <pod> --env <env> --tail 200- Extract and filter pod logsk8s-tool top --env <env>- Show CPU/memory usage for podsk8s-tool describe --resource pod --name <pod> --env <env>- Check resource limits and pod configurationk8s-tool kubectl --env <env> --cmd "get pods"- Raw kubectl for anything else
references/
helm-values-locations.md- Detailed guide to Helm values file structure and locationscommon-issues.md- Catalog of common production issues and solutions