Ответ
Для дебага межсервисного взаимодействия в Go я обычно использую:
- Логирование - добавляю детальные логи на входящие/исходящие запросы:
log.Printf("Request to %s: %+v", url, req)
resp, err := client.Do(req)
log.Printf("Response: %+v, Error: %v", resp, err)
- HTTP клиент с трассировкой:
client := &http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
}
- Инструменты:
- Wireshark/tcpdump для анализа сетевого трафика
- Postman для ручной проверки эндпоинтов
- gRPC UI для gRPC сервисов
- Метрики и трейсы - OpenTelemetry для распределенной трассировки:
tracer := otel.Tracer("service-name")
ctx, span := tracer.Start(ctx, "api-call")
defer span.End()
Для сложных случаев использую mock-серверы (httptest.Server) в тестах.