Uptime Scope — это экспортер метрик на Go, который проверяет доступность URL и отдаёт результаты в формате Prometheus. Никакой лишней логики, никакой своей базы данных. Просто метрики на /metrics, которые Prometheus сам забирает по расписанию.
В ToDo ещё висят динамическое обнаружение целей и retry-логика, так что на продакшн с миллионом урлов пока не рассчитан. Но для базового мониторинга своих сервисов подходит.
В конфиг Prometheus добавляется стандартный scrape job. Можно сразу прописать несколько инстансов экспортера для разных регионов:
scrape_configs:
- job_name: 'uptime_scope'
scrape_interval: 30s
static_configs:
- targets:
- 'uptimescope-eu-west:8181'
- 'uptimescope-us-east:8181'
- 'uptimescope-asia:8181'
Это удобный способ получить географически распределённый мониторинг доступности — запускаете агентов в разных регионах, Prometheus собирает метрики со всех.
В комментариях к проекту уже подсветили несколько вещей. Во-первых, есть blackbox exporter от самой команды Prometheus — он решает похожую задачу и поддерживает динамическое обнаружение целей через сам Prometheus. Uptime Scope пока проще, но автор планирует добавить собственный dynamic discovery.
Во-вторых, по коду есть несколько резонных замечаний: путь к конфигу лучше передавать флагом, интервал проверок сделать настраиваемым, добавить graceful shutdown и структурированное логирование через slog. Всё это стандартные практики для Go-сервисов.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
