> Как следить за работой оркестратора и какие метрики использовать для проверки корректности (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: InDrive

Стек: Go

> Пример ответа

Для мониторинга оркестратора (например, Kubernetes, Nomad или собственного решения на Go) важно отслеживать как инфраструктурные, так и бизнес-метрики. Основные метрики:

  1. Состояние задач и воркеров:

    • Количество активных, завершённых, упавших и зависших задач (через prometheus.Counter или Gauge).
    • Время выполнения задачи (гистограмма prometheus.Histogram для p50/p99).
    • Частота перезапусков воркеров (если используется runtime.Goexit или краш).
  2. Производительность оркестратора:

    • Задержка планирования (latency от постановки задачи до её запуска).
    • Пропускная способность (количество задач в секунду).
    • Размер очереди задач (если есть буферизация).
  3. Ресурсы:

    • Потребление CPU, памяти, горутин (через runtime.ReadMemStats и runtime.NumGoroutine).
    • Количество открытых соединений (например, к базе данных или очереди).
  4. Проверка корректности:

    • Health checks: эндпоинт /health с проверкой зависимостей (БД, очередь).
    • Readiness probe: готовность принимать новые задачи (например, если очередь переполнена).
    • Логирование: структурированные логи (JSON) с уровнем error для критических сбоев.
    • Трассировка: распределённая трассировка (OpenTelemetry) для отслеживания цепочек вызовов.

Пример реализации в Go:

GO
var (
tasksScheduled = promauto.NewCounter(prometheus.CounterOpts{
Name: "orchestrator_tasks_scheduled_total",
Help: "Total number of scheduled tasks.",
})
taskDuration = promauto.NewHistogram(prometheus.HistogramOpts{
Name: "orchestrator_task_duration_seconds",
Help: "Duration of task execution.",
Buckets: prometheus.DefBuckets,
})
)
func monitorTask(task func()) {
tasksScheduled.Inc()
start := time.Now()
defer taskDuration.Observe(time.Since(start).Seconds())
task()
}

Для алертинга используйте правила: если error_rate > 5% за 5 минут или queue_size > 1000 - срабатывает оповещение.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью