monitoring-observability · v2.0 · 2026-04-14 · sha256 b43003b9f907a0d9

monitoring-observability v2.0A

Immutable. This exact content is served forever at /api/v1/blob/b43003b9f907a0d9.

---
name: monitoring-observability
description: >
  Design or review observability for services, pipelines, and live operations: instrumentation,
  health signals, dashboards, alerting, retention, and ownership handoffs. Use when the main job
  is deciding what telemetry to emit, which symptoms deserve alerts, how to review dashboard/alert
  coverage, how to make data or marketing pipelines observable, or how to add crash/session visibility
  for game or multi-service systems. Not for root-cause log triage, code-level debugging, or engine-only
  profiler diagnosis — route those to `log-analysis`, `debugging`, `performance-optimization`,
  `langsmith`, or `game-performance-profiler` as appropriate.
allowed-tools: Bash Read Write Edit Glob Grep
compatibility: >
  Best for repositories, architecture docs, dashboards, alert rules, telemetry configs, runbooks,
  incident follow-ups, and planning tasks where the team needs a repeatable observability setup or
  review workflow rather than vendor-only copy/paste snippets.
metadata:
  tags: observability, monitoring, telemetry, alerts, dashboards, slos, logging, traces, metrics
  version: "2.0"
  source: akillness/oh-my-skills
---

# Monitoring & Observability

Use this skill to turn a vague “we need monitoring” request into a **mode-specific observability brief**.

The goal is **not** to dump a vendor tutorial.
The goal is to decide:
1. what surface needs observability,
2. which signals matter,
3. what should page a human versus stay informational,
4. what ownership or route-out belongs elsewhere.

Read [references/modes-and-boundaries.md](references/modes-and-boundaries.md) before handling mixed requests that blur telemetry setup, log triage, performance diagnosis, or product analytics.
Read [references/alert-dashboard-checklist.md](references/alert-dashboard-checklist.md) when reviewing dashboards, alerts, or SLO coverage.
Read [references/telemetry-rollout-matrix.md](references/telemetry-rollout-matrix.md) when choosing instrumentation, retention, sampling, and ownership defaults.

## When to use this skill
- Set up observability before launch for a web, backend, worker, or multi-service system
- Review whether current metrics, logs, traces, health checks, and alerts are enough
- Design symptom-first alerts, dashboard questions, SLO/SLI coverage, or metamonitoring
- Add telemetry foundations for traces / metrics / logs without tying the workflow to one vendor
- Make product, marketing, analytics, or BI pipelines observable via freshness / schema / volume / lineage checks
- Add crash, alert, and live-ops visibility for game services, builds, or launch events
- Define ownership, retention, or handoff rules after an incident showed telemetry gaps

## When not to use this skill
- **Root-cause triage on existing logs** → use `log-analysis`
- **Code-level reproduction / bug fixing** → use `debugging`
- **Bottleneck diagnosis or tuning after measurements exist** → use `performance-optimization`
- **LLM tracing / evaluation / prompt-observability workflows** → use `langsmith`
- **Unity / Unreal frame-time and profiler-capture interpretation** → use `game-performance-profiler`
- **Release rollout / deploy execution** → use `deployment-automation`

## Mode selection
Choose one primary mode before proposing tooling.

| Mode | Use when | Main output |
|------|----------|-------------|
| Service reliability | API/app/worker/service needs health signals, SLOs, dashboards, alerts | service observability brief |
| Telemetry foundation | team needs instrumentation, event naming, traces/metrics/logs coverage | telemetry rollout plan |
| Data / pipeline observability | analytics, marketing, BI, or data pipelines need reliability checks | data-health monitoring brief |
| Game / live-ops visibility | crashes, player-session health, launch-event stability, backend game services | live-ops observability brief |
| Review / gap audit | existing stack exists but trust is low or incidents escaped detection | observability review + gap list |

If multiple modes appear, pick the primary bottleneck and list the others as secondary follow-ups.

## Instructions

