Привет, сетевой друг!
Продолжаем разбирать nethogs. В первой части смотрели базово, сегодня уже поглубже.🟣Как nethogs находит процессы: читает /proc/net/tcp и /proc/net/tcp6, сопоставляет сокеты с inode-номерами, затем через /proc/PID/fd определяет какой процесс держит этот сокет. Привязка идёт через inode, а не через порт, поэтому процессы с динамическими портами тоже видны корректно.
🟣Режим трассировки для логирования: нужен когда всплеск трафика происходит нерегулярно и поймать его в реальном времени не получается:
sudo nethogs -t eth0 | tee nethogs.log
Вывод в текстовом формате, каждую строку потом легко парсить grep’ом или awk.
🟣Фильтруем только процессы с ненулевым трафиком, убираем весь мусор из вывода:
sudo nethogs -t eth0 | awk '$2 > 0 || $3 > 0'
🟣Мониторинг конкретных сервисов: запускаем nethogs и сразу фильтруем по имени процесса:
sudo nethogs -t eth0 | grep "nginx\|php-fpm\|python"
На серверах с десятками процессов это режет вывод до нужного.
🟣И кстати, важное ограничение: nethogs не видит UDP-трафик. DNS, NTP, QUIC и другие UDP-сервисы в выводе не появятся - это не баг, а архитектурное ограничение. Для UDP нужен tcpdump или /proc/net/udp напрямую.
Серверная Админа | Zeroday | #nethogs