используется 3 вмки - 2 клиента 1 сервер
На вмках предварительно должно быть
- обновить, добавить ансибл, добавить подключение между всеми по ключу так sh-keygen ssh-copy-id ub2@192.168.0.132
- добавить на хостовую машину все другие машины (hosts) /etc/ansible/hosts
- проверить что все ок ansible -m ping all -u ansible -k
Запуск ансибла sudo ansible-playbook /etc/ansible/app.yml -kK
Установить все что нужно /etc/ansible/iperf.yml - тут установка + запуск нагрузки и тестирваонеи как разделить сервера на группы запустить iperf3-сервер на одном хосте и генерировать трафик на клиентах
После выполнения, файлы с расширением .pcap можно анализировать.
Этот плейбук Ansible выполняет автоматизированную установку и запуск инструментов для анализа сетевого трафика, а также генерацию и захват сетевого трафика между группами серверов и клиентов. Вот подробное описание шагов:
-
Установка инструментов анализа трафика
На всех хостах (и серверах, и клиентах) устанавливаются пакетыiperf3(для генерации/измерения сетевого трафика) иtcpdump(для захвата сетевых пакетов). -
Запуск iperf3-сервера
На всех хостах из группыserver_groupзапускается iperf3 в режиме сервера (iperf3 -s) в фоне. Это позволяет принимать подключения от клиентов для тестирования пропускной способности сети. -
Генерация трафика и захват пакетов
На каждом хосте из группыclient_group(по одному за раз, благодаряserial: 1):- Запускается iperf3 в режиме клиента, который подклкакторый захватывает весь сетевой трафик на интерфейсах клиента и сохраняет его в файл
/tmp/traffic_dump_<имя_клиента>.pcap(захват длится 20 секунд). - После завершения захвата файл с дампом трафика пересылается на сервер в папку
/tmp/logs/с помощьюscp.
- Запускается iperf3 в режиме клиента, который подклкакторый захватывает весь сетевой трафик на интерфейсах клиента и сохраняет его в файл
Итог:
Плейбук позволяет автоматически развернуть инструменты для анализа сети, провести тестирование пропускной способности между клиентами и сервером, а также собрать дампы сетевого трафика для последующего анализа. Всё это делается последовательно для каждого клиента, чтобы избежать конфликтов при одновременных подключениях к iperf3-серверу.
потом этот файл скопировать и открыть его
пререквесты (по идее можно и в ансибл запихать но мне лень)
- запускам билд docker build -t app .
- пробрасывааем порт docker run -d --name app -p 5000:5000 app
- проверить в ручную чт о приложение запущено и рабоатте curl http://localhost:5000/ curl http://192.168.0.213:5000/ (оно на сервере такой и порт)
- запустить ансибл sudo ansible-playbook /etc/ansible/app.yml -kK
- Посмотреть куда сохранились логи загнать логи в приложение для анализа вайршарк или куда угодно
Описание от гпт Файл app.yml — это Ansible playbook для автоматизации тестирования и анализа сетевого трафика приложения, работающего на порту 5000. Вот что он делает по шагам:
- Устанавливает зависимости: Устанавливает пакеты
tcpdump(для захвата трафика) иapache2-utils(для генерации нагрузки черезab). - Останавливает старые процессы tcpdump: Завершает все ранее запущенные процессы захвата трафика на порту 5000.
- Создаёт директорию для файлов захвата: Убеждается, что директория tmp существует.
- Запускает захват трафика: Запускает
tcpdumpдля записи трафика на порт 5000 в файл на каждом узле. - Делает паузу: Ждёт несколько секунд, чтобы захват трафика начался до генерации нагрузки.
- Генерирует нагрузку: На клиентах запускает утилиту
abдля отправки запросов к серверу на порт 5000. - Проверяет наличие файла захвата: Убеждается, что файл с трафиком создан.
- Скачивает файл дампа: Копирует файл с трафиком на управляющую машину в папку
/tmp/logs. - Удаляет файл дампа с узла: Очищает временные файлы на удалённых машинах.
- Показывает путь к файлу дампа: Выводит сообщение с путём к скачанному файлу трафика.
Таким образом, playbook автоматизирует процесс тестирования производительности приложения и сбора сетевого трафика для последующего анализа.
Потом все логи собираются на контрольной машине
- docker build -t nginx_server .
- пробросим порты docker run -d --name nginx_server -p 8080:80 nginx_server
- Проверить доступность
- Запустить отправку запросов и обмен файлами из плейбукка files.yml
Этот плейбук выполняет автоматизированное тестирование сетевого взаимодействия между группами серверов и клиентов, а также собирает сетевые логи для последующего анализа. Вот что он делает по шагам:
- Устанавливает утилиту tcpdump на всех целевых машинах для захвата сетевого трафика.
- Запускает tcpdump в фоновом режиме на всех машинах, чтобы начать запись сетевого трафика в файл.
- Создаёт директорию для тестовых файлов с открытыми правами доступа на всех машинах.
- С клиентов отправляет HTTP-запросы на сервер, чтобы сгенерировать сетевой трафик.
- Создаёт тестовые файлы на клиентах и копирует их на сервер с помощью scp, чтобы проверить передачу файлов по сети.
- Создаёт несколько тестовых файлов на клиентах и копирует их на сервер, а затем один из файлов копирует обратно с сервера на клиента, чтобы проверить двустороннюю передачу файлов.
- Останавливает tcpdump на всех машинах.
- Проверяет наличие файла с логами трафика и скачивает его с каждой машины на управляющий узел для дальнейшего анализа.
В результате плейбук позволяет проверить сетевое взаимодействие между машинами и собрать полные логи сетевого трафика для диагностики и анализа.
Total packets: 350805
Top 5 IP addresses: 192.168.0.213: 796 packets 192.168.0.103: 546 packets 10.42.0.1: 349 packets 10.42.0.111: 241 packets 192.168.0.37: 227 packets
Protocol usage: TCP: 1279 packets UDP: 1 packets
Top 5 ports: Port 22: 745 packets Port 49002: 315 packets Port 10250: 229 packets Port 6444: 96 packets Port 8181: 60 packets
--- DETAILED NETWORK ANALYSIS ---
TCP Sessions: 86 Complete sessions: 5 Incomplete sessions: 41 Reset sessions: 4
Packet Loss Indicators: TCP Retransmissions: 462 Out-of-order packets: 21
Round-Trip Time (RTT) Statistics: Minimum RTT: 0.000000 seconds Average RTT: 0.056926 seconds Maximum RTT: 0.189035 seconds
Estimated TCP packet loss: 36.12% Lost packets (retransmissions): 462 Successfully delivered packets: 817
Average Packet Size: 22.27 bytes
Top 5 IP pairs: 192.168.0.103 -> 192.168.0.213: 271 packets 192.168.0.213 -> 192.168.0.103: 271 packets 10.42.0.1 -> 10.42.0.111: 120 packets 192.168.0.37 -> 192.168.0.213: 120 packets 127.0.0.1 -> 127.0.0.1: 111 packets
Top 5 TTL values: TTL 64: 1248 packets TTL 63: 32 packets