_CORE

Produkční systém bez observability je jako řídit auto v noci bez světel — jedete, ale nevidíte kam. V roce 2026 už nestačí grep po logách a pár Grafana dashboardů. Distribuované systémy, mikroslužby a event-driven architektury vyžadují telemetrii, která propojuje logy, metriky a traces do jednoho koherentního obrazu. Tady je, jak na to.

Proč logy nestačí — tři pilíře observability

Většina týmů začíná s logy. A na monolitu s jedním serverem to funguje. Problém nastane, když máte 40 mikroslužeb, request prochází šesti z nich a vy nevíte, kde se ztratily dvě sekundy latence. Logy vám řeknou, co se stalo v jednom procesu. Neřeknou vám, proč je celý systém pomalý.

Proto se observability v posledních letech ustálila na třech pilířích — a žádný z nich sám o sobě nestačí.

Logy

Diskrétní události s kontextem. Říkají co se stalo. Strukturované logy (JSON) s correlation ID jsou základ — plain text logy v produkci v roce 2026 nejsou akceptovatelné.

Metriky

Numerické time-series. Říkají kolik a jak rychle. Request rate, error rate, latence (RED), saturace zdrojů. Agregované, levné na storage, ideální pro alerting.

Traces

Cesta requestu přes celý systém. Říkají kde a proč. Distributed tracing ukáže, která služba zdržuje, kde selhává retry a jak se šíří latence.

Klíčové je propojení. Když vidíte spike v error rate (metrika), chcete se prokliknout na konkrétní traces, které selhaly, a z trace se dostat na logy jednotlivých spanů. Bez tohoto propojení máte tři oddělené nástroje místo jednoho observability systému.

Architektura observability stacku — tok telemetrie
Zdroj
Aplikace OTel SDK
Infrastruktura node exporter
Service mesh auto-instrumentation
Collector
OTel Collector receive → process → export
Procesory batch, filter, transform, tail sampling
Storage
Prometheus / Mimir metriky
Loki logy
Tempo traces
Vizualizace
Grafana dashboardy, explore, alerting
Alertmanager routing, silencing, grouping

OpenTelemetry jako standard — proč a jak

Před OpenTelemetry (OTel) jste měli vendor-specific agenty: Datadog agent, New Relic agent, Jaeger client, Prometheus client library — každý s vlastním formátem, vlastním SDK a vlastním lock-inem. Přechod na jiný backend znamenal přepsat instrumentaci celé aplikace.

OTel tohle řeší. Je to vendor-neutral standard pro generování, sběr a export telemetrie. V roce 2026 je OTel de facto standard — traces a metriky jsou stabilní, logy dosáhly GA stability. Hlavní benefity:

  • Jeden SDK pro všechny tři signály. Instrumentujete aplikaci jednou, exportujete kamkoliv — Prometheus, Jaeger, Datadog, Grafana Cloud.
  • Auto-instrumentace. Pro Go, Java, Python, .NET a Node.js existují agenti, kteří automaticky instrumentují HTTP, gRPC, databázové klienty a messaging frameworky bez změny kódu.
  • OTel Collector jako centrální bod. Jeden proces přijímá telemetrii z celého clusteru, zpracovává ji (filtrování, sampling, enrichment) a routuje do backendů. Chcete přidat nový backend? Přidáte exporter do config — žádná změna v aplikacích.
  • Žádný vendor lock-in. Dnes používáte Prometheus + Loki + Tempo. Za rok chcete migrovat na Datadog? Změníte exportery v Collectoru. Aplikace se nedotkne.

Konfigurace OTel Collectoru

Typická pipeline v produkci vypadá takto. Collector přijímá OTLP data, zpracovává je v dávkách, obohacuje o Kubernetes metadata a exportuje do tří backendů:

# otel-collector-config.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: "0.0.0.0:4317"
      http:
        endpoint: "0.0.0.0:4318"

processors:
  batch:
    timeout: 5s
    send_batch_size: 1024
  k8sattributes:
    extract:
      metadata:
        - k8s.namespace.name
        - k8s.deployment.name
        - k8s.pod.name
  tail_sampling:
    policies:
      - name: errors-always
        type: status_code
        status_code: { status_codes: [ERROR] }
      - name: slow-requests
        type: latency
        latency: { threshold_ms: 2000 }
      - name: probabilistic
        type: probabilistic
        probabilistic: { sampling_percentage: 10 }

