Транспорт бэкенда
Отладка транспорта: tcpdump, Wireshark, curl
«Сервис не работает». Это единственная информация от мониторинга. Без инструментов отладки - часы потраченные на гипотезы. С tcpdump: 30 секунд чтобы увидеть что firewall правило блокирует порт. С curl timing: 5 секунд чтобы понять что TTFB=3s - медленный SQL запрос. Инструменты превращают 'не работает' в 'вот конкретная причина'.
- **Cloudflare** публично описал инцидент где tcpdump выявил BGP routing loop: пакеты циркулировали между двумя DC. Без packet capture это было бы невозможно диагностировать по логам.
- **GitHub** использует Wireshark анализ для диагностики Git protocol проблем. Особенно полезно при проблемах с large pack files и smart HTTP protocol.
- **Netflix** включил SSLKEYLOGFILE в development окружениях для Wireshark анализа HTTPS трафика между сервисами - это ускорило отладку TLS-related проблем.
tcpdump: захват пакетов
tcpdump - command-line инструмент для захвата сетевых пакетов. Незаменим для диагностики: нет соединения? видно ли SYN? Высокая latency? видно где теряется время. Работает на любом Linux/Mac без GUI.
tcpdump требует root или CAP_NET_ADMIN. В production: создать capture и скачать для анализа локально в Wireshark. Никогда не анализировать production трафик с паролями и токенами без разрешения - это PII/security вопрос.
tcpdump показывает SYN пакеты от клиента, но нет SYN-ACK от сервера. Что это означает?
Wireshark: анализ пакетов
Wireshark - GUI для анализа захватов пакетов (.pcap файлы). Умеет декодировать сотни протоколов, реассемблировать TCP streams, дешифровать TLS (с ключами), вычислять round-trip time между пакетами.
Wireshark's TCP sequence analysis автоматически помечает проблемы: [TCP Retransmission], [TCP Out-of-Order], [TCP Zero Window], [TCP Dup ACK]. Это первое что нужно искать при нестабильном соединении.
Wireshark показывает много [TCP Retransmission] пакетов. Что это означает?
curl для HTTP отладки
curl - незаменимый инструмент для тестирования HTTP API. Режим -v (verbose) показывает всё: DNS резолюцию, TLS handshake, заголовки запроса и ответа. --timing показывает разбивку времени по фазам.
TTFB (Time To First Byte) = время до получения первого байта ответа. Включает DNS + TCP + TLS + сервер обработка. Если TTFB высокий - проблема на сервере или в сети, не в передаче данных.
curl показывает: tcp_connect=0.001s, tls_handshake=0.05s, ttfb=2.5s, total=2.51s. Где проблема?
Мониторинг брокеров сообщений
Kafka, RabbitMQ, NATS имеют встроенные management UI и метрики для Prometheus. Consumer lag, queue depth, partition leader elections - ключевые сигналы проблем.
Kafka partition lag в одной partition, а не во всех - признак того что конкретный consumer hung или перегружен. Перебалансировка consumer group (rebalance) перераспределит partition. Но rebalance - это downtime: пока идёт, никто не читает.
Kafka consumer lag в partition 1 = 1000 и растёт, в остальных partitions lag = 50. Что делать?
Чеклист отладки транспорта
Систематический подход к отладке транспортных проблем: от симптома к причине. Divide and conquer: проверять каждый уровень по очереди вместо случайных гипотез.
nc -zv (netcat) - быстрая проверка TCP доступности без HTTP: `nc -zv db.internal 5432`. Если успешно - TCP работает, проблема на уровне PostgreSQL. Если нет - сетевая/firewall проблема.
Distributed tracing заменяет tcpdump и curl при отладке
Трейсинг работает на уровне приложения. tcpdump/Wireshark нужны для сетевых проблем которые приложение не видит (firewall, packet loss, TLS errors).
Если пакет заблокирован firewall - tracing span вообще не создастся. tcpdump работает на сетевом уровне ниже TLS и приложения - видит то, что трейсинг не может.
Сервис возвращает 503, но curl -v показывает успешный TCP и TLS. Следующий шаг:
Итоги
- **tcpdump** - первый инструмент при 'нет соединения': видно SYN/SYN-ACK, RST, Retransmissions - сетевые проблемы которые приложение не видит.
- **curl -v + timing** - HTTP диагностика: DNS, TCP, TLS, TTFB каждый в отдельности. TTFB - время обработки на сервере.
- **Kafka lag / RabbitMQ queue depth** - первые метрики при проблемах с очередями. Uneven lag по partitions = проблема конкретного consumer.
Связанные темы
Инструменты отладки дополняют наблюдаемость на разных уровнях стека:
- Distributed Tracing — Трейсинг показывает application-level задержки; tcpdump/Wireshark - network-level. Вместе покрывают весь стек
- Безопасность: mTLS — TLS debugging через curl -v и Wireshark SSLKEYLOGFILE необходим при настройке mTLS и диагностике certificate errors
Вопросы для размышления
- Как безопасно захватить трафик в production без риска утечки PII данных?
- Когда tcpdump недостаточен и нужен Wireshark для анализа?
- Как автоматизировать сетевую диагностику как часть CI/CD или health checks?