Как узнать потребление сети в Linux?

«Как узнать потребление сети в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для анализа сетевого трафика в Linux я выбираю инструмент в зависимости от того, что нужно: трафик в реальном времени, статистика по процессам или агрегированные данные.

1. Мониторинг в реальном времени по интерфейсам:

# Установить: sudo apt install iftop
sudo iftop -i eth0 -P
  • -i указывает интерфейс (например, eth0, ens18).
  • -P показывает порты. Это помогает быстро определить, какие хосты и порты генерируют трафик.

2. Мониторинг трафика по процессам:

# Установить: sudo apt install nethogs
sudo nethogs eth0

nethogs группирует трафик по PID и имени процесса, что незаменимо для поиска приложения, которое неожиданно активно использует сеть.

3. Сбор и просмотр исторической статистики:

# Установить: sudo apt install vnstat
vnstat -d # Показать статистику за день
vnstat -m # Показать статистику за месяц

vnstat работает как демон и хранит историю, не нагружая систему постоянным дампом трафика.

4. Базовые счетчики через ip или ss:

# Показать статистику по всем интерфейсам
ip -s link show
# Показать количество соединений (может косвенно указывать на активность)
ss -s

В DevOps-стеке для постоянного мониторинга я настраиваю node_exporter для сбора базовых метрик сетевых интерфейсов (bytes in/out, errors) в Prometheus. Для глубокого анализа протоколов и трафика уже использую специализированные решения вроде NetFlow/sFlow, собранные в Grafana.