Home » Отслеживание трафика по процессам с помощью nethogs: простая диагностика в Linux
Отслеживание трафика по процессам с помощью nethogs: простая диагностика в Linux

Отслеживание трафика по процессам с помощью nethogs: простая диагностика в Linux

О чём эта статья и почему она важна

Если ты когда-нибудь задавался вопросом: «Кто, чёрт возьми, жрёт мой трафик на сервере?» — значит, ты пришёл по адресу. Сегодня разбираемся с nethogs — утилитой, которая показывает сетевое потребление не просто по портам или IP, а по процессам. Это как «top» для сети, только вместо нагрузки на CPU/память ты видишь, какой конкретно сервис или контейнер сейчас качает или отдает данные. В эпоху облаков, VPS, Docker и прочих радостей — штука незаменимая. Особенно если ты держишь руку на пульсе своих серверов или хочешь быстро вычислить подозрительный процесс, который внезапно съел весь канал.

Почему это важно: проблема и её значимость

В мире, где сервера крутятся в облаках, а на одном VPS могут жить десятки сервисов, бывает сложно понять, какой процесс реально грузит сеть. «iftop», «vnstat», «netstat» — все они показывают трафик по IP, портам, интерфейсам, но вот кто именно (какой pid или команда) это делает — уже не так просто узнать. А если у тебя на сервере и nginx, и docker, и почта, и ещё десяток микросервисов, то без точного ответа на этот вопрос ты рискуешь:

  • Не заметить, как какой-то багнутый контейнер выкачивает весь лимит трафика за ночь.
  • Потратить кучу времени на ручной анализ логов и конфигов.
  • Пропустить момент, когда сервер начал участвовать в DDoS или рассылке спама.

Вот тут и появляется nethogs — твой сетевой детектив, который быстро и понятно показывает, кто виноват.

Как это работает? Алгоритмы и структура nethogs

В отличие от классических сетевых мониторов, nethogs отслеживает сетевые соединения на уровне процессов. Он использует системные вызовы ядра Linux (например, читает /proc/net/tcp, /proc/net/udp и сопоставляет их с /proc/[pid]/fd/), чтобы построить карту: какой процесс каким сокетом пользуется, и сколько трафика через этот сокет прошло.

Короче, алгоритм такой:

  1. Сканируем все сетевые соединения в системе.
  2. Для каждого соединения ищем, какой процесс его открыл (через файловые дескрипторы в /proc).
  3. Суммируем трафик по каждому процессу и отображаем в реальном времени.

Это позволяет увидеть не только «что» и «куда», но и «кто» — прямо по имени процесса и его PID. Особенно круто, если ты ловишь утечку трафика в Docker-контейнерах или подозреваешь, что кто-то запускает на сервере майнер.

Как быстро и просто всё настроить? Практические советы и примеры

Установка nethogs

Всё до боли просто. В большинстве дистрибутивов (Debian, Ubuntu, CentOS, Fedora) nethogs есть в стандартных репозиториях.


# Для Debian/Ubuntu
sudo apt update
sudo apt install nethogs

# Для CentOS/RHEL/Fedora
sudo yum install nethogs
# или
sudo dnf install nethogs

Если вдруг ты на каком-то экзотическом дистрибе или хочешь самую свежую версию — репозиторий на GitHub.

Запуск и базовые команды

nethogs требует root-доступа, потому что ему нужно читать /proc и sniff-ить интерфейсы.


sudo nethogs

По умолчанию он мониторит все интерфейсы, но можно явно указать нужный:


sudo nethogs eth0
sudo nethogs enp0s3
sudo nethogs wlan0

Если у тебя несколько интерфейсов, можно указать сразу несколько:


sudo nethogs eth0 eth1

Краткий обзор интерфейса

  • PID/Program name — имя процесса и его PID.
  • DEV — сетевой интерфейс (eth0, ens33 и т.д.).
  • Sent/Received — скорость отправки и приёма трафика (KB/s).
  • Total Sent/Received — общий объём трафика (если запущено с параметром -t).

Управлять можно горячими клавишами:

  • q — выйти
  • m — поменять режим отображения (по скорости, по байтам, по PID и т.д.)
  • r — сбросить статистику

Автоматизация и вывод в консоль

Если хочется использовать nethogs в скриптах, есть режим вывода в текстовый поток:


sudo nethogs -t

Каждая строка — это событие: PID USER DEV SENT RECEIVED PROGRAM

Можно парсить вывод, отправлять алерты в Telegram или логировать подозрительные процессы. Например, простейший однострочник:


sudo nethogs -t | grep -i "python"

— покажет только процессы python, которые сейчас качают/отдают трафик.

Примеры и кейсы: где nethogs реально помогает

