Hlavní navigace

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.

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?

15. 7. 2011 10:47

Já článek hodnotím kladně, vnstat jsem neznal a docela jej v síti využiju. Vůbec by mi nevadilo více podobných článků. :)

15. 7. 2011 17:04

Suhlasim. Oproti tym CouchDB a podobnym aspon predstavia nieco uzitocne.

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Recenze Prostřeno: cirkus postižených

Recenze Prostřeno: cirkus postižených

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Vitalia.cz: Manželka je bio, ale na sex moc není

Manželka je bio, ale na sex moc není

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Drahé i levné. Tyhle potraviny nosili na charitu

Drahé i levné. Tyhle potraviny nosili na charitu

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Vitalia.cz: Co nabídne největší výživová konference FOOD21?

Co nabídne největší výživová konference FOOD21?