Я хотел бы собирать статистику по пакетам TCP / UDP, отправленным между двумя хостами (A и B). Я ищу инструмент для установки на A и B, чтобы получить следующую информацию:
Там есть iptraf, но мне сложно настроить его из командной строки. tcptrack не собирает данные ... Я немного заблудился ..: D Я мог бы написать сценарий tcpdump: /
Наверное, я упускаю что-то вполне очевидное ...
ОБНОВЛЕНИЕ: оба сервера работают под управлением ubuntu 14.04.
ОБНОВЛЕНИЕ 2: сейчас я экспериментирую с tcpflow (журналы растут довольно быстро), и я проверю collectId
ОБНОВЛЕНИЕ 3: Самый простой способ отслеживать трафик к заданному IP или сети - использовать IPTABLES и IPTABLES collectD плагин.
Один из способов сделать это - использовать tshark
.
Сделайте следующее:
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 -i eth0 -FT
иметь отметку времени в именах файлов результатовПреимущество:
Недостаток: