vnStat é um monitor de tráfego de rede para sistemas Linux e Unix-like. Ele regista o tráfego de rede em diferentes intervalos e não requer permissões de root para ser executado. A implementação envolve dois comandos: vnstat para consultar informações de tráfego e vnstatd para a recuperação e armazenamento de dados. Vamos ver como adicionar uma interface de rede ao vnstat após a instalação para fins de monitorização.
Adicionar uma nova interface de rede ao vnstat para monitorização
- Abra a aplicação de terminal.
- Para um servidor remoto, faça login usando o comando ssh.
- Use o tcpdump -D no Unix ou ip link show no Linux para listar as interfaces de rede.
- Para adicionar uma nova interface de rede chamada wg0, digite: sudo vnstat -i wg0 –add
- Reinicie o serviço vnstat, execute: sudo systemctl restart vnstat.service OU sudo service vnstat restart, dependendo da versão do seu Linux/Unix.
- Aguarde algum tempo para recolher os dados.
- Agora, o comando vnstat -i wg0 pode monitorizar os dados.
Visualizar estatísticas para a interface de rede
Digite o comando:
vnstat -i {interface}
vnstat -i wg0
Resultado:
Base de dados atualizada: 2024-07-18 02:25:35
wg0 desde 2024-07-18
rx: 12.41 MiB tx: 218.47 MiB total: 230.88 MiB
mensal
rx | tx | total | taxa média
------------------------+-------------+-------------+---------------
2024-07 12.41 MiB | 218.47 MiB | 230.88 MiB | 886 bit/s
------------------------+-------------+-------------+---------------
estimado 13.12 MiB | 253.37 MiB | 266.49 MiB |
diário
rx | tx | total | taxa média
------------------------+-------------+-------------+---------------
hoje 12.41 MiB | 218.47 MiB | 230.88 MiB | 95.10 kbit/s
------------------------+-------------+-------------+---------------
estimado 38.32 MiB | 816.25 MiB | 854.57 MiB |
Pode ver os reusltados em formato json ou xml para fins de automação ou comandos de terceiros:
vnstat -i wg0
vnstat -i wg0 --json
vnstat -i wg0 --xml
Resultado XML
<wg0>
<timestamp>20240718</timestamp>
<timestamp_updated>202407180225</timestamp_updated>
<rx>13018692</rx>
<tx>228812240</tx>
<total>241830932</total>
<rx_5min_1>1141932</rx_5min_1>
<tx_5min_1>803868</tx_5min_1>
<rx_5min_2>417500</rx_5min_2>
<tx_5min_2>319608</tx_5min_2>
<rx_5min_3>8144884</rx_5min_3>
<tx_5min_3>199122280</tx_5min_3>
<rx_5min_4>419992</rx_5min_4>
<tx_5min_4>326316</tx_5min_4>
<hourly>
<timestamp>202407180200</timestamp>
<rx>13018692</rx>
<tx>228812240</tx>
</hourly>
<daily>
<timestamp>20240718</timestamp>
<rx>13018692</rx>
<tx>228812240</tx>
</daily>
<monthly>
<timestamp>202407</timestamp>
<rx>13018692</rx>
<tx>228812240</tx>
</monthly>
<yearly>
<timestamp>2024</timestamp>
<rx>13018692</rx>
<tx>228812240</tx>
</yearly>
</wg0>
Resultado JSON
{
"vnstatversion": "2.6",
"jsonversion": "2",
"interfaces": [
{
"name": "wg0",
"alias": "",
"created": {
"date": {
"year": 2024,
"month": 7,
"day": 18
}
},
"updated": {
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 25
}
},
"traffic": {
"total": {
"rx": 13018692,
"tx": 228812240
},
"fiveminute": [
{
"id": 27016,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 5
},
"rx": 1141932,
"tx": 803868
},
{
"id": 27015,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 10
},
"rx": 417500,
"tx": 319608
},
{
"id": 27018,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 15
},
"rx": 8144884,
"tx": 199122280
},
{
"id": 27020,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 20
},
"rx": 419992,
"tx": 326316
}
],
"hour": [
{
"id": 2253,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"time": {
"hour": 2,
"minute": 0
},
"rx": 13018692,
"tx": 228812240
}
],
"day": [
{
"id": 96,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"rx": 13018692,
"tx": 228812240
}
],
"month": [
{
"id": 5,
"date": {
"year": 2024,
"month": 7
},
"rx": 13018692,
"tx": 228812240
}
],
"year": [
{
"id": 2,
"date": {
"year": 2024
},
"rx": 13018692,
"tx": 228812240
}
],
"top": [
{
"id": 66,
"date": {
"year": 2024,
"month": 7,
"day": 18
},
"rx": 13018692,
"tx": 228812240
}
]
}
}
]
}
Pode usar o comando jq ou o comando sttr para converter json para yaml:
vnstat -i wg0 --json | sttr json-yaml > outputs.yaml
Pode ajustar as saídas e consultá-las da seguinte forma:
vnstat -i wg0 -5 #mostrar 5 minutos
vnstat -i wg0 -h #mostrar horas
vnstat -i wg0 -hg #mostrar gráfico de horas
vnstat -i wg0 -d #mostrar dias
vnstat -i wg0 -m #mostrar meses
vnstat -i wg0 -y #mostrar anos
vnstat -i wg0 -t #mostrar melhores dias
Ficheiros importantes para o seu serviço vnstat
Todos os dados de cada interface são armazenados por padrão no diretório /var/lib/vnstat/ usando sqlite. O ficheiro de configuração padrão é /etc/vnstat.conf e pode ser editado para definir a interface padrão e outras configurações:
sudo vim /etc/vnstat.conf
No Linux com systemd como init, pode visualizar ficheiros de log para erros ou resolução de problemas ao adicionar ou eliminar interfaces. Por exemplo:
sudo journalctl -u vnstat.service
Caso contrário, para Unix e outros sistemas, tente o ficheiro /var/log/vnstat.log:
sudo tail -f /var/log/vnstat.log