Sledování systému

<ubu> Ubuntu vám umožňuje pohodlně sledovat nejrůznější systémové statistiky, včetně využití procesoru, paměti, síťových prostředků, spuštěných procesů, a podobně. Sledování je možné jak z grafického prostředí, tak z terminálu. O většině událostí se zaznamenávají podrobné protokoly.

Sledování systémových prostředků

Z nabídky Dash → Sledování systému spusťte nástroj pro sledování systému.

V nástroji máte celkem tři záložky, první zobrazuje spuštěné procesy, druhá využití systémových zdrojů a poslední připojené souborové systémy.

Procesy

V záložce Procesy jsou zobrazené vaše aktuální procesy (programy). Přes nabídku Zobrazit se dají nastavit pro zobrazování i procesy ostatních uživatelů, případně pouze okamžitě běžící procesy. U každého procesu můžete kliknutím pravým tlačítkem myši vyvolat kontextovou nabídku:

  • Zastavit a Pokračovat proces - umožní zastavit daný proces, který jakoby „zamrzne“. Takto můžete pozastavit proces, který sám o sobě pozastavení neumožňuje, a poté jej znovu rozběhnout. Pozor ovšem, ať si nepozastavíte nějaký důležitý proces nutný pro práci prostředí.
  • Ukončit proces - ukončí daný program, jako byste ho zavřeli křížkem na jeho horní liště
  • Zabít proces - okamžitě zabije daný proces, a nedá mu možnost nijak se korektně ukončit. Toto lze použít pro „zamrzlé“ procesy, které nereagují na výzvy o ukončení.
  • Změnit prioritu - umožní vám změnit prioritu procesu. Proces s vyšší prioritou má přednost ve využití procesoru a může předbíhat procesy s prioritou nižší. Naopak snížení priority se může hodit, pokud máte puštěný proces masivně využívající procesor, na který nespěcháte (např. něco počítá), ale příliš se vám zpomalily ostatní programy a špatně se s nimi pracuje. Pouze správce systému může zvyšovat prioritu procesů.

Nastavení priority se může na první pohled zdát mírně nelogické. Priorita může „nabývat“ hodnot od -20 do 20, přičemž -20 znamená nejvyšší prioritu a 20 nejnižší.

  • Otevřené soubory - zobrazí seznam souborů, které daný proces aktuálně používá

Zdroje

V záložce Zdroje můžete vidět aktuální vytížení procesoru, využití paměti včetně dokládacího prostoru (swap) a aktuální rychlost přijímání a odesílání dat do sítě (pravděpodobně Internetu). Taktéž je zde zobrazena celková částka přijatých a odeslaných dat do sítě od spuštění počítače.

Pokud byste potřebovali měřit přenesená data v síti dlouhodoběji, navštivte článek Monitorování datových přenosů.

Souborové systémy

V záložce Souborové systémy vidíte připojené souborové systémy (disky, CD, flash disky atd.), včetně statistiky o jejich využití, typu souborového systému, přípojného adresáře apod.

Pro sledování systému můžete využít také Terminál.

  • Pro sledování procesoru, procesů a paměti můžete využít příkaz ps a top.
  • Pro zabití procesu můžete využít příkazy kill, pkill a killall.
  • Pro sledování paměti můžete využít příkaz free.
  • Pro sledování souborových systémů můžete využít příkaz df.
  • Jako velice příjemnou náhradu příkazu top můžete využít nástroj htop. Stačí si nainstalovat balík htop. htop umožňuje posunování textu, barevné odlišení, jednoduché řazení sloupců, změnu priority a jednoduché zabití vybraného procesu.

Zobrazení systémových protokolů

Velké množství událostí je zaznamenávána do systémových protokolů. Zde si můžete zobrazit, co se v určité době dělo se systémem, případně podle nich zjišťovat příčiny případných potíží.

Z nabídky Dash → Systémový protokol spusťte nástroj pro prohlížení systémových protokolů.

V levé části můžete vybírat jednotlivé protokoly a také vybírat záznamy podle dní, kdy byly zaznamenány. V pravé části vidíte jejich obsah těchto protokolů. Můžete tak lehce zjistit, kdy kdo použil jaký sudo příkaz, nebo jaké chyby vám hlásí při startu váš grafický server.

Všechny protokoly jsou uloženy jako obyčejné textové soubory v adresáři /var/log. Můžete si je tam tedy i za použití Terminálu lehce prohlédnout, případně prohledat.

Syslog

Předchozí část článku se věnovala tomu, jak logy zobrazit. Teď se podíváme na to jak logy vznikají a dají se nastavovat.

Unixový a linuxový de facto standard pro sjednocené logování je syslog. Co znamená sjednocené? Jednoduše to, že ve „špatném“ světě si každá aplikace loguje podle svého a kam chce. Programátoři si musí napsat vlastní logovací kód, administrátoři musí znát a umět nastavit kam a jak aplikace bude logy ukládat. Stále můžete mít aplikaci, které si logují po svém nebo jsou prostě z nějakého důvodu takto zkonfigurovány.

Syslog, vzniklý v 80. letech jako součást balíku sendmail, je jistou odpovědí na tuto schizofrenii. Nabízí programátorům rozhraní k logování, syslog zprávy od aplikací přejímá a podle svého nastavení s nimi něco dělá. Většinou uloží do textové souboru, ale může poslat i na centrální logovací server nebo ukládat i do databáze.

