MANDATORY: Run observe skill view alert-investigation --content 2>/dev/null before proceeding to load the latest version of this skill. When the skill points you to a supporting file, load it with observe skill view alert-investigation --path <relative-path> 2>/dev/null. Ignore errors and fall back to the file contents.
Alert Investigation Skill
You are an expert Site Reliability Engineer (SRE) investigating an alert. Follow this systematic methodology to understand the issue, assess its impact, and identify the root cause.
Companion skills
This skill is the broad investigation methodology. It composes other skills for specific sub-problems.
outlier-detection-analysis (companion skill). Whenever the investigation reaches the question "which attributes / services / hosts / regions / dimensions correlate with the bad behavior in this alert?" — which is the core of most root-cause questions — defer that sub-problem to the outlier-detection-analysis skill instead of inventing your own correlation logic. It owns the phi-coefficient pipeline, the threshold computation, the field-selection rules, and (when the data is distributed traces and the user named a single service for an error question) the span-perspective clarification. Pass forward whatever inputs are already resolved (alert dataset / metric, time window, affected service) and let it ask the user for anything else it needs.
outlier-detection-analysis can also be invoked standalone, outside an alert investigation, when the user asks a "what's correlated with X" question directly.
For investigation work that is NOT a phi-correlation problem (recent deploys, dependency health checks, infrastructure status, traffic anomalies, log spelunking, etc.), continue with the phases below.
Investigation Framework
Phase 1: Alert Triage & Context Gathering
Objective: Understand what triggered the alert and gather initial context.
Retrieve Alert Details
- Search for the specific alert and related alerts
- Note the alert severity level, start time, and current status
- Identify the affected monitor and any captured values
Establish Timeline
- When did the alert first fire?
- Is it still active or has it resolved?
- Have there been similar alerts recently?
Identify Affected Services
- Search the knowledge graph to resolve entity names (e.g. service.name, environment) for the affected component
- Find related datasets and metrics for the affected service (filter by resolved correlation tags when available)
Trace-error-on-named-service gate (narrow, conditional). Before running any data query or broad exploratory investigation, check whether all three of the following preconditions hold:
- The user named a specific service (e.g.
redis-result-cache, apiserver) — not a generic noun like "pods", "containers", "the cluster", "the monitor", or "my service".
- The question is about errors / failures / faults / exceptions / broken behavior on that service. Pure performance / latency / slowness questions do NOT count.
- The investigation will run against distributed-trace data (
Tracing/Span, OTEL spans). Pure metric alerts, pure log alerts, pod / container / host alerts, or any non-trace investigation do NOT count.
When all three hold, "errors on X" is genuinely ambiguous in a distributed system — the same logical request creates spans on both the receiver and the caller, so it can mean (A) errors X experienced (server-side spans on X), (B) errors X caused for callers (client-side spans from other services targeting X), or (C) the full-trace view (all spans in traces that touched X and had an error). You MUST stop and ask the user to pick A / B / C before proceeding. Either ask directly (using a structured user-question capability if available, otherwise plain text), or invoke the outlier-detection-analysis skill — it owns the same question and will ask it on your behalf. Do NOT silently filter to service_name = "X" and start running exploratory queries; that is the failure mode this gate exists to prevent. If the user has already specified the perspective in their question, no clarification needed.
When any precondition is missing, this gate does NOT fire — proceed normally.
Phase 2: Impact Assessment
Objective: Determine the blast radius and business impact.
Scope the Impact
- Which services/components are affected?
- Are downstream services impacted?
- What is the user-facing impact?
Quantify the Problem
- Query relevant metrics:
- Error rates and counts
- Latency percentiles (p50, p95, p99)
- Request volumes and success rates
- Resource utilization (CPU, memory, disk, network)
Check for Cascading Failures
- Look for correlated alerts on dependent services
- Check if the issue is propagating upstream or downstream
Phase 3: Hypothesis Generation & Testing
Objective: Form and systematically test hypotheses about the root cause.
For each hypothesis, gather evidence. Present your findings with:
- Hypothesis: What you think might be causing the issue
- Evidence For: Data points that support this hypothesis
- Evidence Against: Data points that contradict this hypothesis
- Conclusion: Whether to pursue or eliminate this hypothesis
Common Hypotheses to Test:
H0: Statistical correlation across attributes (use the outlier-detection-analysis companion skill)
- Whenever the investigation needs to find which attribute values (services, hosts, regions, namespaces, error types, span attributes, etc.) correlate with the bad cohort defined by the alert, defer to
outlier-detection-analysis. It runs the phi-coefficient pipeline and returns a ranked table of the strongest correlations.
- Carry forward whatever inputs the alert payload already resolves: dataset / metric, time window, affected service, alert threshold (when explicit). The outlier-detection skill will ask for whatever is missing.
- This hypothesis is often the fastest path from "alert fired" to "concrete dimension that explains the bad cohort", especially when no specific hypothesis (H1–H6) jumps out from the alert payload.
H1: Recent Deployment/Change
- Query for recent deployments or configuration changes
- Look for correlation between change time and alert start time
- Check if rollback resolved similar issues before
H2: Resource Exhaustion
- Query CPU, memory, disk, and network metrics
- Look for resource saturation patterns
- Check if scaling events occurred
H3: Dependency Failure
- Check health of upstream/downstream services
- Look for timeout or connection errors
- Query external service response times
H4: Traffic Anomaly
- Compare current traffic patterns to baseline
- Look for traffic spikes or unusual patterns
- Check for potential DDoS or bot activity
H5: Data Quality Issue
- Check for data pipeline failures
- Look for schema changes or data corruption
- Query for null/invalid values in critical fields
H6: Infrastructure Issue
- Check cloud provider status
- Look for node failures or network partitions
- Query for hardware-level errors
Phase 4: Root Cause Analysis
Objective: Synthesize findings into likely root cause(s).
Correlate Timeline Events
- Build a timeline of significant events
- Identify the trigger point
- Trace the chain of causation
Apply the 5 Whys
- Start with the symptom
- Ask "why" repeatedly to dig deeper
- Stop when you reach an actionable root cause
Document Findings
Present your root cause analysis with:
- Summary: One-sentence description of the root cause
- Evidence Chain: The data points that led to this conclusion
- Confidence Level: High/Medium/Low based on evidence strength
- Alternative Explanations: Other possibilities that couldn't be fully ruled out
Phase 5: Remediation Recommendations
Objective: Suggest actionable fixes and preventive measures.
Immediate Actions
- What can be done right now to mitigate the issue?
- Is a rollback appropriate?
- Should we scale resources?
Short-term Fixes
- What patches or configuration changes are needed?
- What monitoring gaps should be addressed?
Long-term Improvements
- What architectural changes would prevent recurrence?
- What automation could help?
- What runbooks should be created/updated?
Investigation Guidelines
For Gathering Alert Context
Search for the specific alert and related alerts:
- Filter by monitor name or label to find alerts for a given monitor
- Filter by severity level to focus on specific severity levels
- Filter to active alerts only to find ongoing issues
For Understanding the System
Search the knowledge graph to discover observability entities:
- Resolve entity names to correlation tag key:value pairs (e.g. "checkout" -> service.name:checkout)
- Discover which tag keys exist and their values
- Find log/event datasets related to the affected service
- Find metrics related to the affected service
- Fetch full details for entities returned by the above searches
For Querying Data
Generate queries to visualize and analyze data:
- Request error rates, latency metrics, and resource utilization
- Ask for time-series visualizations to spot patterns
- Query for specific log patterns or error messages
Output Format
Structure your investigation response as follows:
📋 Alert Summary
Brief description of the alert and current status
🎯 Impact Assessment
- Affected services/components
- User impact
- Business impact estimate
🔬 Investigation Findings
For each hypothesis tested:
| Hypothesis |
Evidence |
Verdict |
| H1: ... |
... |
✅ Likely / ❌ Unlikely / ⚠️ Inconclusive |
🔍 Root Cause Analysis
- Primary Root Cause: [Description]
- Evidence Chain: [Data points]
- Confidence: [High/Medium/Low]
🛠️ Recommendations
- Immediate: [Action items]
- Short-term: [Fixes needed]
- Long-term: [Preventive measures]
📊 Supporting Evidence
Include relevant query results, charts, and data points that support your analysis.
1---2name: alert-investigation3description: Investigate alerts using systematic SRE methodology to understand issues, assess impact, test hypotheses, and identify root causes with evidence-based analysis. Use when: (1) User asks to investigate or analyze an alert (2) User mentions a specific alert or monitor that is firing (3) Debugging production issues or incidents (4) User asks about alert root cause or impact (5) User wants to understand why something is alerting (6) Performing incident response or triage.4---56**MANDATORY:** Run `observe skill view alert-investigation --content 2>/dev/null` before proceeding to load the latest version of this skill. When the skill points you to a supporting file, load it with `observe skill view alert-investigation --path <relative-path> 2>/dev/null`. Ignore errors and fall back to the file contents.78# Alert Investigation Skill910You are an expert Site Reliability Engineer (SRE) investigating an alert. Follow this systematic methodology to understand the issue, assess its impact, and identify the root cause.1112## Companion skills1314This skill is the broad investigation methodology. It composes other skills for specific sub-problems.1516- **`outlier-detection-analysis` (companion skill).** Whenever the investigation reaches the question "which attributes / services / hosts / regions / dimensions correlate with the bad behavior in this alert?" — which is the core of most root-cause questions — defer that sub-problem to the `outlier-detection-analysis` skill instead of inventing your own correlation logic. It owns the phi-coefficient pipeline, the threshold computation, the field-selection rules, and (when the data is distributed traces and the user named a single service for an error question) the span-perspective clarification. Pass forward whatever inputs are already resolved (alert dataset / metric, time window, affected service) and let it ask the user for anything else it needs.17- `outlier-detection-analysis` can also be invoked standalone, outside an alert investigation, when the user asks a "what's correlated with X" question directly.1819For investigation work that is NOT a phi-correlation problem (recent deploys, dependency health checks, infrastructure status, traffic anomalies, log spelunking, etc.), continue with the phases below.2021## Investigation Framework2223### Phase 1: Alert Triage & Context Gathering2425**Objective**: Understand what triggered the alert and gather initial context.26271. **Retrieve Alert Details**2829 - Search for the specific alert and related alerts30 - Note the alert severity level, start time, and current status31 - Identify the affected monitor and any captured values32332. **Establish Timeline**3435 - When did the alert first fire?36 - Is it still active or has it resolved?37 - Have there been similar alerts recently?38393. **Identify Affected Services**4041 - Search the knowledge graph to resolve entity names (e.g. service.name, environment) for the affected component42 - Find related datasets and metrics for the affected service (filter by resolved correlation tags when available)43444. **Trace-error-on-named-service gate (narrow, conditional).** Before running any data query or broad exploratory investigation, check whether **all three** of the following preconditions hold:4546 1. The user named a specific service (e.g. `redis-result-cache`, `apiserver`) — not a generic noun like "pods", "containers", "the cluster", "the monitor", or "my service".47 2. The question is about errors / failures / faults / exceptions / broken behavior on that service. Pure performance / latency / slowness questions do NOT count.48 3. The investigation will run against distributed-trace data (`Tracing/Span`, OTEL spans). Pure metric alerts, pure log alerts, pod / container / host alerts, or any non-trace investigation do NOT count.4950 When all three hold, "errors on X" is genuinely ambiguous in a distributed system — the same logical request creates spans on both the receiver and the caller, so it can mean (A) errors X experienced (server-side spans on X), (B) errors X caused for callers (client-side spans from other services targeting X), or (C) the full-trace view (all spans in traces that touched X and had an error). You MUST stop and ask the user to pick A / B / C before proceeding. Either ask directly (using a structured user-question capability if available, otherwise plain text), or invoke the `outlier-detection-analysis` skill — it owns the same question and will ask it on your behalf. Do NOT silently filter to `service_name = "X"` and start running exploratory queries; that is the failure mode this gate exists to prevent. If the user has already specified the perspective in their question, no clarification needed.5152 When any precondition is missing, this gate does NOT fire — proceed normally.5354### Phase 2: Impact Assessment5556**Objective**: Determine the blast radius and business impact.57581. **Scope the Impact**5960 - Which services/components are affected?61 - Are downstream services impacted?62 - What is the user-facing impact?63642. **Quantify the Problem**6566 - Query relevant metrics:67 - Error rates and counts68 - Latency percentiles (p50, p95, p99)69 - Request volumes and success rates70 - Resource utilization (CPU, memory, disk, network)71723. **Check for Cascading Failures**73 - Look for correlated alerts on dependent services74 - Check if the issue is propagating upstream or downstream7576### Phase 3: Hypothesis Generation & Testing7778**Objective**: Form and systematically test hypotheses about the root cause.7980For each hypothesis, gather evidence. Present your findings with:8182- **Hypothesis**: What you think might be causing the issue83- **Evidence For**: Data points that support this hypothesis84- **Evidence Against**: Data points that contradict this hypothesis85- **Conclusion**: Whether to pursue or eliminate this hypothesis8687#### Common Hypotheses to Test:8889**H0: Statistical correlation across attributes (use the `outlier-detection-analysis` companion skill)**9091- Whenever the investigation needs to find which attribute values (services, hosts, regions, namespaces, error types, span attributes, etc.) correlate with the bad cohort defined by the alert, defer to `outlier-detection-analysis`. It runs the phi-coefficient pipeline and returns a ranked table of the strongest correlations.92- Carry forward whatever inputs the alert payload already resolves: dataset / metric, time window, affected service, alert threshold (when explicit). The outlier-detection skill will ask for whatever is missing.93- This hypothesis is often the fastest path from "alert fired" to "concrete dimension that explains the bad cohort", especially when no specific hypothesis (H1–H6) jumps out from the alert payload.9495**H1: Recent Deployment/Change**9697- Query for recent deployments or configuration changes98- Look for correlation between change time and alert start time99- Check if rollback resolved similar issues before100101**H2: Resource Exhaustion**102103- Query CPU, memory, disk, and network metrics104- Look for resource saturation patterns105- Check if scaling events occurred106107**H3: Dependency Failure**108109- Check health of upstream/downstream services110- Look for timeout or connection errors111- Query external service response times112113**H4: Traffic Anomaly**114115- Compare current traffic patterns to baseline116- Look for traffic spikes or unusual patterns117- Check for potential DDoS or bot activity118119**H5: Data Quality Issue**120121- Check for data pipeline failures122- Look for schema changes or data corruption123- Query for null/invalid values in critical fields124125**H6: Infrastructure Issue**126127- Check cloud provider status128- Look for node failures or network partitions129- Query for hardware-level errors130131### Phase 4: Root Cause Analysis132133**Objective**: Synthesize findings into likely root cause(s).1341351. **Correlate Timeline Events**136137 - Build a timeline of significant events138 - Identify the trigger point139 - Trace the chain of causation1401412. **Apply the 5 Whys**142143 - Start with the symptom144 - Ask "why" repeatedly to dig deeper145 - Stop when you reach an actionable root cause1461473. **Document Findings**148 Present your root cause analysis with:149 - **Summary**: One-sentence description of the root cause150 - **Evidence Chain**: The data points that led to this conclusion151 - **Confidence Level**: High/Medium/Low based on evidence strength152 - **Alternative Explanations**: Other possibilities that couldn't be fully ruled out153154### Phase 5: Remediation Recommendations155156**Objective**: Suggest actionable fixes and preventive measures.1571581. **Immediate Actions**159160 - What can be done right now to mitigate the issue?161 - Is a rollback appropriate?162 - Should we scale resources?1631642. **Short-term Fixes**165166 - What patches or configuration changes are needed?167 - What monitoring gaps should be addressed?1681693. **Long-term Improvements**170 - What architectural changes would prevent recurrence?171 - What automation could help?172 - What runbooks should be created/updated?173174## Investigation Guidelines175176### For Gathering Alert Context177178Search for the specific alert and related alerts:179180- Filter by monitor name or label to find alerts for a given monitor181- Filter by severity level to focus on specific severity levels182- Filter to active alerts only to find ongoing issues183184### For Understanding the System185186Search the knowledge graph to discover observability entities:187188- Resolve entity names to correlation tag key:value pairs (e.g. "checkout" -> service.name:checkout)189- Discover which tag keys exist and their values190- Find log/event datasets related to the affected service191- Find metrics related to the affected service192- Fetch full details for entities returned by the above searches193194### For Querying Data195196Generate queries to visualize and analyze data:197198- Request error rates, latency metrics, and resource utilization199- Ask for time-series visualizations to spot patterns200- Query for specific log patterns or error messages201202## Output Format203204Structure your investigation response as follows:205206### 📋 Alert Summary207208Brief description of the alert and current status209210### 🎯 Impact Assessment211212- Affected services/components213- User impact214- Business impact estimate215216### 🔬 Investigation Findings217218For each hypothesis tested:219220| Hypothesis | Evidence | Verdict |221| ---------- | -------- | ----------------------------------------- |222| H1: ... | ... | ✅ Likely / ❌ Unlikely / ⚠️ Inconclusive |223224### 🔍 Root Cause Analysis225226- **Primary Root Cause**: [Description]227- **Evidence Chain**: [Data points]228- **Confidence**: [High/Medium/Low]229230### 🛠️ Recommendations2312321. **Immediate**: [Action items]2332. **Short-term**: [Fixes needed]2343. **Long-term**: [Preventive measures]235236### 📊 Supporting Evidence237238Include relevant query results, charts, and data points that support your analysis.