Деплой метрик перечитывает конфиг Prometheus, а не только кладёт его на диск #3476
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3476
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3467-metrics-deploy-reload"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает #3467, пункт из #3471.
Что было
GET /api/v1/status/runtimeinfoу боевого Prometheus отдавалlastConfigTime = 2026-08-27T18:12:27Z, ровно равныйstartTimeконтейнера. Шестнадцать суток любая правкаops/metrics/prometheus/**доезжала до диска и не вступала в силу, при этом Deploy Metrics был зелёный. Это тот же класс, что #3448: объявлено не равно исполняется, и отрицательного признака у него нет.Что сделано
Шаг после существующего ожидания здоровья Prometheus, по образцу того, как в этом же workflow уже сделано для Caddy:
promtool check configиpromtool check rulesвнутри контейнера.POST /-/reload, с чтениемlastConfigTimeдо и после.lastConfigTimeне изменился или пуст, шаг красный. Работающий Prometheus при этом не тронут.Тест
backend/tests/ops/test_3467_prometheus_reload.py, 6 проверок: валидация конфига и правил присутствует, reload идёт строго после неё и внутри её ветки, провал валидации не приводит к reload, приёмка сравниваетlastConfigTimeдо и после.Соседи стека, проверено попутно
ALERTMANAGER_RERENDERED(#3078, #3136), потому что SIGHUP и/-/reloadтам не помогают: переиспользуется инод открытого файла.up -dне пересоздаёт контейнер при правке бинд-маунта, а полноценного reload у него нет, только частичный по SIGHUP. Не чинилось, вынесено в findings.Три последних пункта — предмет отдельного тикета, в этот PR не тянул.
Приёмка на проде
После деплоя
GET /api/v1/rulesдолжен отдатьContainerNearMemoryLimitс выражением, начинающимся сcontainer_memory_working_set_bytes— то есть правка #3464 наконец вступит в силу. Это же и доказательство, что шаг работает.