Skill: k8s-observability
Metrics and logs triage for Kubernetes incidents using RootCause's vendor-neutral observability.* tools.
How this is decoupled from any specific vendor
RootCause's observability tools delegate to a configured backend (see observability.gcp.* in config.yaml for the GCP Stackdriver backend; future observability.prometheus.* etc. will plug in as siblings). Tool inputs and outputs are the same regardless of which backend serves them. Skill rules below apply to all backends.
The backend identifier appears in every tool response under the "backend" field — cite it in postmortems so reviewers know which provider's data was consulted.
Purpose
Use this skill for:
- triaging workload health with CPU / memory / restart-count metrics,
- pulling errors and warnings for a workload,
- finding the inflection point of an incident via bucketed error timelines,
- correlating logs with a
rootcause.incident_bundleevent window, - discovering metric descriptors and SLO configuration in the backend.
Strict Tooling Contract
Use only these observability tool names:
observability.metrics.queryobservability.metrics.workloadobservability.metrics.list_descriptorsobservability.metrics.slo_listobservability.logs.queryobservability.logs.workloadobservability.logs.error_timelineobservability.logs.correlated_with_bundle
Pair with these RootCause tools for evidence and correlation:
rootcause.incident_bundle(pass bothnamespaceandworkloadso observability steps trigger automatically)rootcause.change_timelinerootcause.rca_generate
Triggers
Enable when user intent includes:
- "diagnose workload using observability data",
- "show me errors for service",
- "what's the error rate trend",
- "find the inflection point",
- "correlate logs with the incident timeline",
- "what SLOs do we have",
- "list available metrics".
Workflow
- Confirm backend. If the active backend is GCP, confirm
observability.gcp.projectis set (or thatGOOGLE_CLOUD_PROJECTenv supplies it). Do not infer from kubeconfig — observability config is intentionally decoupled from cluster identity. - Build evidence. Call
rootcause.incident_bundlewithnamespace+workload. This auto-triggersobservability.metrics.workloadandobservability.logs.workloadwhen the observability toolset is enabled. - Find the inflection point. Call
observability.logs.error_timelinewith the same namespace + workload. UsebucketSize: 1mfor narrow incidents (≤15m),5mfor normal,15mfor multi-hour. For non-GKE clusters where logs come from a different monitored resource type, passresourceType(e.g.generic_node). - Pull correlated logs. Call
observability.logs.correlated_with_bundlewith the bundle from step 2 to get the exact log entries inside the bundle's event window. - SLO context. If the team has SLOs, call
observability.metrics.slo_listto surface goal / period. Live burn-rate is out of scope — useobservability.metrics.querywith a backend-native burn-rate query when needed. - Discovery. When a metric type is unfamiliar, call
observability.metrics.list_descriptorswith the backend's filter syntax to enumerate available signals.
Output Contract
- Time-aligned summary: k8s events vs metric anomalies vs error-timeline buckets.
- Identified inflection point with bucket evidence.
- Root-cause hypothesis citing specific metric + log entries with timestamps.
- The backend identifier (from the
backendfield in tool responses). - Remediation actions and validation checks.
Safety
All observability tools are read-only. They never mutate cloud resources or workloads. Log entries may contain PII or secrets — rely on the redactor pipeline and avoid echoing raw payloads in postmortems without review.
Source: yindia/rootcause — distributed by TomeVault.