Syslog je de facto standardem, protože byť existuje norma RFC 3164 vycházející z původního BSD syslogu, tak víceméně co distribuce, to mírně jinačí syslog.

A pokud mluvíme o syslogu, pak tím v Ubuntu a Debianu myslíme konkrétně rsyslog - jednoho z řady modernějších a schopnějších nástupců.

Formát syslogu je velmi jednoduchý. On celý syslog byl navržen jako jednoduchý logovací prostředek. V podstatě se zprávy syslogu skládají z:

  • druhu zprávy (facility) - v podstatě od koho zpráva pochází (zprávy kernelu, mail systému, autorizační zprávy, zprávy tiskárny apod.)
  • závažnosti (severity) - od nejvyšší jsou to postupně: 0 (emenergency nebo emerg), 1 (alert), 2 (crit), 3 (err), 4 (warning), 5 (notice), 6 (info), a nejméně důležitá 7 (debug).
  • časové razítko (timestamp) - tedy čas vzniku zprávy
  • jméno nebo IP adresa zdrojového počítače - ze kterého zprávy pochází
  • vlastní zpráva - je zcela na aplikaci co „zaloguje“. Zprávy jsou určené pro člověka, nikoli pro snadné strojové zpracování. Ale vzhledem k množství aplikací a zpráv může být i tak velmi obtížné správně vyrozumět co se vlastně dělo.

Příklad syslogového souboru (zde auth logující bezpečnostní zprávy):

Mar  2 07:31:35 wkd-test02 gnome-screensaver-dialog: gkr-pam: unlocked login keyring
Mar  2 07:56:11 wkd-test02 unix_chkpwd[3686]: password check failed for user (franta)
Mar  2 07:56:11 wkd-test02 gnome-screensaver-dialog: pam_unix(gnome-screensaver:auth): authentication failure; logname= uid=1000 euid=1000 tty=:0.0 ruser= rhost=  user=franta
Mar  2 07:56:15 wkd-test02 gnome-screensaver-dialog: gkr-pam: unlocked login keyring
Mar  2 08:14:45 wkd-test02 gnome-screensaver-dialog: gkr-pam: unlocked login keyring
Mar  2 08:17:01 wkd-test02 CRON[3811]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar  2 08:17:01 wkd-test02 CRON[3811]: pam_unix(cron:session): session closed for user root
Mar  2 08:28:53 wkd-test02 gnome-screensaver-dialog: gkr-pam: unlocked login keyring
Mar  2 08:29:14 wkd-test02 sudo: pam_unix(sudo:auth): authentication failure; logname=franta uid=0 euid=0 tty=/dev/pts/1 ruser=franta rhost=wkd-test02  user=franta
Mar  2 08:29:20 wkd-test02 sudo:    franta : TTY=pts/1 ; PWD=/home/franta ; USER=root ; COMMAND=/usr/bin/touch /var/log/syslog

Klasický syslog měl konfigurační soubor v /etc/syslog.conf. Rsyslog používá

  • /etc/rsyslog.conf - základní konf. soubor
  • /etc/rsyslog.d/ - všechny soubory v tomto adresáři

Styl zápisu je poměrně jednoduchý. Co řádek to jedno pravidlo ve formátu: jedna nebo více facility nebo více.priorita akce

Facility

Místo jména facility může být wilcard * znamenající jakákoli facilita, nebo none znamenající žádná facilita.

Priority

Priorita znamená vždy daná priorita plus všechny vyšší. Např. notice (5), znamená notice a warning (4), err (3), crit (2), alert (1), emerg (0). Stejně jako u facilit, tak wilcard * znamenající jakákoli priorita, nebo none znamenající žádná priorita.

Kromě toho se dají použít operátory = a !. Např. =notice znamená jen prioritu notice, notice znamená všechny kromě notice.

Všimněte si také, že facilit může být více, priorita jen jediná. Aby na stejnou facilitu reagovalo více priorit, musí být rozepsáno do více řádků.

Facility a priority dohromady oddělené . tvoří selector (výběr). Ty lze opakovat na stejném řádku pro akci použitím ;.

Akce

Většina zpráv putuje do souboru. Pokud uvedené plnou cestu, pak jsou přidávány nakonec. Když soubor neexistuje, ®syslog ho vytvoří.

- na začátku nastavuje bufferovat, čímž mírně snížíme režii disku, ale nemáme zaručenou konzistenci, pokud se při nějaké velké zátěži nahromadí mnoho zpráv.

@ na začátku označuje, že se má zpráva zaslat na jiný syslog server, např.: @10.110.0.115 nebo @srv-syslog.

Lze též jako akci napsat jméno uživatele, pak se zpráva vypíše jemu. Případě * znamenající poslat všem přihlášeným uživatelům.

Příklady pravidel

  • mail.notice /var/log/mail - od mail, priority notice a vyšší, do souboru /var/log/mail
  • mail.notice /var/log/mail - od mail, všechny kromě priority notice
  • mail.!=notice /var/log/mail - od mail, všechny kromě priority notice (jen méně čitelně předchozí pravidlo)
  • mail.* -/var/log/mail - od mail, všechny priority, bufferovat
  • *.alert franta - od kohokoli, prioritu alert, na terminál frantovi
  • mail,uucp.alert @srv-syslog - od mail a uucp, prioritu alert, na srv-syslog server
  • mail.alert;uucp.notice * - od mail s prioritou alert, od uucp s notice, všem uživatelům

Odkazy