VnStat: statistiky nejen pro OpenWRT

Adam Štrauch 15. 7. 2011

Vedení statistik by měla být jedna z funkcí každého správného routeru a u routerů, které připojují uživatele do nějakým způsobem omezené sítě, to platí dvojnásob. Někdy ale není potřeba nic komplikovaného a prostý údaj, kolik bylo kdy přeneseno, bohatě postačí. A tady nastupuje jednoduchý a spolehlivý program VnStat.

Co to je VnStat

VnStat je malá konzolová utilitka, která čte z jádra operačního systému informace o přenesených datech na jednotlivých rozhraních. Ovládá se hlavně přes příkazovou řádku, ale v OpenWRT je možné s ní částečně pracovat i přes webové rozhraní. Hlavní silou VnStat je jeho jednoduchost, což se odráží jak na použití, tak na sběru dat. V systému jeho přítomnost prakticky nezaznamenáte, daemon, který sbírá data, je nenáročný na systémové prostředky, a pokud nechcete ani toho, můžete aktualizaci provádět občas přes cron. Úkolem VnStat je sbírat souhrnné informace o stavu rozhraní, takže nehledejte nějaké dělení na IP adresy a podobně, všechny údaje se vztahují na fyzickou vrstvu. Výstupem pak je třeba jednoduchá tabulka podobná této:

# vnstat -d

ath0  /  daily

    day         rx      |     tx      |    total    |   avg. rate
------------------------+-------------+-------------+---------------
07/10/11      2.49 GiB |    1.42 GiB |    3.90 GiB |  379.11 kbit/s
07/11/11      3.78 GiB |    4.75 GiB |    8.53 GiB |  828.45 kbit/s
07/12/11      4.97 GiB |  888.41 MiB |    5.84 GiB |  567.13 kbit/s
07/13/11      1.33 GiB |    2.50 GiB |    3.83 GiB |  570.18 kbit/s
------------------------+-------------+-------------+---------------
estimated      2.04 GiB |    3.83 GiB |    5.87 GiB | 

Podobně lze vypsat statistiku ke dnům, hodinám, týdnům, je možné si zobrazit desítku nejsilnějších dnů a dokonce i jednoduchý textový graf. Krom toho dokáže VnStat vygenerovat statistiku do obrázku, čehož využívá i webové rozhraní OpenWRT. Statistikám ani nějak zvlášť neubližují restarty systému, ale v případě OpenWRT na flash paměti se data samozřejmě s každým restartem ztrácejí.

Historie VnStat sahá až do roku 2002, kdy byla podle changelogu vydána verze 1.0. Sympatické je, že autor mu občas věnuje čas i po takové době. Není to tak dlouho, co byl VnStat jen jednou binárkou, která sbírala data spouštěním v cronu a zároveň zpřístupňovala informace v databázi uživateli. Daemon existuje dodnes bok po boku s „ruční“ aktualizací, ale trvalo dost dlouho, než se distribuce jako Ubuntu nebo Debian na něj rozhodly přejít.

Instalace

Do systému dostaneme VnStat jako každý jiný program, a to přes balíčkovací systém. Pro Debian/Ubuntu platí staré dobré apt-get:

# apt-get install vnstat 

A pro OpenWRT obdobně jen s použitím opkg:

# opkg install vnstat 

VnStat nepotřebuje žádná zvláštní nastavení, takže po instalaci patřičného balíku by měl fungovat. V případě OpenWRT je dobré zkontrolovat, jestli běží proces vnstatd.

# ps axu | grep vnstatd
1447 root       936 S    /usr/sbin/vnstatd -d 

A případně ještě zkontrolovat, jestli se bude init skript spouštět po rebootu systému.

# ls -l /etc/rc.d/*vnstat
lrwxrwxrwx    1 root     root            16 Jun  5 00:25 /etc/rc.d/S99vnstat -> ../init.d/vnstat 

Pokud náhodou ne, tak vytvoříme symlink a tím je instalace u konce.

# cd /etc/rc.d/
# ln -s ../init.d/vnstat S99vnstat 

Pokud šlo vše dobře, měli bychom mít v systému utility vnstat pro náhled na statistiky, vnstati pro generování obrázků a vnstatd pro sběr dat. V Debianu/Ubuntu je utilitka vnstati ve zvláštním balíčku.

Může se stát, že chcete monitorovat i víc než jedno rozhraní, které si třeba v případě OpenWRT balíčkovací systém vybere. V takovém případě stačí vytvořit databáze k ostatním rozhraním a vnstatd už se o zbytek postará.

# vnstat -u -i ethX 

Konfigurace

Zdrojem nastavení VnStat je konfigurační soubor /etc/vnstat.conf. Ten se objevil společně s daemonem pro sběr dat a rozhodně to je ve vývoji krok vpřed. Je možné v něm upravit výstup statistik pokud vám nevyhovuje nastavení podle lokalizace systému, ovlivnit barevnost výstupu vnstati, logování a hlavně kam se mají ukládat databáze s nasbíranými daty.

V konfiguračním souboru je kolem 46 voleb a ty nejdůležitější najdete v tomto krátkém příkladu.

# Pro vnstat

# Výchozí rozhraní, pokud jiné není zvoleno
Interface "eth0"

# Adresář s databázemi
DatabaseDir "/var/lib/vnstat"

# Jaké se má použít locale, - platí pro systémové
Locale "-"

# který den v měsíci by se měla rotovat měsíční statistika
MonthRotate 1

