markdown
Monitoring.md
markdown
# Monitoring Cílem není mít hezké grafy, ale dozvědět se o problému dřív než od uživatele. Tahle stránka jde od nejjednoduššího k nejsložitějšímu — ber to jako pořadí, ve kterém to zavádět. ## 1. Uptime Kuma Začni tady. Instalace na pět minut, řekne ti, když něco spadne, a víc na začátku nepotřebuješ. ```yamlservices: uptime-kuma: image: louislam/uptime-kuma:1 restart: unless-stopped volumes: - kuma:/app/data ports: - "127.0.0.1:3001:3001"volumes: kuma:``` Umí sledovat HTTP, TCP porty, ping, DNS, platnost certifikátů a docker kontejnery. Upozornění posílá do Telegramu, na e-mail, do Discordu a dalších padesáti míst. **Nejdůležitější věc: nesleduj sám sebe.** Uptime Kuma běžící na stejném stroji jako sledované služby ti neřekne nic ve chvíli, kdy spadne stroj. Dej ho jinam — na Raspberry Pi, na VPS za dvě eura, kamkoliv mimo. Co nastavit hned: - dostupnost každé veřejné služby- platnost TLS certifikátů (upozornění 14 dní předem)- ping na bránu a na 8.8.8.8, ať poznáš výpadek linky- kontrola zvenku, ne zevnitř ## 2. Netdata Když chceš vidět, **proč** je něco pomalé. Jeden kontejner, nulová konfigurace, okamžitě máš stovky metrik s vteřinovým rozlišením. ```yamlservices: netdata: image: netdata/netdata hostname: server cap_add: [SYS_PTRACE] security_opt: [apparmor:unconfined] volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /var/run/docker.sock:/var/run/docker.sock:ro ports: - "127.0.0.1:19999:19999"``` Skvělé na akutní ladění („teď je to pomalé, co se děje"), horší na dlouhodobé trendy, protože data ve výchozím nastavení dlouho nedrží. Pozor na Docker socket, viz poznámka v [Traefiku](Traefik). ## 3. Prometheus a Grafana Až když ti předchozí nestačí. Je to výrazně víc práce a dává smysl u víc strojů nebo když chceš historii v řádu měsíců. ```yamlservices: prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro - prom_data:/prometheus ports: - "127.0.0.1:9090:9090" grafana: image: grafana/grafana volumes: - grafana_data:/var/lib/grafana ports: - "127.0.0.1:3000:3000" node-exporter: image: prom/node-exporter pid: host volumes: - /:/host:ro,rslave command: ['--path.rootfs=/host']``` `prometheus.yml`: ```yamlglobal: scrape_interval: 30s scrape_configs: - job_name: node static_configs: - targets: ['node-exporter:9100'] - job_name: traefik static_configs: - targets: ['traefik:8082']``` Do Grafany naimportuj hotový dashboard číslo 1860 (Node Exporter Full) — nemá cenu si to kreslit ručně. ## Co skutečně sledovat Většina lidí sleduje vytížení procesoru, což je nejméně užitečná metrika z celé sady. Tohle je užitečnější: | Metrika | Proč | Prahová hodnota ||---|---|---|| Volné místo na disku | nejčastější příčina pádu služby | upozornit na 80 % || Zaplnění inodů | disk má místo, ale soubory nejdou vytvořit | 80 % || Volná paměť a swap | swapování zabíjí výkon | swap nad nulou = pozor || Load average | vytížení včetně čekání na IO | nad počet jader || Teplota | u domácího hardwaru reálný problém | podle výrobce || SMART stavy disků | předchází ztrátě dat | jakákoliv změna || Platnost certifikátů | tichá časovaná bomba | 14 dní || Dostupnost zvenku | to jediné, co uživatele zajímá | okamžitě | Ta zaplněnost inodů je záludná — `df -h` ukáže volné místo a přesto nejde nic zapsat. Zkontroluj `df -i`. Typicky u strojů s milionem malých souborů. ## Logy Když máš víc strojů, hodí se logy sbírat na jedno místo. **Loki** s **Promtail** je nejjednodušší cesta, protože se integruje do Grafany. Pro jeden stroj to nepotřebuješ — `journalctl` stačí: ```bashjournalctl -u sluzba -fjournalctl --since "1 hour ago" -p errjournalctl --disk-usagejournalctl --vacuum-time=30d``` Ten poslední příkaz stojí za pozornost. Journal umí vyrůst do desítek gigabajtů a pak se divíš, kde je místo. ## Upozornění, která nefungují **Příliš mnoho.** Když chodí deset upozornění denně, přestaneš je číst. Pak přijde to důležité a taky ho nepřečteš. **Bez prahové hodnoty pro trvání.** Krátký výpadek při restartu služby není incident. Nastav si, že se hlásí až po dvou nebo třech neúspěšných kontrolách. **Jen e-mailem.** Když ti spadne server, na kterém běží pošta, upozornění nedorazí. Použij něco nezávislého — Telegram, Pushover, SMS. **Ze stejného stroje.** Zopakuji to, protože je to nejčastější chyba: monitoring musí běžet jinde než to, co sleduje. ## Minimální rozumná sestava Když nechceš stavět observabilitu, ale chceš spát: 1. Uptime Kuma na jiném stroji nebo na levném VPS2. Kontroly na všechny veřejné služby, na certifikáty a na ping brány3. Upozornění do Telegramu4. Netdata na hlavním stroji pro případ, že něco ladíš5. Hlídač volného místa To je odpoledne práce a pokryje devadesát procent situací, kdy se něco pokazí.