exporters:
  prometheusremotewrite:
    endpoint: "http://mimir:9009/api/v1/push"
  loki:
    endpoint: "http://loki:3100/loki/api/v1/push"
  otlp/tempo:
    endpoint: "tempo:4317"
    tls:
      insecure: true

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch, k8sattributes]
      exporters: [prometheusremotewrite]
    logs:
      receivers: [otlp]
      processors: [batch, k8sattributes]
      exporters: [loki]
    traces:
      receivers: [otlp]
      processors: [batch, k8sattributes, tail_sampling]
      exporters: [otlp/tempo]

Důležitý detail: tail sampling. V produkci nemůžete ukládat 100 % traces — je to drahé a zbytečné. Tail sampling vám zajistí, že chyby a pomalé requesty ukládáte vždy, a z normálního provozu berete jen vzorek. Na rozdíl od head samplingu (rozhodnutí na začátku trace) vidíte celý průběh requestu před rozhodnutím.

Praktický stack: Grafana + Prometheus + Loki + Tempo

Proč právě tenhle stack? Protože je open-source, battle-tested a škálovatelný. A hlavně — všechny komponenty jsou navrženy tak, aby spolupracovaly.

  • Prometheus / Mimir — metriky. Prometheus pro menší nasazení, Grafana Mimir pro long-term storage a multi-tenancy. PromQL je lingua franca metrik — umí ho každý SRE, každý exporter a každý dashboard.
  • Loki — logy. Neindexuje obsah logů (na rozdíl od Elasticsearch), indexuje jen labely. To znamená výrazně nižší náklady na storage a operační jednoduchost. LogQL syntaxe je blízká PromQL, takže přechod je bezbolestný.
  • Tempo — traces. Column-oriented backend optimalizovaný na trace storage. Podporuje přímou integraci s Loki a Prometheus — z trace se prokliknete na logy, z metrik na traces. Právě tohle propojení dělá z jednotlivých nástrojů systém.
  • Grafana — vizualizace a korelace. Jedno UI pro všechny tři signály. Explore mode pro ad-hoc debugging, dashboardy pro přehled, Alerting pro notifikace. Grafana v roce 2026 umí korelovat metriky → traces → logy v jednom flow.

Alternativy existují — Elastic Stack (ELK), Datadog, New Relic, Splunk. Volba závisí na kontextu. Pro týmy, které chtějí kontrolu nad daty, žádné per-host poplatky a možnost self-hosted i managed deploymentu, je Grafana stack hard to beat.

Alerting, který funguje — ne ten, co budí celý tým

Špatný alerting je horší než žádný. Když tým dostává 50 alertů denně a 48 z nich je šum, naučí se alerty ignorovat. A když přijde ten skutečný, nikdo nezareaguje. Tenhle fenomén — alert fatigue — je reálný problém, který zabíjí incident response.

Tři pravidla dobrého alertu

  • Actionable. Každý alert musí mít jasnou akci. Pokud nevíte, co s alertem dělat, nemá existovat. „CPU je na 80 %" není actionable alert — co s tím? „Error rate payment-service překročil 5 % za posledních 5 minut" je actionable, protože víte, že zákazníci nemůžou platit.
  • Runbook. Každý alert má odkaz na runbook. Dokument, který říká: co alert znamená, jaký je dopad, jak diagnostikovat příčinu a jak eskalovat. On-call inženýr ve 3 ráno nemá přemýšlet — má následovat postup.
  • SLO-based. Alert se spouští, když se blížíte k porušení SLO — ne když překročíte libovolný threshold. Více o tom za chvíli.

Praktické tipy: používejte grouping (seskupit související alerty do jedné notifikace), inhibition (pokud je celý cluster down, nepotřebujete 200 alertů za každý pod), a silencing pro plánovanou údržbu. Alertmanager tohle všechno umí out of the box.

SLO/SLI driven přístup — měříte to, na čem záleží

SLI (Service Level Indicator) je metrika, která měří kvalitu služby z pohledu uživatele. SLO (Service Level Objective) je cílová hodnota SLI. Zní to jednoduše — v praxi je to paradigmatický posun v tom, jak přemýšlíte o monitoringu.

