Какие знаешь способы отслеживать работу сервера

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

Ответ

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

  1. Встроенные метрики через expvar:
import _ "expvar"
http.ListenAndServe(":8080/debug/vars", nil)
  1. Prometheus – популярное решение для сбора метрик:
import "github.com/prometheus/client_golang/prometheus"
http.Handle("/metrics", promhttp.Handler())
  1. pprof для профилирования:
import _ "net/http/pprof"
go func() {
    log.Println(http.ListenAndServe(":6060", nil))
}()
  1. Кастомные health-check эндпоинты:
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
})
  1. Логирование через log или zap/zerolog с уровнем INFO для ключевых событий.

Для прода лучше комбинировать несколько методов: метрики + логи + алерты.