### Step 1: Label the surface before choosing tools
Capture the minimum facts first.

Record:
- system type: web app | backend/API | worker/job | data pipeline | marketing automation | game/live-ops | mixed
- environment: local | staging | preview | prod | launch-event | unknown
- request type: new setup | review / audit | incident follow-up | migration | platform/tool switch
- current evidence: metrics | logs | traces | dashboards | alert rules | incidents | none
- user impact shape: latency | errors | stale data | missing events | crashes | unknown
- ownership: app team | platform/SRE | data/ops | live-ops | shared | unknown

Do **not** start by asking “Prometheus or Datadog?” Start by labeling the workflow.

### Step 2: Choose the primary observability mode

#### Mode A — Service reliability
Use when the core job is service health, paging, and user-visible behavior.

Focus on:
- request rate / traffic shape
- error rate / failure class
- latency distribution / saturation
- black-box probes and metamonitoring
- SLO / SLI definitions for important journeys

Return:
- top 3–5 service questions the dashboard must answer
- symptom-first alerts only
- what must page now vs ticket later vs dashboard only
- missing instrumentation or health endpoints

#### Mode B — Telemetry foundation
Use when the team needs to instrument the system, correlate signals, or standardize telemetry.

Focus on:
- traces, metrics, logs, and correlation IDs
- event naming / dimensions / labels
- instrumentation ownership and rollout slices
- retention / sampling / cardinality risk
- vendor-neutral export path first, backend second

Return:
- telemetry coverage map
- required correlation fields (`request_id`, `trace_id`, `job_id`, `user_id`, etc.)
- initial rollout order
- unsafe telemetry patterns to avoid

#### Mode C — Data / pipeline observability
Use when freshness, schema drift, volume anomalies, or broken downstream dashboards are the real issue.

Focus on:
- freshness / lateness
- volume / duplicates / drops
- schema drift
- distribution / null rate / metric anomalies
- lineage / downstream blast radius

Return:
- the most important pipeline-health dimensions
- likely owners for each alert class
- where dashboard trust can silently break
- which checks are table-level, job-level, and consumer-level

#### Mode D — Game / live-ops visibility
Use when player experience, launch stability, or cross-build crash visibility matters.

Focus on:
- crash reporting and issue grouping
- build / version / platform tags
- player-session and backend-service health
- launch-event alert thresholds
- logs / breadcrumbs / device context / purchase-session context where relevant

Return:
- live-ops event checklist
- crash/context fields that must be attached
- which signals belong in backend telemetry vs crash tooling
- route-out to `game-performance-profiler` if the issue becomes frame-time profiling

#### Mode E — Review / gap audit
Use when dashboards, alerts, or tooling exist but confidence is low.

Focus on:
- what incidents would still escape detection
- noisy / non-actionable alerts
- dashboards with no clear question or owner
- missing black-box coverage / metamonitoring
- orphan telemetry that nobody uses

Return:
- keep / fix / delete / add decisions
- top false-positive and false-negative risks
- ownership gaps
- smallest high-value remediation order

### Step 3: Build the observability brief
Return a concise report with this shape:

```markdown
# Observability Brief

## Scope
- System type: ...
- Environment: ...
- Primary mode: ...
- Confidence: high | medium | low

## Current signal state
- What exists already
- What is missing or unreliable

## Primary questions to answer
- 3-5 questions dashboards / alerts must answer

## Signal plan
- Metrics: ...
- Logs: ...
- Traces: ...
- Black-box / health checks: ...

## Alert policy
- Page now: ...
- Ticket / backlog: ...
- Dashboard only: ...

## Ownership and handoffs
- Primary owner: ...
- Route-outs: ...

## First implementation slice
- 1-3 smallest high-value changes
```

### Step 4: Apply symptom-first alert rules
Use these defaults unless the evidence says otherwise.

