Proč je monitorování výkonu a logování v Linuxu klíčové
Monitorování výkonu a logování tvoří páteř provozní spolehlivosti Linuxových systémů. Umožňují včasné odhalení degradací, kapacitní plánování, analýzu incidentů i splnění regulatorních požadavků. V moderních prostředích – od bare-metal serverů přes virtualizaci až po kontejnery a Kubernetes – je cílem nejen sběr dat, ale především jejich korelace a automatizované reakce založené na měřitelných cílech (SLO).
Terminologie a cíle: SLI, SLO, SLA a „zlaté signály“
- SLI (Service Level Indicator): metrický ukazatel kvality (např. latence p95, chybovost).
- SLO (Service Level Objective): cílová hodnota SLI (např. p95 latence < 200 ms).
- SLA (Service Level Agreement): smluvní garance vůči zákazníkovi.
- Zlaté signály: latence, propustnost, chybovost, saturace. Je vhodné je systematicky sledovat na aplikační i systémové úrovni.
Co a proč měřit: metriky systému a aplikací
- CPU: vytížení per-core, run queue, steal time u virtualizace, kontextové přepínání.
- Paměť: využití, page cache, swap-in/out, memory pressure, události OOM.
- Disk/IO: IOPS, latence (čtení/zápis), hloubka fronty, IO wait, přenosová rychlost.
- Síť: propustnost, chybovost, drops, retransmise, latence, sockety ve stavech.
- Procesy: životní cyklus, nice/priority, cgroups limity a využití.
- Aplikace: doménové metriky (počet požadavků, chybové kódy, vnitřní buffery) a trasy (distributed tracing).
Základní nástroje příkazové řádky
- top/htop/atop: průběžné sledování procesů, CPU, paměti, IO; atop udržuje historické záznamy.
- ps, pidstat: detailní pohled na procesy a jejich spotřebu CPU/IO v čase.
- vmstat, free: přehled paměťového subsystému, cache a swapu.
- iostat, mpstat, nfsiostat: IO metriky disků, procesorů, NFS.
- sar (sysstat): historické metriky CPU/IO/sítě pro trendování a zpětnou analýzu.
- ss (náhrada netstat), ip -s, iftop, nload: síťová viditelnost, stav socketů, tokové špičky.
- systemd-cgtop, systemd-cgls: přehled zátěže dle cgroups (užitečné u kontejnerů/Kubernetes).
- Pressure Stall Information (PSI): indikátory tlaku na CPU/paměť/IO v
/proc/pressure/*pro včasnou detekci saturace.
Pokročilé profilování: perf, ftrace a eBPF
- perf: vzorkování na úrovni jádra i uživatelského prostoru, perf top pro on-line hotspoty, perf record/report pro analýzu.
- ftrace/trace-cmd: nízkoúrovňové trasování funkcí jádra, latence plánovače a blokového IO.
- eBPF (bcc/bpftrace): bezpečné sondy v jádře bez psaní modulů; nástroje typu runqlat, biolatency, tcpconnect odhalí úzká hrdla bez výrazné režie.
- Flamegraphy: vizualizace stacků z perf/eBPF pro rychlou identifikaci spotřebičů CPU a latencí.
Observabilita jako systém: metriky, logy a trasy
- Metriky: Prometheus (node_exporter, aplikační exportéry), Performance Co-Pilot (PCP), Telegraf → InfluxDB; vizualizace v Grafaně.
- Logy: systemd-journald, rsyslog/syslog-ng, agregace do ELK/OpenSearch nebo Loki (s Promtail/Vector/Fluent Bit).
- Tracing: OpenTelemetry SDK/Collector s backendy typu Jaeger/Tempo; korelace s metrikami a logy pomocí trace_id.
Logování v Linuxu: journald, syslog a strukturované logy
- systemd-journald: binární úložiště s indexací, rate limiting, volitelná perzistence v
/var/log/journal, podpora strukturovaných polí (např.SYSLOG_IDENTIFIER,_PID). - journalctl: filtrování dle jednotek (
-u), času (--since,--until), priority (-p), následování (-f), export do JSON (-o json). - rsyslog/syslog-ng: směrování/forwarding logů přes TCP/TLS/RELP, filtry, parsování, šablony výstupu a integrace s externími úložišti.
- Strukturované logy: preferujte JSON s korrelačními identifikátory (
trace_id,span_id), což zjednodušuje analýzu a alerting.
Retence, rotace a řízení objemu logů
- journald.conf: limity velikosti (např.
SystemMaxUse,RuntimeMaxUse) a rate limiting (RateLimitIntervalSec,RateLimitBurst). - logrotate: pravidelná rotace textových logů s compress, delaycompress, copytruncate nebo create; naplánujte retenční politiku dle rizik a nákladů.
- Filtrace/redakce: vyhýbejte se ukládání PII a tajemství; používejte maskování (hashování, tokenizaci) a kontrolu obsahu před odesláním do SIEM.
Agregace a centralizace logů
- Forwarding: rsyslog s TLS/RELP do centrálního logserveru; odolnost vůči výpadkům (diskové fronty, backpressure).
- Pipeline: Fluent Bit/Vector/Logstash/Promtail s parsováním, obohacením (hostname, role, prostředí) a směrováním do více backendů.
- Vyhledávání: OpenSearch/Elasticsearch (fulltext, agregace), Loki (indexace štítky a časem), SIEM pro korelaci bezpečnostních událostí.
Bezpečnost a compliance logování
- Integrita: podepisování logů, WORM úložiště, oddělení oprávnění pro zápis/čtení.
- Audit: auditd pro sledování přístupu k citlivým prostředkům, mapování na regulatorní požadavky.
- Šifrování: TLS při přenosu, šifrování na disku, bezpečné hospodaření s klíči.
- GDPR: minimalizace osobních údajů, retenční lhůty, právo na výmaz a přehledné řízení přístupu.
Monitoring kontejnerů a Kubernetes
- Metriky: cgroups v2, cAdvisor, kube-state-metrics, exporter pro runtime (containerd/CRI-O), korelace s pod/namespace/cluster štítky.
- Logy: sidecar/daemonset agenty (Fluent Bit/Promtail) čtoucí ze
/var/log/containersnebo journald; obohacení o labels a pod. - Tracing: OpenTelemetry auto-instrumentace, korelace požadavků napříč mikroslužbami.
Praxe analýzy výkonu: od symptomu ke kořenové příčině
- Definujte symptom: latence služeb roste, chybovost nebo snížená propustnost.
- Rozlište doménu: CPU vs. paměť vs. IO vs. síť; ověřte PSI a zlaté signály.
- Proveďte lokální testy: iostat pro disk, ss -s pro síť, pidstat pro procesy, perf top pro hotspoty.
- Korelujte s logy a trasami: identifikujte chybové kódy, timeouty, trace_id přes vrstvy.
- Zúžte problém: izolujte pod/VM/host; zvažte vliv cgroups limitů, NUMA a pinningu.
- Ověřte hypotézu: krátkodobé změny QoS, throttling rebuildu, navýšení front nebo cache, následně měřte dopad.
Alerting a uzavřené regulační smyčky
- Pravidla: kombinujte prahy s anomální detekcí; používejte p95/p99 místo průměrů.
- Hlučnost: deduplikace, grouping, potlačení v údržbě; definujte runbooky a auto-remediation.
- Reakce: automatické škálování, restart degradovaných jednotek, přepnutí trafficu, úprava QoS.
Kapacitní plánování a predikce
Historické metriky z sar/Promethea a statistické či ML modely umožňují předvídat růst zátěže, plánovat upgrade CPU/RAM/disků a optimalizovat náklady. Sledujte sezónnost, vliv releasů a rebuild windows (např. po výpadku disku).
Timekeeping, synchronizace a přesnost dat
Správné časové značky jsou zásadní. Preferujte chrony pro přesný NTP s disciplinovaným driftem. Nesoulad času komplikuje korelaci logů i tras, proto kontrolujte offsety a monitorujte kvalitu NTP zdrojů.
Governance observability: standardy, tagování a katalog
- Konvence názvů: jednotné labels (env, region, role, service, team).
- Katalog metrik a logů: popis významu, jednotek, odpovědných týmů a retenčních lhůt.
- Testy pozorovatelnosti: syntetické sondy a chaos experimenty pro ověření detekce a alertingu.
Optimalizace výkonu: běžné vzorce a nápravy
- CPU saturace: omezte run queue pinningem kritických vláken, snižte lock contention, zvažte HugePages pro databáze.
- Paměťový tlak: sledujte workingset, upravte swappiness, minimalizujte nechtěné ballooning; analyzujte OOM logy.
- Diskové latence: překontrolujte IO scheduler, queue depth, oddělte log/redo a data, přidejte NVMe cache.
- Síťové ztráty: nastavte ring buffery, GRO/LRO, ověřte MTU/TSO, sledujte retransmise a policery.
Automatizace provozu: IaC pro observabilitu
Konfigurujte agenty a exportéry jako kód (Ansible/Terraform/Helm), validujte pravidla alertingu v CI, verzujte dashboardy. Zajistíte tak reprodukovatelnost, auditovatelnost a rychlý roll-back při chybě.
Doporučené osvědčené postupy
- Definujte SLO odvozená od byznysových cílů a sledujte odpovídající SLI.
- Logujte strukturovaně a přidávejte korrelační identifikátory.
- Monitorujte PSI a p99 latence pro včasný záchyt saturace.
- Centralizujte data a korelujte metriky, logy a trasy na jednom místě.
- Automatizujte reakce pomocí předem schválených runbooků a guard-railů.
- Pravidelně testujte alerting, záložní scénáře a obnovu po incidentech.
Závěr: Od sběru dat k akci
Skutečná hodnota monitorování výkonu a logování v Linuxu spočívá v přeměně dat na rozhodnutí a akce. Kombinace kvalitních metrik, strukturovaných logů, tras a automatizace umožňuje předcházet incidentům, zkracovat MTTR a řídit kapacitu s jistotou. Organizace, které budují observabilitu jako produkt – se standardy, vlastníky a zpětnou vazbou – dosahují vyšší spolehlivosti i efektivity provozu.