Инструмент для записи сетевого использования процесса с течением времени

Вопрос или проблема

Инструмент для записи сетевого использования процесса с течением времени

Я хотел бы иметь запись о том, какие процессы используют сеть и когда, на моем сервере с Linux. Большинство инструментов, которые я вижу (nethogs, iftop и т.д.), предназначены лишь для отображения того, что происходит прямо сейчас на сервере, что для меня не слишком полезно. Я хотел бы получать графики того, что происходило за последнюю неделю, например, и на первый процесс, а не только общее использование сети. Есть ли что-то, что может это сделать?

Я также хотел бы, чтобы это записывало процессы, запускаемые через crontab. Так что если у меня есть процесс, который запускается каждые 5 минут, работает кратковременно, а затем останавливается, он должен записать все данные, которые этот процесс отправляет/получает. Поскольку у каждого вызова будет разный PID, я, вероятно, хотел бы сгруппировать эти процессы по командной строке.

Ответ или решение

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

  1. nDPI и ntopng:

    • ntopng является веб-интерфейсом, который предоставляет возможность мониторинга сетевого трафика в реальном времени и исторические данные. Он может группировать данные по процессам и командным строкам, что соответствует вашим требованиям. Для установки:
      sudo apt install ntopng
    • После установки, вы можете получить доступ к интерфейсу через веб-браузер (по умолчанию это http://localhost:3000) и начать мониторинг сетевого трафика.
  2. tcptrack:

    • Этот инструмент позволяет отслеживать активные соединения в реальном времени, но также может использоваться с скриптами для получения данных о процессах, использующих сеть. Например, вы можете писать скрипты, которые сохраняют вывод tcptrack в файл с последующим анализом.
  3. iftop с расширениями:

    • По умолчанию, iftop также не сохраняет данные, но вы можете использовать его в сочетании с cron для периодического снимка. Создайте скрипт, который будет запускать iftop в режиме просмотра и сохранять вывод в файл, а затем автоматически обрабатывать этот файл для аналитики.
  4. sar (system activity reporter):

    • sar — мощный инструмент для мониторинга производительности системы, который также может быть настроен для сбора информации о сетевом трафике. Для установки:
      sudo apt install sysstat
    • Используйте команду sar -n DEV для получения данных о сетевом использовании, а с помощью sar -o вы можете сохранить данные в файл.
  5. Скрипты с использованием netstat и ps:

    • Вы можете разработать собственный скрипт на Python или Bash, который будет периодически выполнять netstat -plntu для получения активных соединений и ps для получения связанных процессов. Эти данные можно сохранять в файл или базу данных для последующего анализа.
  6. Grafana и InfluxDB:
    • Если вы хотите анализировать данные и визуализировать их в виде графиков, можно использовать InfluxDB для хранения временных рядов и Grafana для визуализации.
    • Сначала установите InfluxDB и отправляйте в него данные о сетевом использовании в формате временных рядов.

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

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

Оцените материал
Добавить комментарий

Капча загружается...