OPERATION BLACKOUT

Boiler Room Vecka 9 — Monitoring & Observability | Tisdag 17 mars

En produktionsmiljö här problem. Ni här Grafana, Prometheus och ett helt Kubernetes-kluster framför er. Er uppgift: förstå vad som händer, hitta felen, och dokumentera era fynd. Allt sker i webbläsaren — inget kubectl, inget terminalkrångel.

Noder
10
GKE-kluster
Pods
103
över 20 namespaces
Microservices
5
med dolda buggar
Aktiva alerts
6
något är fel...

Schema

08:00 Intro + Grafana walkthrough (20 min)
08:20 Uppvärmning — alla team (25 min)
08:45 Välj mission + jobba i team (2h)
10:45 Paus (15 min)
11:00 Team-presentationer (5 min/team) + diskussion (1h)

Era verktyg

🖥

Cluster Overview

Noder, CPU, minne, pods per namespace

🔍

Namespace Explorer

Välj namespace, se pods, CPU, throttling

🚨

BLACKOUT Dashboard

SLO:er, error rate, latency, minne

Tips: Grafana här också en Explore-flik där ni kan skriva egna PromQL-queries.

Uppvärmning (alla team, 30 min)

Innan ni väljer mission — utforska Grafana och svara på dessa frågor som team:


Välj er mission

Varje team väljer en mission. Flera team kan valja samma. Ni här 2 timmar.

🚨

Mission A: Incident Investigator

Hitta alla fel, förstå varfor, föreslå fix

Hands-on

Produktionsmiljön här minst 5 problem. Hitta sa många ni kan, dokumentera varje med: vad är fel, hur hittade ni det, hur allvarligt är det, och hur skulle ni fixa det.

1

Hitta felen i BLACKOUT-dashboarden

Öppna BLACKOUT Dashboard. Vilka paneler ser röda/gula ut? Vilka alerts fyrar?

Börja med dessa PromQL-queries i Explore:

rate(http_requests_total{status="500"}[5m])
histogram_quantile(0.99, sum(rate(request_duration_seconds_bucket[5m])) by (le, job))
process_resident_memory_bytes
2

Undersök klusterproblem

Gå till Namespace Explorer, välj observe-lab.

  • Finns det pods som restartär ofta? Varfor?
  • Någon container som är CPU-throttlad?
  • Någon tjänst som använder onormalt mycket minne?
increase(kube_pod_container_status_restarts_total{namespace="observe-lab"}[1h])
rate(container_cpu_cfs_throttled_seconds_total{namespace="observe-lab"}[5m])
3

Skriv mini-postmortem

För varje fel ni hittar, dokumentera:

  • Vad: Vilken tjänst, vad är symtomet?
  • Nar: När började det? (titta på graferna)
  • Påverkan: Hur påverkär det användare?
  • Root cause: Er teori om varfor
  • Fix: Vad skulle ni göra för att lösa det?
4

Förbered presentation

Ta screenshots fran Grafana. Förbered en 5-min presentation där ni visär era fynd. Fokusera på de 2-3 mest intressanta problemen.

Leverabel: Mini-postmortem med screenshots. Presentera 2-3 incidenter med root cause och föreslagen fix.
📊

Mission B: SLO Architect

Definiera hur "friskt" ska se ut

SRE Theory

Er uppgift: definiera SLIs, SLOs och error budgets för systemet. Använd verklig data fran Prometheus för att avgöra vad rimliga mål ar.

1

Identifiera SLIs (vad ska mätas?)

Utforska BLACKOUT Dashboard. Föreslå SLIs för varje tjänst. Exempel:

  • Availability: Andel lyckade requests (ej 500)
  • Latency: p99 svarstid under X sekunder
  • Throughput: Requests per sekund

Använd Explore för att mota den nuvarande nivan:

sum(rate(http_requests_total{status="200"}[5m])) by (job) / sum(rate(http_requests_total[5m])) by (job)
histogram_quantile(0.99, sum(rate(request_duration_seconds_bucket[5m])) by (le, job))
2

Sätt SLOs (vad är målet?)

Baserat på vad ni ser i datan — sätt realistiska mal. Exempel:

  • order-service: 99.5% availability, p99 < 500ms
  • gateway: 99.9% availability, p99 < 1s

Vilka tjänster uppfyller sina SLOs just nu? Vilka gör det inte?

3

Beräkna error budgets

