Monitoring Linuxu

Monitoring Linuxu

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/containers nebo 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ě

  1. Definujte symptom: latence služeb roste, chybovost nebo snížená propustnost.
  2. Rozlište doménu: CPU vs. paměť vs. IO vs. síť; ověřte PSI a zlaté signály.
  3. Proveďte lokální testy: iostat pro disk, ss -s pro síť, pidstat pro procesy, perf top pro hotspoty.
  4. Korelujte s logy a trasami: identifikujte chybové kódy, timeouty, trace_id přes vrstvy.
  5. Zúžte problém: izolujte pod/VM/host; zvažte vliv cgroups limitů, NUMA a pinningu.
  6. 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

  1. Definujte SLO odvozená od byznysových cílů a sledujte odpovídající SLI.
  2. Logujte strukturovaně a přidávejte korrelační identifikátory.
  3. Monitorujte PSI a p99 latence pro včasný záchyt saturace.
  4. Centralizujte data a korelujte metriky, logy a trasy na jednom místě.
  5. Automatizujte reakce pomocí předem schválených runbooků a guard-railů.
  6. 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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *