Come registrare e monitorare il consumo di traffico con vnStat
vnStat to lekkie narzędzie konsolowe, które przechowuje historię ruchu sieciowego w systemie Linux. Usługa działająca w tle, vnstatd, odczytuje liczniki interfejsów z jądra systemu i zapisuje je w niewielkiej bazie danych. Następnie można przeglądać ruch w ujęciu godzinowym, dziennym, miesięcznym i rocznym lub śledzić bieżącą szybkość transferu w czasie rzeczywistym. vnStat nie przechwytuje pakietów, dlatego jego narzut na system jest bardzo niski. Pokazuje, ile ruchu przeszło przez każdy interfejs, ale nie wskazuje, które adresy IP, porty lub połączenia go wygenerowały.
Ten poradnik pokazuje, jak zainstalować vnStat z repozytorium lub z kodu źródłowego oraz jak przeglądać statystyki ruchu. vnStat jest przydatny na każdym serwerze, na którym ruch jest limitowany lub płatny, na przykład na serwerze VPS z Linuksem lub serwerze dedykowanym INTROSERV.
Instalacja vnStat z repozytorium
Połącz się z serwerem przez SSH. Szczegółowe informacje znajdziesz w artykule Połączenie przez SSH.
Ubuntu i Debian
vnStat jest dostępny w standardowych repozytoriach. Zainstaluj go:
sudo apt update sudo apt install -y vnstat
Instalacja uruchamia usługę vnstat i włącza ją przy starcie systemu. Sprawdź, czy usługa działa:
sudo systemctl status vnstat
W wyniku musi być widoczny stan active (running). Jeśli usługa nie działa, włącz ją i uruchom poleceniem sudo systemctl enable --now vnstat.

AlmaLinux i Rocky Linux
vnStat jest dostępny w repozytorium EPEL. Włącz EPEL i zainstaluj vnStat:
sudo dnf install -y epel-release sudo dnf install -y vnstat
Włącz i uruchom usługę:
sudo systemctl enable vnstat && sudo systemctl start vnstat
Sprawdź, czy usługa działa:
sudo systemctl status vnstat
Instalacja vnStat z kodu źródłowego
Skompiluj vnStat ze źródeł, jeśli pakiet nie jest dostępny dla Twojej dystrybucji lub potrzebujesz najnowszej wersji.
Jeśli vnStat został już zainstalowany z repozytorium, najpierw usuń pakiet: sudo apt remove -y vnstat w Ubuntu i Debianie lub sudo dnf remove -y vnstat w AlmaLinux i Rocky Linux. Obie instalacje używają tego samego pliku konfiguracyjnego, tej samej bazy danych i tej samej nazwy usługi, dlatego ich współistnienie powoduje konflikty.
Zainstaluj zależności potrzebne do kompilacji. W Ubuntu i Debianie:
sudo apt update && sudo apt install -y build-essential libsqlite3-dev wget
W AlmaLinux i Rocky Linux:
sudo dnf group install -y "Development Tools" sudo dnf install -y sqlite-devel wget
Pobierz i rozpakuj najnowsze wydanie:
wget https://humdi.net/vnstat/vnstat-latest.tar.gz tar -xf vnstat-latest.tar.gz cd vnstat-*/
Archiwum rozpakowuje się do katalogu z numerem wersji w nazwie, na przykład vnstat-2.13. Symbol wieloznaczny vnstat-*/ pozwala wejść do katalogu bez wpisywania numeru wersji.
Skompiluj i zainstaluj vnStat:
./configure --prefix=/usr --sysconfdir=/etc && make && sudo make install
Opcja --prefix=/usr instaluje programy w katalogach /usr/bin i /usr/sbin, a --sysconfdir=/etc umieszcza plik konfiguracyjny w /etc/vnstat.conf.
W AlmaLinux i Rocky Linux z włączonym SELinux, jeśli vnStat był wcześniej zainstalowany z repozytorium, najpierw przywróć etykiety SELinux katalogu bazy danych. W przeciwnym razie usługa nie uruchomi się i zgłosi błąd Permission denied:
sudo restorecon -Rv /var/lib/vnstat
Zainstaluj usługę systemd, następnie włącz ją i uruchom:
sudo cp -v examples/systemd/vnstat.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now vnstat
Sprawdź wersję programu i stan usługi:
vnstat --version sudo systemctl status vnstat
Ustalanie interfejsu sieciowego
Domyślnie vnStat dodaje do bazy danych wszystkie interfejsy sieciowe serwera z wyjątkiem interfejsu pętli zwrotnej (loopback). Aby zobaczyć interfejsy znajdujące się obecnie w bazie, uruchom:
vnstat --dbiflist
Interfejsy można też wyświetlić poleceniem ip a. W poniższych przykładach używany jest interfejs ens3. Zastąp go nazwą swojego interfejsu, na przykład eth0 lub enp1s0.
Domyślnie vnStat zapisuje nowe dane w bazie co 5 minut. Bezpośrednio po instalacji polecenie vnstat informuje, że nie ma jeszcze danych, na przykład komunikatem Not enough data available yet lub No data. Odczekaj kilka minut i uruchom polecenie ponownie.
Przeglądanie statystyk ruchu
Uruchom vnstat bez opcji, aby zobaczyć podsumowanie dla wszystkich interfejsów, obejmujące ruch z bieżącego dnia i miesiąca oraz prognozę na koniec każdego okresu.
vnstat
We wszystkich raportach rx oznacza ruch przychodzący, tx – ruch wychodzący, a total – ich sumę.
Ruch w ujęciu godzinowym
Aby wyświetlić 12 ostatnich wpisów godzinowych, uruchom:
vnstat -i ens3 -h --limit 12

