Pāriet uz saturu
Atpakaļ uz blogu
Backend7 min lasīšanaVexilian2025. gada 1. augusts

Cloud-native monitorings un novērojamība

Monitoringa un novērojamības labākās prakses mākoņa vidē — metrikas, žurnāli, trasēšana un brīdinājumi.

Bez monitoringa jūs uzzināt par problēmu no lietotāja — un parasti tajā brīdī sekas jau ir kritiskas. Ar labu novērojamību — jūs to redzat pirms lietotājs to pamana, saprotat cēloni un novēršat sekunžu laikā.

Trīs novērojamības pīlāri — detalizēti

Metrikas (Metrics)

Cipariski mērījumi laika gaitā — kvantitatīvi dati par sistēmas veselību:

  • Infrastruktūras metrikas — CPU utilizācija, RAM lietojums, disk I/O, network throughput. Pamatā — vai pietiek resursu
  • Aplikācijas metrikas — pieprasījumu skaits/s (RPS), atbildes laiki (p50, p95, p99), kļūdu likme (4xx, 5xx), aktīvo savienojumu skaits
  • Biznesa metrikas — reģistrācijas/min, pasūtījumi/h, maksājumu veiksmīgums %, API key lietojums. Bieži svarīgākas nekā tehniskās
  • Node.js specifiskas — event loop lag, heap used/total, GC pauzēs ilgums, active handles/requests

Prometheus ir de facto standartu metrisku vākšanai: pull-based modelis (scrape regulāri), PromQL vaicājumu valoda, alert rules. Node.js: `prom-client` bibliotēka eksponē /metrics endpointu.

Žurnāli (Logs)

Strukturēti notikumu ieraksti ar kontekstu:

  • Strukturēts formāts — JSON (ne plain text). Katram ierakstam: timestamp, level, message, service, traceId, userId, requestId
  • Līmeņi — ERROR (jāreaģē), WARN (jāpārbauda), INFO (normālas operācijas), DEBUG (tikai izstrādē)
  • Korelācijas ID — katram pieprasījumam unikāls `requestId`, kas saista VISUS šī pieprasījuma žurnālus kopā. Middleware: `req.id = uuid()` un propagēt visos loggera izsaukumos
  • Bibliotēkas — Winston (populārākā Node.js), Pino (ātrākā — 5–10x ātrāka nekā Winston), Bunyan

Centralizēšana — žurnāli no visām instancem vienā vietā:

  • ELK stack — Elasticsearch (glabāšana + meklēšana) + Logstash (apstrāde) + Kibana (vizualizācija). Spēcīgs, bet resursu ietilpīgs
  • Grafana Loki — viegls, efektīvs, integrējas ar Grafana. Neindeksē žurnālu saturu — tikai labels, query laikā meklē. Ievērojami lētāks nekā ELK
  • Betterstack (Logtail) — SaaS, vienkārša integrācija, reāllaika meklēšana
  • DataDog Logs — pilnvērtīga platforma ar automātisku korelāciju starp metrikām, žurnāliem un trasēm

Trasēšana (Distributed Tracing)

Parāda pieprasījuma ceļu cauri visiem servisiem — kur laiks tiek patērēts:

  • Span — viena operācija (datubāzes vaicājums, HTTP izsaukums, cache lasīšana). Katram span: sākuma laiks, ilgums, statuss
  • Trace — sakopots span koks. Piemērs: lietotāja pieprasījums → API gateway → auth service → datubāze → cache → response
  • Bottleneck identifikācija — vizuāli redzams, ka 80% laika patērēts vienā datubāzes vaicājumā. Bez tracing to nevar zināt

OpenTelemetry — industrijas standarts: viena SDK metrikām, žurnāliem un trasēm. Eksportē uz jebkuru backend (Jaeger, Zipkin, DataDog, Grafana Tempo).

Node.js: `@opentelemetry/sdk-node` ar auto-instrumentation — automātiski instrumentē HTTP, Express, pg, Redis bez koda izmaiņām.

Brīdinājumu stratēģija — gudri, ne daudz

Uz simptomiem balstīti brīdinājumi (SLI/SLO)

Brīdiniet par to, ko lietotājs izjūt:

  • Kļūdu likme — 5xx > 1% 5 minūšu logā → kritisks brīdinājums
  • Latency — p95 > 2s 10 minūšu logā → augsta prioritāte
  • Pieejamība — uptime < 99.9% pēdējā stundā → brīdinājums

NE brīdiniet par: CPU > 80% (var būt normāli), vienu neveiksmīgu health check (var būt pārejoša), disk > 70% (informatīvs, ne urgents).

Brīdinājumu noguruma novēršana (Alert Fatigue)

Pārāk daudz brīdinājumu = visi ignorēti. Taktika:

  • Prioritātes — P1 (nekavējoties), P2 (darba laikā), P3 (nākamais sprints), P4 (backlog)
  • Grupēšana — viens incidents, ne 50 brīdinājumi par katru symptōmu atsevišķi
  • Escalation — ja P1 nav atrisināts 15 min → eskalē uz nākamo līmeni
  • Regulārs audits — ik nedēļu pārskatiet brīdinājumus: kurš bija noderīgs, kurš bija troksnis

