Как понять, что произошла поломка на сервисе

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

Ответ

Вот основные способы мониторинга и диагностики проблем:

  1. Логирование – проверка логов на ошибки (уровни Error, Fatal, Panic). Пример логирования в Go:
log.Printf("Error: %v", err)
log.Fatal("Critical failure") // завершает программу
  1. Метрики – мониторинг ключевых показателей (CPU, память, latency, 5xx ошибки) через Prometheus/Grafana.

  2. Health checks – эндпоинты /health или /ready для проверки состояния сервиса. Пример:

http.HandleFunc("/health", func(w http.ResponseWriter, _ *http.Request) {
    if isDBConnected() {
        w.WriteHeader(http.StatusOK)
    } else {
        w.WriteHeader(http.StatusServiceUnavailable)
    }
})
  1. Alerting – настройка алертов при выходе метрик за пороговые значения.

  2. Трассировка – инструменты вроде Jaeger для анализа распределенных транзакций.

Первые признаки проблем: рост ошибок в логах, падение метрик uptime, увеличение latency, алерты от мониторинга.