Ответ
Для диагностики проблем на прикладном уровне (L7) я использую комбинацию инструментов для анализа трафика, тестирования API и изучения логов.
1. Анализ сетевого трафика:
- Wireshark / tcpdump: Для захвата и глубокого анализа HTTP/HTTPS пакетов. Смотрю на коды состояния, заголовки, время ответа и целостность TLS-сессий.
tcpdump -i any -s 0 -w app_capture.pcap port 443 or port 80 - curl / httpie: Для ручного тестирования API-эндпоинтов, проверки заголовков, аутентификации и тела ответов.
curl -v -H "Authorization: Bearer <TOKEN>" -X POST https://api.service.com/v1/resource
2. Инструменты прикладного уровня:
- Postman / Insomnia: Для создания и выполнения коллекций тестов API, автоматизации проверок и документирования сценариев.
- Браузерные DevTools (Network tab): Для анализа запросов, исходящих от фронтенда, проверки CORS, cookies и загрузки ресурсов.
3. Анализ логов и метрик:
- Стек ELK (Elasticsearch, Logstash, Kibana) / Grafana Loki: Агрегация и поиск по логам приложения. Фильтрую по уровню ошибки (
ERROR,FATAL), trace-id или конкретному эндпоинту. - Application Performance Monitoring (APM): Инструменты вроде Datadog APM или New Relic для трейсинга распределенных транзакций, чтобы увидеть, на каком именно микросервисе или внешнем вызове возникает задержка или ошибка.
Типичные проблемы L7, на которые смотрю: некорректные HTTP-коды (5xx, 4xx), медленные ответы от БД или внешних сервисов, ошибки аутентификации/авторизации, невалидные JSON-тела и проблемы с балансировщиками нагрузки (например, неправильные health checks).