Кейс Результат с nethogs Рекомендации Что было бы без nethogs
Неожиданный расход трафика на VPS.
(Провайдер прислал письмо, что лимит превышен)
Запуск nethogs показал: mysqld качает данные на внешний IP. Проверить конфиг MySQL, убедиться, что нет открытого доступа из вне. Долгий анализ логов, tcpdump, гадание на кофейной гуще.
Контейнер Docker грузит сеть, а какой — неясно. nethogs показал PID, связанный с контейнером, и имя образа. Остановить/перезапустить только нужный контейнер. Перезапуск всех контейнеров, потеря времени.
Сервер начал тормозить, подозрение на DDoS. nethogs выявил подозрительный процесс (например, curl/wget), который flood-ит сеть. Убить процесс, заблокировать пользователя, проверить на вирусы. Долгий разбор, возможно, пропустишь момент.
Нужно быстро проверить, какой сервис жрёт исходящий трафик. nethogs сразу показывает лидеров по трафику. Оптимизировать конфиги, ограничить скорость. Долго искать через netstat/iftop, без PID.

Положительный кейс

На выделенном сервере неожиданно вырос исходящий трафик. Владелец быстро запускает sudo nethogs eth0 и видит, что exim (почтовый сервер) отправляет гигабайты данных. Оказалось, сервер взломали и используют для спама. За 2 минуты найден виновник, почта остановлена, сервер чистится. Без nethogs — пришлось бы ковырять логи, анализировать netstat, терять часы.

Отрицательный кейс

Пользователь запускает nethogs на VPS с нестандартным ядром, а оно не поддерживает нужные флаги в /proc. В результате nethogs показывает только часть процессов или вообще пусто. Решение: обновить ядро, проверить поддержку /proc/net/tcp, /proc/net/udp.

Ошибки новичков, мифы и похожие решения

  • Ошибка: Запускать nethogs без sudo/root.
    Результат: Утилита не видит все процессы, выводит неполную картину.
  • Миф: nethogs — это просто красивый iftop.
    Правда: iftop показывает трафик по IP/портам, но не по процессам. nethogs — единственный стабильный инструмент, который связывает трафик с PID.
  • Ошибка: Использовать nethogs для долгосрочного мониторинга.
    Результат: Утилита не предназначена для сбора статистики за недели/месяцы, не пишет логи (только потоковый вывод).
  • Похожее ПО: netstat, iftop, tcpdump — все они не показывают связь с процессом напрямую.

Статистика и сравнение с другими решениями

Утилита Показывает процессы? Показывает IP/Порт? Графика в терминале? Поддержка скриптов?
nethogs Да Нет Да Да (-t)
iftop Нет Да Да Нет
vnstat Нет Нет Нет Да
netstat Частично (с -p) Да Нет Да
tcpdump Нет Да Нет Да

Интересные факты и нестандартные способы использования

  • nethogs отлично работает внутри Docker-контейнеров, если дать ему доступ к host network. Можно мониторить, какой контейнер грузит сеть на хосте.
  • С помощью watch -n 1 nethogs -t можно получить «живой» лог трафика по процессам для последующего анализа.
  • Можно запускать nethogs по cron-у (например, раз в 5 минут с выводом в файл), чтобы отлавливать пиковые нагрузки.
  • Если у тебя много пользователей на сервере, быстро найдёшь, кто качает торренты, даже если они используют нестандартные клиенты.
  • В связке с fail2ban можно автоматически банить пользователей, если их процесс превышает лимит трафика.

Новые возможности: автоматизация и скрипты

nethogs в режиме -t можно интегрировать в любые мониторинговые системы. Например, парсить поток вывода через Python/Bash, отправлять алерты в Telegram, Slack или по email, если какой-то процесс резко увеличил трафик.

Пример скрипта для мониторинга трафика процесса:


#!/bin/bash
# Мониторим, если какой-то процесс выдает больше 10MB/s — алертим
sudo nethogs -t | while read line; do
  sent=$(echo $line | awk '{print $4}')
  if (( $(echo "$sent > 10000" | bc -l) )); then
    echo "ALERT: High network usage: $line" | mail -s "nethogs alert" [email protected]
  fi
done

Можно строить свои дешевые системы мониторинга без Zabbix/Prometheus, если нужен только быстрый алертинг по процессам.

Выводы и рекомендации

nethogs — это must-have для всех, кто админит сервера, особенно если ты живёшь в мире облаков, VPS, Docker и микросервисов. Он экономит время, нервы и деньги, позволяет быстро находить виновников утечек трафика и подозрительных процессов. Не путай с iftop и vnstat — nethogs уникален тем, что показывает именно процессы, а не только IP и порты.

Когда использовать:

  • Когда внезапно вырос расход трафика на сервере.
  • Когда хочется быстро найти контейнер или сервис, который грузит сеть.
  • Для оперативного реагирования на инциденты (DDoS, спам, вирусы).
  • При настройке новых сервисов — чтобы убедиться, что всё работает как надо.

Где брать сервера для экспериментов?
Если нужен VPS для тестов — арендовать VPS.
Если хочется выделенный сервер для продакшена — арендовать выделенный сервер.

Официальные ресурсы:

Пробуй, экспериментируй, автоматизируй! Не давай своему серверу утонуть в неизвестном трафике.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked