Какой план действий при поиске причины ошибки 500 от микросервиса

«Какой план действий при поиске причины ошибки 500 от микросервиса» — вопрос из категории DevOps, который задают на 26% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Проверить логи сервиса – искать ошибки, stack traces, паники.
  2. Анализ health-check и метрик – CPU, память, goroutine leaks.
  3. Проверить внешние зависимости – БД, API, очереди (timeout/connection issues).
  4. Воспроизвести локально – с теми же параметрами запроса.
  5. Написать тест – изолировать проблемный участок.

Пример проверки логов:

// middleware для логирования ошибок
func LoggingMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        defer func() {
            if err := recover(); err != nil {
                log.Printf("PANIC: %v", err)
                http.Error(w, "500 Internal Server Error", http.StatusInternalServerError)
            }
        }()
        next.ServeHTTP(w, r)
    })
}

Дополнительно: мониторинг (Prometheus), трассировка (Jaeger), проверка конфигов.