On-call prakse

PagerDuty, Opsgenie vai grafika formā: dežūras rotācija, runbook (soli-pa-solim ko darīt pie konkrēta brīdinājuma), post-incident review.

Rīki un platformas — izvēles matrica

Open-source stack (self-hosted)

  • Grafana — vizualizācija (dashboards). Atbalsta visus datu avotus
  • Prometheus — metrikas (pull model, PromQL, alerting rules)
  • Loki — žurnāli (labels-based, efektīvs)
  • Tempo — trasēšana (integrējas ar Grafana)
  • Alertmanager — brīdinājumu maršrutēšana un grupēšana
  • Priekšrocība: pilna kontrole, bez cenas. Trūkums: jāuztur infrastruktūra

SaaS platformas

  • DataDog — viss vienā: metrikas, žurnāli, trases, APM, RUM, synthetics. Dārgs, bet pilnvērtīgs
  • New Relic — spēcīgs APM ar automātisku bottleneck identifikāciju. Bezmaksas plāns 100GB/mēn
  • Grafana Cloud — managed Grafana + Prometheus + Loki + Tempo. Bezmaksas plāns 10K metrikas, 50GB žurnāli
  • Sentry — kļūdu izsekošana ar stack trace, breadcrumbs un reproducēšanas informāciju. Specifisks — ne vispārējs monitorings

Vienkāršākie risinājumi

  • Vercel Analytics — iebūvēts Web Vitals. Pietiek vienkāršām Next.js lietojumiem
  • Uptime Robot — pieejamības monitorings no ārpuses. Bezmaksas 50 monitoriem
  • Betterstack — uptime + incidents + logs vienā platformā

SLA, SLO un Error Budgets

Definīcijas

  • SLA (Service Level Agreement) — līgumisks solījums klientiem. Piemērs: 99.9% uptime, < 500ms atbilde
  • SLO (Service Level Objective) — iekšējais mērķis, stingrāks par SLA. Ja SLA = 99.9%, SLO var būt 99.95%
  • SLI (Service Level Indicator) — faktiskā metrika, kas mēra SLO. Error rate, latency p95, availability

Error Budget — inovācijas balansēšana

Ja SLO = 99.9%, tad error budget = 0.1% (≈43 min/mēn). Kamēr error budget nav iztērēts — drīkst veikt riskantākas izvietošanas un eksperimentus. Ja error budget iztērēts — stop deploys, focus uz stabilitāti.

Praktiskie cipari

  • 99% = 7.3h dīkstāves/mēn. Piemērots interāniem un mazāk kritiskiem servisiem
  • 99.9% = 43 min/mēn. Standarts lielākajai daļai SaaS un e-komercijas
  • 99.95% = 22 min/mēn. Augsta pieejamība, prasa redundanci
  • 99.99% = 4.3 min/mēn. Kritiska infrastruktūra, prasa multi-reģionu arhitektūru

Biežāk uzdotie jautājumi

Kas ir novērojamība?

Spēja saprast sistēmas iekšējo stāvokli pēc ārējām izejām. Trīs pīlāri: metrikas (cipariski mērījumi), žurnāli (notikumu ieraksti), trases (pieprasījumu ceļi). Atšķirībā no monitoringa (vai sistēma darbojas?), novērojamība atbild KĀPĒC sistēma nedarbojas.

Vai Vercel Analytics pietiek?

Pamata Next.js mājaslapas monitoringam — jā (Web Vitals, auditorijas dati). Bet sarežģītākām sistēmām ar API, datubāzēm un vairākiem servisiem vajadzīgs Prometheus/Grafana (metrikas), Loki (žurnāli), un Sentry vai DataDog (kļūdu izsekošana).

Kas ir error budget?

Atļautais kļūdu/dīkstāves apjoms periodā. Ja SLO = 99.9% mēnesī, error budget = 0.1% = ~43 min. Kamēr budžets nav iztērēts — drīkst eksperimentēt un veikt biežākas izvietošanas. Ja iztērēts — stop deploys, fokuss uz stabilitāti. Balansē uzticamību ar inovācijas ātrumu.

Kā izvēlēties starp open-source un SaaS monitoringu?

Open-source (Grafana+Prometheus+Loki): pilna kontrole, bez cenas, bet jāuztur pašiem (serveri, atjauninājumi, mērogošana). SaaS (DataDog, New Relic): ātrāk ieviešams, automātisks, bet izmaksas aug ar datu apjomu. Mazas/vidējas komandas: Grafana Cloud bezmaksas plāns + Sentry. Lielas komandas: DataDog vai self-hosted.

Ko monitorēt pirmajā dienā?

Minimālais monitoringa komplekts: 1) Uptime Robot (pieejamība no ārpuses). 2) Sentry (kļūdu izsekošana ar stack traces). 3) Vercel/platform analītika (pamata metrikas). Otrajā nedēļā: Prometheus custom metrikas, strukturēti žurnāli, brīdinājumu pirmie noteikumi.

monitoringobservabilitycloudlogging

Gatavi sakārtot sava uzņēmuma digitālo klātbūtni?

Pieteiciet bezmaksas konsultāciju un kopā atradīsim piemērotāko risinājumu jūsu uzņēmumam.