- Alert on **user-visible symptoms** before internal causes
- Prefer **one clear page** over many stack-layer pages for the same failure
- Include **runbook/dashboard links** in alert context
- Add **slack** for brief blips; avoid paging for self-healing noise
- Metamonitor the monitoring path itself when alert delivery is mission-critical

Good examples:
- sustained API error-rate spike affecting user requests
- stale data beyond the business tolerance window
- launch-event crash rate above threshold by platform/build
- message backlog age causing downstream user-visible delay

Weak examples:
- every 5xx at every layer
- every restart with no impact
- every metric anomaly without action
- alerts nobody can own

### Step 5: Pick the right evidence surface
Do not recommend one surface for every problem.

- **Metrics** for rate, latency, capacity, saturation, freshness age, backlog age
- **Logs** for context and event details once symptoms are detected
- **Traces** for request flow and dependency boundaries
- **Black-box checks** for externally visible health
- **Dashboards** for ongoing review, not as the only alert mechanism
- **Issue/crash tools** for grouped error context, breadcrumbs, and release/build impact

If the system only has logs, say so clearly and mark observability maturity as limited.

### Step 6: Make route-outs explicit
When the job shifts, hand it off.

- **“Find the actual failing line in these logs”** → `log-analysis`
- **“We already know latency is bad; find the bottleneck”** → `performance-optimization`
- **“This looks like a code bug, not a telemetry design issue”** → `debugging`
- **“LLM trace quality / evals / prompt observability”** → `langsmith`
- **“Unity/Unreal frame-time capture interpretation”** → `game-performance-profiler`
- **“Deploy/release plan with post-deploy checks”** → `deployment-automation`

## Examples

### Example 1: New API before launch
**Prompt:**
> We’re launching a new API next week. Tell me what to instrument and what should alert us.

Use **Mode A — Service reliability** plus a small **Mode B** foundation slice.
Return rate/error/latency/saturation questions, minimal tracing fields, black-box checks, and symptom-first alert thresholds.

### Example 2: Marketing dashboard keeps going stale
**Prompt:**
> Our Monday morning growth dashboard is stale half the time. We need observability, not another manual spreadsheet check.

Use **Mode C — Data / pipeline observability**.
Return freshness/schema/volume/lineage checks, ownership by pipeline/job/dashboard layer, and alert thresholds tied to business tolerance windows.

### Example 3: Game launch-event visibility
**Prompt:**
> We need crash alerts and player-session visibility for our Unity event weekend, but this isn’t a profiler question yet.

Use **Mode D — Game / live-ops visibility**.
Return crash/build/platform tags, session-health metrics, launch alert levels, and route-outs to `game-performance-profiler` only if frame-time evidence becomes the bottleneck.

### Example 4: Boundary check
**Prompt:**
> Here are the logs from the outage — what’s the root cause?

Do **not** use this as the main workflow. Route to `log-analysis` and say observability improvements can be proposed after the first actionable failure is identified.

## Best practices
1. Start with the workflow shape, not the vendor choice.
2. Prefer symptom-first alerts with low noise.
3. Distinguish instrumentation gaps from incident diagnosis.
4. Treat data/marketing pipeline observability as first-class, not as an afterthought.
5. For games, separate live-ops visibility from engine profiler interpretation.
6. Make owners and handoffs explicit, especially after incidents.
7. Keep dashboards question-driven; delete dead dashboards and dead alerts.
8. Call out missing metamonitoring when alert delivery itself can fail.

## References
- [Google SRE — Monitoring Distributed Systems](https://sre.google/sre-book/monitoring-distributed-systems/)
- [OpenTelemetry — Observability primer](https://opentelemetry.io/docs/concepts/observability-primer/)
- [Prometheus — Alerting best practices](https://prometheus.io/docs/practices/alerting/)
- [Grafana — What is observability?](https://grafana.com/blog/what-is-observability-best-practices-key-metrics-methodologies-and-more/)
- [Databricks — What is Data Observability?](https://www.databricks.com/blog/what-is-data-observability)
- [Sentry — Game developers](https://sentry.io/solutions/game-developers/)