Místo stovek alertů na infrastrukturní metriky máte hrstku SLO, které říkají, jestli uživatelé mají dobrou zkušenost. Příklady:

  • Dostupnost: 99,9 % requestů na /api/checkout vrací 2xx za posledních 30 dní.
  • Latence: 95 % requestů na /api/search má odpověď pod 200 ms.
  • Správnost: 99,99 % platebních transakcí je zpracováno korektně.

Klíčový koncept je error budget. Pokud máte SLO na 99,9 % dostupnost, máte za měsíc budget 0,1 % — tedy cca 43 minut výpadku. Dokud máte budget, můžete deployovat, experimentovat, dělat risky changes. Když budget dochází, zpomalíte a soustředíte se na stabilitu.

Error budget burn rate alerting je daleko efektivnější než statické thresholy. Alert se spustí, když pálíte budget rychleji, než je udržitelné — tedy ne „error rate je 1 %", ale „při současné rychlosti chyb vyčerpáte měsíční budget za 6 hodin." To je alert, na který reagujete.

Grafana má nativní podporu SLO — definujete SLI query, cílovou hodnotu a periodu, a Grafana vám automaticky generuje dashboardy a alerting pravidla pro burn rate. Prometheus recording rules počítají error budget v reálném čase.

Jak to stavíme v CORE SYSTEMS

V CORE SYSTEMS považujeme observability za základní infrastrukturní vrstvu, ne za nice-to-have. Každý systém, který dodáváme do produkce — ať je to informační systém, datová platforma nebo AI agent — má observability stack jako součást delivery.

Náš přístup je pragmatický a stavíme na ověřených principech:

  • Observability od dne nula. Instrumentaci řešíme od začátku projektu, ne jako afterthought po prvním production incidentu. OTel SDK je součástí application template, OTel Collector běží v každém clusteru.
  • SLO-first alerting. Než napíšeme první alert rule, definujeme SLO s business ownerem. Co je přijatelná latence? Jaká dostupnost? Alerty pak vychází z error budget burn rate — ne z arbitrárních thresholdů.
  • Runbook ke každému alertu. Alert bez runbooku je jen šum. Naše alerty mají vždy link na diagnostický postup, eskalační matici a kontakt na responsible tým.
  • Dashboardy jako kód. Grafana dashboardy verzujeme v Gitu, deployujeme přes CI/CD, používáme Jsonnet/Grafonnet pro templating. Žádné ruční klikání v UI, žádné „kdo změnil ten dashboard."
  • Cost-aware telemetrie. High-cardinality metriky a full-fidelity traces jsou drahé. Pomáháme klientům najít správný poměr mezi viditelností a náklady — tail sampling, metric relabeling, log level management.

Pracujeme s klienty v bankovnictví, logistice a retailu — tedy v odvětvích, kde výpadek stojí reálné peníze a regulátor vyžaduje audit trail. Observability tam není luxus. Je to provozní nutnost.

Závěr: Observability je investice, ne náklad

Kvalitní observability stack se vám vrátí při prvním production incidentu. Místo hodin slepého hledání v logách — minuty cíleného debuggingu. Místo alert fatigue — actionable notifikace. Místo „myslím, že to funguje" — SLO dashboard, který objektivně říká, jak na tom jste.

Technologie jsou dostupné a open-source. OpenTelemetry sjednotil instrumentaci. Grafana stack poskytuje kompletní řešení bez vendor lock-inu. Co zbývá, je rozhodnutí to udělat správně — instrumentovat od začátku, definovat SLO, nastavit alerting, který dává smysl, a hlavně propojit všechny tři pilíře do jednoho systému. Protože observability není o nástrojích. Je o tom, vidět dovnitř svého systému a rozhodovat se na základě dat.

CORE SYSTEMS — Cloud & Platform tým

Navrhujeme a provozujeme cloudovou infrastrukturu, Kubernetes platformy a observability stacky pro enterprise klienty. Od auditu přes implementaci až po 24/7 provoz.

Další články
Další krok

Chcete vidět dovnitř svých systémů?

Začněme observability auditem. Zmapujeme váš aktuální monitoring, identifikujeme slepá místa a navrhneme stack, který vám dá skutečný přehled o tom, co se v produkci děje.

Domluvme si audit