Om ert SLO är 99.9% — hur mycket "fel" fär ni per månad?

  • 99.9% = 43 minuter downtime/månad
  • 99.5% = 3.6 timmär downtime/månad
  • 99% = 7.3 timmär downtime/månad

Beräkna: med nuvarande error rate, hur snabbt bränner ni igenom er budget?

1 - (sum(rate(http_requests_total{status="500"}[5m])) / sum(rate(http_requests_total[5m])))
4

Skriv ett SLO-forslag

Skapå ett dokument med era SLO-definitioner. För varje tjänst:

  • SLI (vad ni mäter)
  • SLO (målet)
  • Error budget (marginalen)
  • Vad händer om budgeten är slut? (frys features? fokusera på stabilitet?)
Leverabel: SLO-dokument med SLI/SLO/error budget för 3+ tjänster. Inkludera PromQL-queries och screenshots som stödjer era val.
🌍

Mission C: Cluster Analyst

Kartlägg hela klustret, hitta dolda anomalier

Big Picture

Ni här tillgång till hela GKE-klustret — 10 noder, 20+ namespaces, 100+ pods. Er uppgift: skapå en helhetsbild och hitta anomalier.

1

Kartlägg klustret

Öppna Cluster Overview. Svara pa:

  • Hur är CPU fördelad över noderna? Är någon överbelastad?
  • Vilka namespaces använder mest resurser?
  • Hur många container-restarts här det skett den senaste timmen?
sum by (namespace) (rate(container_cpu_usage_seconds_total{image!="", container!="POD"}[5m]))
topk(10, sum by (namespace) (container_memory_working_set_bytes{image!="", container!="POD"}))
2

Utforska namespaces

Gå till Namespace Explorer. Använd dropdown-menyn för att byta namespace.

  • Kolla ert eget teams namespace — hur ser det ut?
  • Jämför med observe-lab — vad skiljer?
  • Kolla kube-system — vad kör dar?
  • Hitta ni något ovanligt i någon annans namespace?
3

Hitta anomalier

Använd Explore för att gräva djupare:

topk(10, increase(kube_pod_container_status_restarts_total[1h]))
rate(container_cpu_cfs_throttled_seconds_total{container!=""}[5m]) > 0
kube_pod_status_phase{phase!="Running", phase!="Succeeded"}

Är det några pods som inte kor? Några containers som throttlas? Någon nod som är nära sin kapacitet?

4

Skriv en cluster health report

Sammanställ era fynd i en rapport:

  • Klustrets overall hälsa (bra/medel/daligt)
  • Resursanvändning per namespace (ranking)
  • Anomalier ni hittade
  • Rekommendationer (right-sizing, cleanup, skalning)
Leverabel: Cluster health report med resursanalys, namespace-jämförelser, och anomalier. Inkludera screenshots och PromQL-queries.

PromQL Snabbreferens

Använd dessa i Grafana's Explore-flik (kompassikonen i vänstermenyn).

Grundläggande

up

Visär vilka targets som är uppe (1) eller nere (0)

rate(http_requests_total[5m])

Requests per sekund, medelvärde över 5 minuter

process_resident_memory_bytes

Minnesanvändning per process i bytes

Error rate & SLOs

rate(http_requests_total{status=\"500\"}[5m]) / rate(http_requests_total[5m])

Error rate per tjänst (0.10 = 10%)

histogram_quantile(0.99, sum(rate(request_duration_seconds_bucket[5m])) by (le, job))

p99 latency per tjänst

Kubernetes

count by (namespace) (kube_pod_status_phase{phase="Running"})

Antal körande pods per namespace

topk(5, increase(kube_pod_container_status_restarts_total[1h]))

Top 5 pods med flest restarts senaste timmen

sum by (namespace) (container_memory_working_set_bytes{image!="", container!="POD"})

Total minnesanvändning per namespace


Presentationer (11:00)

5 minuter per team. Visa Grafana på storskärm och beskriv:

Tips för presentationen: Ni behöver inte slides. Dela er skärm med Grafana öppet och navigera genom era fynd live. Det är mer övertygande än en PowerPoint.


Varför är det här viktigt?

Boiler room-sessionerna bedöms som helhet i slutet av vecka 11 — inte individuellt. Men det ni gör idag bygger direkt på era kunskaper inför grupprojektet och slutrapporten.

Spara era screenshots, queries och dokument — ni kommer använda dem i grupprojektet och rapporten.