Como adicionar uma interface ao vnstat para monitorização

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

  1. Abra a aplicação de terminal.
  2. Para um servidor remoto, faça login usando o comando ssh.
  3. Use o tcpdump -D no Unix ou ip link show no Linux para listar as interfaces de rede.
  4. Para adicionar uma nova interface de rede chamada wg0, digite: sudo vnstat -i wg0 –add
  5. Reinicie o serviço vnstat, execute: sudo systemctl restart vnstat.service OU sudo service vnstat restart, dependendo da versão do seu Linux/Unix.
  6. Aguarde algum tempo para recolher os dados.
  7. Agora, o comando vnstat -i wg0 pode monitorizar os dados.

Visualizar estatísticas para a interface de rede

Digite o comando:

Bash
vnstat -i {interface}
vnstat -i wg0

Resultado:

Bash
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:

Bash
vnstat -i wg0
vnstat -i wg0 --json
vnstat -i wg0 --xml

Resultado XML

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

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:

Bash
vnstat -i wg0 --json | sttr json-yaml > outputs.yaml

Pode ajustar as saídas e consultá-las da seguinte forma:

Bash
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:

Bash
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:

Bash
sudo journalctl -u vnstat.service

Caso contrário, para Unix e outros sistemas, tente o ficheiro /var/log/vnstat.log:

Bash
sudo tail -f /var/log/vnstat.log

Artigos Relacionados