ťařina
Obsah Soubory
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í.