Вопрос или проблема
Инструмент для записи сетевого использования процесса с течением времени
Я хотел бы иметь запись о том, какие процессы используют сеть и когда, на моем сервере с Linux. Большинство инструментов, которые я вижу (nethogs, iftop и т.д.), предназначены лишь для отображения того, что происходит прямо сейчас на сервере, что для меня не слишком полезно. Я хотел бы получать графики того, что происходило за последнюю неделю, например, и на первый процесс, а не только общее использование сети. Есть ли что-то, что может это сделать?
Я также хотел бы, чтобы это записывало процессы, запускаемые через crontab. Так что если у меня есть процесс, который запускается каждые 5 минут, работает кратковременно, а затем останавливается, он должен записать все данные, которые этот процесс отправляет/получает. Поскольку у каждого вызова будет разный PID, я, вероятно, хотел бы сгруппировать эти процессы по командной строке.
Ответ или решение
Для точного мониторинга сетевого использования процессами на вашем сервере Linux с возможностью ведения записей за определённый период времени, рекомендую использовать комбинацию нескольких инструментов.
-
nDPI и ntopng:
- ntopng является веб-интерфейсом, который предоставляет возможность мониторинга сетевого трафика в реальном времени и исторические данные. Он может группировать данные по процессам и командным строкам, что соответствует вашим требованиям. Для установки:
sudo apt install ntopng
- После установки, вы можете получить доступ к интерфейсу через веб-браузер (по умолчанию это http://localhost:3000) и начать мониторинг сетевого трафика.
- ntopng является веб-интерфейсом, который предоставляет возможность мониторинга сетевого трафика в реальном времени и исторические данные. Он может группировать данные по процессам и командным строкам, что соответствует вашим требованиям. Для установки:
-
tcptrack:
- Этот инструмент позволяет отслеживать активные соединения в реальном времени, но также может использоваться с скриптами для получения данных о процессах, использующих сеть. Например, вы можете писать скрипты, которые сохраняют вывод
tcptrack
в файл с последующим анализом.
- Этот инструмент позволяет отслеживать активные соединения в реальном времени, но также может использоваться с скриптами для получения данных о процессах, использующих сеть. Например, вы можете писать скрипты, которые сохраняют вывод
-
iftop с расширениями:
- По умолчанию,
iftop
также не сохраняет данные, но вы можете использовать его в сочетании сcron
для периодического снимка. Создайте скрипт, который будет запускатьiftop
в режиме просмотра и сохранять вывод в файл, а затем автоматически обрабатывать этот файл для аналитики.
- По умолчанию,
-
sar (system activity reporter):
sar
— мощный инструмент для мониторинга производительности системы, который также может быть настроен для сбора информации о сетевом трафике. Для установки:sudo apt install sysstat
- Используйте команду
sar -n DEV
для получения данных о сетевом использовании, а с помощьюsar -o
вы можете сохранить данные в файл.
-
Скрипты с использованием netstat и ps:
- Вы можете разработать собственный скрипт на Python или Bash, который будет периодически выполнять
netstat -plntu
для получения активных соединений иps
для получения связанных процессов. Эти данные можно сохранять в файл или базу данных для последующего анализа.
- Вы можете разработать собственный скрипт на Python или Bash, который будет периодически выполнять
- Grafana и InfluxDB:
- Если вы хотите анализировать данные и визуализировать их в виде графиков, можно использовать InfluxDB для хранения временных рядов и Grafana для визуализации.
- Сначала установите InfluxDB и отправляйте в него данные о сетевом использовании в формате временных рядов.
Чтобы собрать данные о процессах, которые запускаются через crontab
, убедитесь, что ваш скрипт или инструмент может отслеживать времена старта и завершения этих задач, а также использовать информацию о командной строке для группировки процессов.
Таким образом, комбинируя различные инструменты и собственные скрипты, вы сможете создать полноценную систему мониторинга и записи сетевого использования на вашем сервере Linux, соответствующую вашим требованиям.