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říklad latence p95, chybovost).
- SLO (Service Level Objective): cílová hodnota SLI (například p95 latence < 200 ms).
- SLA (Service Level Agreement): smluvní závazek 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í na jádro, run queue, steal time ve virtualizaci, kontextové přepínání.
- Paměť: využití, page cache, swap-in/out, memory pressure, události OOM (Out Of Memory).
- Disk/IO: IOPS, latence čtení/zápisu, hloubka fronty, IO wait, přenosová rychlost.
- Síť: propustnost, chybovost, drops, retransmise, latence, stav socketů.
- Procesy: životní cyklus, nice/priority, cgroups limity a jejich využití.
- Aplikace: doménové metriky (počet požadavků, chybové kódy, vnitřní buffery) a distribuované trasování (distributed tracing).
Základní nástroje příkazové řádky
- top/htop/atop: průběžné sledování procesů, CPU, paměti, IO; atop uchovává 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ěť a 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 online identifikaci hotspotů, perf record/report pro podrobnou analýzu.
- ftrace/trace-cmd: nízkoúrovňové trasování funkcí jádra, měření latencí 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 pomáhají odhalit úzká místa s minimální režijní zátěží.
- Flamegraphy: vizualizace stack trace z perf a eBPF pro rychlou identifikaci největších spotřebičů CPU a zdrojů latence.
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 jako Jaeger nebo 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říkladSYSLOG_IDENTIFIER,_PID). - journalctl: filtrování podle jednotek (
-u), času (--since,--until), priority (-p), sledování výstupu (-f), export do JSON (-o json). - rsyslog/syslog-ng: směrování a 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 obsahující korrelační identifikátory (
trace_id,span_id), což zjednodušuje analýzu a alerting.
Retence, rotace a řízení objemu logů
- journald.conf: limity velikosti (například
SystemMaxUse,RuntimeMaxUse) a rate limiting (RateLimitIntervalSec,RateLimitBurst). - logrotate: pravidelná rotace textových logů s možnostmi compress, delaycompress, copytruncate nebo create; navrhněte retenční politiku podle rizik a nákladů.
- Filtrace a redakce: vyhýbejte se ukládání osobních identifikovatelných údajů a tajných dat; 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; zajistěte 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 (fulltextové vyhledávání, agregace), Loki (indexace podle štítků a časových značek), 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 a čtení.
- Audit: auditd pro sledování přístupu k citlivým zdrojům, mapování na regulatorní požadavky.
- Šifrování: TLS při přenosu, šifrování na disku, bezpečné spravování kryptografických klíčů.
- GDPR: minimalizace osobních údajů, dodržování retenčních lhůt, právo na výmaz a přehledné řízení přístupových oprávnění.
Monitoring kontejnerů a Kubernetes
- Metriky: cgroups v2, cAdvisor, kube-state-metrics, exportéry pro runtime (containerd/CRI-O), korelace s pod/namespace/cluster štítky.
- Logy: sidecar a daemonset agenti (Fluent Bit, Promtail) čtoucí z
/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: například rostoucí latence služeb, zvýšená chybovost nebo snížená propustnost.
- Rozlište oblast problému: CPU vs. paměť vs. IO vs. síť; ověřte PSI a zlaté signály.
- Proveďte lokální testy: použijte iostat pro disk, ss -s pro síť, pidstat pro procesy, perf top pro identifikaci hotspotů.
- Korelujte s logy a trasami: identifikujte chybové kódy, timeouty a trace_id napříč vrstvami.
- Zúžte problém: izolujte pod/VM/hostitel; zvažte vliv cgroups limitů, NUMA topologii a pinning vláken.
- Ověřte hypotézu: proveďte krátkodobé změny QoS, throttling rebuildů, navýšení front nebo cache a sledujte dopad.
Alerting a uzavřené regulační smyčky
- Pravidla: kombinujte prahové hodnoty s detekcí anomálií; používejte hodnoty p95/p99 místo průměrů.
- Hlučnost: deduplikace, grouping, potlačení upozornění během údržby; definujte runbooky a auto-remediation.
- Reakce: automatické škálování, restart degradovaných služeb, přesměrování provozu, úprava QoS.
Kapacitní plánování a predikce
Historické metriky z sar a Promethea spolu s statistickými a strojově učenými modely umožňují předvídat růst zatížení, plánovat upgrade CPU, RAM a disků či optimalizovat náklady. Sledujte sezónnost, vliv releasů a rebuild windows (například 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 zkomplikuje korelaci logů i tras, proto kontrolujte časové odchylky a monitorujte kvalitu NTP zdrojů.
Governance observability: standardy, tagování a katalog
- Konvence pojmenování: jednotné labels (prostředí, region, role, služba, tým).
- Katalog metrik a logů: popis významu, jednotek, odpovědností týmů a retenčních lhůt.
- Testy pozorovatelnosti: syntetické sondy a chaos experimenty pro ověření detekce problémů a alertingu.
Optimalizace výkonu: běžné vzorce a nápravy
- CPU saturace: omezte run queue pinningem kritických vláken, snižte závody o zámky (lock contention), zvažte použití HugePages pro databáze.
- Paměťový tlak: sledujte workingset, upravte swappiness, minimalizujte nechtěný ballooning; analyzujte OOM logy.
- Diskové latence: zkontrolujte IO scheduler, hloubku fronty, oddělte log/redo a data, přidejte NVMe cache.
- Síťové ztráty: nastavte ring buffery, GRO/LRO, ověřte MTU a 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ý rollback v případě chyby.
Doporučené osvědčené postupy
- Definujte SLO vycházející z 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é zachycení 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.



























