Назад | Перейти на главную страницу

Мониторинг и сбор статистики TCP-соединения с хостом src или dst

Я хотел бы собирать статистику по пакетам TCP / UDP, отправленным между двумя хостами (A и B). Я ищу инструмент для установки на A и B, чтобы получить следующую информацию:

Там есть iptraf, но мне сложно настроить его из командной строки. tcptrack не собирает данные ... Я немного заблудился ..: D Я мог бы написать сценарий tcpdump: /

Наверное, я упускаю что-то вполне очевидное ...

ОБНОВЛЕНИЕ: оба сервера работают под управлением ubuntu 14.04.

ОБНОВЛЕНИЕ 2: сейчас я экспериментирую с tcpflow (журналы растут довольно быстро), и я проверю collectId

ОБНОВЛЕНИЕ 3: Самый простой способ отслеживать трафик к заданному IP или сети - использовать IPTABLES и IPTABLES collectD плагин.

Один из способов сделать это - использовать tshark.

Сделайте следующее:

  1. Захватывайте трафик с помощью соответствующих фильтров с обеих сторон, используя tshark / tcpdump / независимо от того, что создает файл в формате pcap.
  2. После завершения запустите tshark вариант -z над файлами захвата.

Затем :

  • чтобы получить скорость передачи пакетов и байтов в секунду:

    tshark -q -r myfile.cap -z io,stat,1

В результате получится что-то вроде этого:

=============================
| IO Statistics             |
|                           |
| Interval size: 1 secs     |
| Col 1: Frames and bytes   |
|---------------------------|
|          |1               |
| Interval | Frames | Bytes |
|---------------------------|
| 0 <> 1   |     29 |  2026 |
| 1 <> 2   |     35 |  2440 |
| 2 <> 3   |     35 |  2440 |
| 3 <> 4   |     43 |  2920 |
| 4 <> 5   |     93 |  5776 |
| 5 <> 5   |     77 | 25758 |
=============================
  • чтобы получить агрегирование пакетов и байтов, а также среднее окно TCP:

    tshark -q -r myfile.cap -z io,stat,0,"AVG(tcp.window_size)tcp.window_size"

Результат будет примерно таким:

==============================================
| IO Statistics                              |
|                                            |
| Interval size: 5.109 secs (dur)            |
| Col 1: Frames and bytes                    |
|     2: AVG(tcp.window_size)tcp.window_size |
|--------------------------------------------|
|                |1               |2      |  |
| Interval       | Frames | Bytes |  AVG  |  |
|-----------------------------------------|  |
| 0.000 <> 5.109 |    312 | 41360 | 41363 |  |
==============================================


Теперь, если вы получите средний размер окна TCP из уравнения (вы не получите эту метрику без инструмента, проверяющего трафик), вы можете использовать стандартные инструменты мониторинга для построения графиков любых значений скорости / агрегации пакетов по любому протоколу, например, используя кактусы.

Редактировать : Не уверен, что вы имели в виду под скользящим окном, учитывая (за) другие ответы. Если вы имели в виду среднее значение показателей за определенный период времени, начиная с некоторой даты (а не размер окна TCP), вы можете сделать все это, добавив фильтр даты с помощью команд tshark.

Но похоже, что вы просто ищете решение для глобального мониторинга. Cacti, collectd, zabbix, shinken, nagios (с icinga или чем-то в этом роде) должны подходить для ваших нужд и быть достаточно настраиваемыми, чтобы при необходимости фильтровать определенный трафик.

Создайте зеркало порта для обоих серверов и запустите wirehark с двух компьютеров для сбора данных. Таким образом, это не повлияет на работу вашего сервера.

Это очень интересный вопрос.
Ответ зависит от настроек вашей сети, но я постараюсь осветить некоторые случаи.
Я вполне верю, что CollectD - это часть ответа.

Во-первых, поскольку вы хотите собирать свои показатели «каждую секунду», вам необходимо настроить CollectD Значение интервала

Решение № 1. Обращается ли ServerA ИСКЛЮЧИТЕЛЬНО к ServerB через определенный интерфейс? (и наоборот)
Установите CollectD с Плагин интерфейса. Он «соберет» часть того, что вам нужно:

  • кб / сек
  • пакетов / секунд
  • (совокупно) отправлено байт
  • (всего) пакетов отправлено на данный момент

Пересылайте метрики CollectD в базу данных временных рядов, такую ​​как Graphite.
Вы сможете визуализировать эти показатели и применить функцию скользящего среднего. Это будет соответствовать вашим потребностям в:

  • среднее в скользящем окне


Решение № 2 - ServerA общается только с ServerB по TCP и определенному порту? (и наоборот)
Очень похожий. Используйте CollectD и отслеживайте трафик только на определенном TCP-порту, используя CollectD и его плагин TCPConns. Кроме того, используйте Graphie для "среднее значение в скользящем окне"

Мое решение для проведения 1-2-часовых тестов:

  • tcpflow для сбора TCP-потока, я использую tcpflow -i eth0 -FT иметь отметку времени в именах файлов результатов
  • проанализировать report.xml (DFXML), чтобы создать отчет о закрытых соединениях
  • анализировать имена файлов с захваченным трафиком + записывать их размеры, чтобы сообщить о текущем соединении во время измерения
  • используйте matplotlib для построения графиков

Преимущество:

  • подробный обзор происходящего

Недостаток:

  • файлы с захватами трафика растут очень быстро