# Jaké jednotky použít, 0 pro IEC (KiB/MiB/GiB/TiB), 1 pro KB/MB/GB/TB
UnitMode 0


# Pro vnstatd

# Jak často se má mají číst nová data (v sekundách)
UpdateInterval 60

# Jak často ukládat data na disk (v minutách)
SaveInterval 30

# Jak často ukládat data, pokud jsou všechny rozhraní offline (v minutách)
OfflineSaveInterval 30

# Uložit data, pokud je status rozhraní změněn
SaveOnStatusChange 1

# Logování (0 = vypnuto, 1 = logfile, 2 = syslog)
UseLogging 2

# Logfile
LogFile "/var/log/vnstat.log"

# Soubor s PID
PidFile "/var/run/vnstat.pid" 

Určitě jste si všimli, že VnStat umí dávat výsledek v různých jednotkách a umí se přizpůsobit i v případě, kdy váš poskytovatel počítá přenesená data od určitého dne v měsíci. Pro majitele routerů s flash pamětí se zase umí přizpůsobit tím, že ukládá data na disk v nastavitelném intervalu, což ocení hlavně flash paměti.

Získáváme data

Jak už bylo řečeno, pro čtení nasbíraných dat se používá utilitka vnstat, a co všechno umí zobrazit, najdeme v nápovědě.

-h,  --hours          statistika podle hodin
-d,  --days           statistika podle dnů
-m,  --months         statistika podle měsíců
-w,  --weeks          statistika podle týdnů
-t,  --top10          posledních
-s,  --short          stručná statistika
-i,  --iface          které rozhraní se má zobrazit (jinak výchozí)
-tr, --traffic        přenos dat za posledních 5 sekund
-l,  --live           aktuální přenos dat 

Když si pak chcete zobrazit třeba měsíční statistiku na rozhraní eth0, zavoláte:

$ vnstat -i eth0 -m

eth0  /  monthly

month        rx      |     tx      |    total    |   avg. rate
------------------------+-------------+-------------+---------------
Apr '11     17.53 GiB |  144.70 GiB |  162.23 GiB |  525.04 kbit/s
May '11     15.09 GiB |  185.09 GiB |  200.18 GiB |  626.96 kbit/s
Jun '11     12.67 GiB |   98.70 GiB |  111.37 GiB |  360.43 kbit/s
Jul '11      4.52 GiB |   36.17 GiB |   40.70 GiB |  310.41 kbit/s
------------------------+-------------+-------------+---------------
estimated     11.01 GiB |   88.09 GiB |   99.11 GiB | 

Pro web pak jsou třeba zajímavější grafické statistiky vytvořené přes vnstati.

$ vnstati -s -i eth0 -o test.png 

Kromě souhrnu pak můžete použít podobné parametry jako u vnstat pro zobrazení hodinové, denní, měsíční statistiky a podobně.

$ vnstati -h -i eth0 -o test.png 
$ vnstati -d -i eth0 -o test.png 

Uchovávání dat na flash paměti

Řekli jsme si, že v případě OpenWRT se statistika s každým restartem zařízení ztratí. Je to způsobeno tím, že databáze jsou ve skutečnosti uloženy v RAM paměti, konkrétně v souborovém systému tmpfs. OpenWRT takto ukládá všechna data, která by se mohla častěji změnit, aby zabránilo zápisům do flash paměti, které se to nemusí vyloženě líbit. Pokud ale chceme statistiky uchovat, máme několik možností.

První možnost je uložit je na externí disk připojený přes USB. V takovém případě to vyžaduje router s USB a namountování disku do nějakého adresáře, kam nasměrujeme konfigurační direktivu DatabaseDir. Když už USB disk k routeru připojený máte, asi ho budete chtít použít k něčemu náročnějšímu než je ukládání statistik, proto bude asi vhodnější druhá univerzálnější možnost.

Tou je ukládání databáze přímo do flash paměti a nastavení vnstatd, aby zápis prováděl co možná nejméně. V takovém případě nasměrujeme DatabaseDir třeba do /vnstat a upravíme trochu konfiguraci.

widgety

SaveInterval 180
OfflineSaveInterval 720
SaveOnStatusChange 0 

Tím zařídíme, že VnStat nebude paměť mordovat zas tak moc a data nám z větší části zůstanou. Při restartu se může stát, že o část statistik přijdeme v závislosti na intervalu uložení. To ale u podobného zařízení zas tolik bolet nebude.

Závěr

I když sledování dat patří v domácích podmínkách spíše minulosti, kdy vládly kruté FUPy, určitě si VnStat své fanoušky najde. Instalace i konfigurace je činností na pěti minut a jeho funkce nějak neomezuje další činnosti. Proti třeba komplexnějšímu Collectd jsou jeho požadavky směšné a navíc se jedná o all-in-one řešení, kde uživatel po instalaci najde jak daemona pro sbírání dat, tak utilitku, která mu ty data ukáže.

Našli jste v článku chybu?
Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Podnikatel.cz: Insolvence LevneElektro.cz? Začíná boj o peníze

Insolvence LevneElektro.cz? Začíná boj o peníze

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

Vitalia.cz: Inspekce našla nelegální sklad v SAPĚ. Zase

Inspekce našla nelegální sklad v SAPĚ. Zase

Podnikatel.cz: Znáte už 5 novinek k #EET

Znáte už 5 novinek k #EET

DigiZone.cz: Test: brýle pro virtuální realitu Exos Urban

Test: brýle pro virtuální realitu Exos Urban

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

Vitalia.cz: 5 pravidel proti infekci močových cest

5 pravidel proti infekci močových cest

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup