Ответ
Observability в Go — это способность системы предоставлять данные для мониторинга, отладки и анализа работы в реальном времени. Основные компоненты:
- Метрики (Metrics) — числовые показатели (CPU, память, запросы в секунду). Используют
prometheus.Client:
counter := prometheus.NewCounter(prometheus.CounterOpts{
Name: "http_requests_total",
Help: "Total HTTP requests",
})
prometheus.MustRegister(counter)
- Логи (Logging) — структурированные записи событий. Популярные библиотеки —
zap,logrus:
logger, _ := zap.NewProduction()
logger.Info("User logged in", zap.String("user", "Alice"))
- Трейсинг (Tracing) — отслеживание запросов через распределённые системы. Инструменты — OpenTelemetry, Jaeger.
Observability помогает быстро находить узкие места, анализировать сбои и понимать поведение системы в проде. Ключевое отличие от мониторинга — возможность задавать новые вопросы по данным без изменения кода.