Ruch w ujęciu dziennym
Aby wyświetlić 2 ostatnie wpisy dzienne, uruchom:
vnstat -i ens3 -d --limit 2
Bez opcji --limit liczba wyświetlanych wpisów zależy od parametru ListDays w pliku /etc/vnstat.conf, domyślnie jest to 30. Parametr ogranicza tylko wyświetlane dane, a nie dane przechowywane w bazie.
Ruch w ujęciu miesięcznym
vnstat -i ens3 -m

Ruch w ujęciu rocznym
vnstat -i ens3 -y
Ruch w czasie rzeczywistym
Aby śledzić bieżącą szybkość transferu, uruchom:
vnstat -i ens3 -l
Wartości są odświeżane, dopóki nie naciśniesz Ctrl+C. Jeśli polecenie działało dłużej niż 10 sekund, vnStat wyświetli następnie podsumowanie z tego okresu.

Ruch w zadanym czasie (w sekundach)
Aby zmierzyć średnią szybkość ruchu w wybranym przedziale czasu, podaj jego długość w sekundach. Na przykład 20 sekund:
vnstat -i ens3 -tr 20
Jeśli nie podasz wartości, pomiar trwa 5 sekund. Wynik zostanie wyświetlony po upływie zadanego czasu.
Wykres z ostatnich 24 godzin
Aby wyświetlić ruch z ostatnich 24 godzin w postaci wykresu tekstowego, uruchom:
vnstat -i ens3 -hg

Aby przetwarzać statystyki w skrypcie, użyj opcji --json lub --oneline. Na przykład polecenie vnstat -i ens3 --json d eksportuje statystyki dzienne w formacie JSON.
Ustawianie domyślnego interfejsu
Jeśli serwer ma kilka interfejsów, a zwykle sprawdzasz tylko jeden z nich, ustaw go jako domyślny w pliku konfiguracyjnym /etc/vnstat.conf. Otwórz plik:
sudo nano /etc/vnstat.conf
W AlmaLinux i Rocky Linux edytor nano nie jest domyślnie zainstalowany. Zainstaluj go poleceniem sudo dnf install -y nano lub użyj vi.
Znajdź wiersz Interface, usuń średnik na jego początku i wpisz nazwę swojego interfejsu:
Interface "ens3"
Zapisz plik. Teraz vnstat uruchomiony bez opcji -i, na przykład vnstat -d, wyświetla statystyki tego interfejsu. Usługa vnstat nadal monitoruje wszystkie interfejsy.
Pełną listę opcji uzyskasz poleceniem vnstat --longhelp lub w dokumentacji man vnstat.