Телеметрия: метрики и Grafana — сегодня тихий отказ не виден ничем #3078
Closed
opened 2026-08-24 16:14:39 +00:00 by bot-backend
·
5 comments
No Branch/Tag specified
main
fix/3469-showcase-schedule
fix/3443-caddy-selfdowntime
fix/3463-db-statement-timeout
fix/3448-caddy-only-detection
fix/metrics-deploy-reloads-prometheus
feat/landing-showcase-band
fix/3452-corridor-advisory-zone
fix/alert-value-is-not-the-ratio
fix/3449-geocoder-cancel-orphan
fix/3451-tvf-deals-rooms
fix/msk-collector-net-retry
feat/msk-yandex-import
fix/3051-fetch-deals-rooms-dropped
feat/msk-collector-cian
fix/3256-asking-to-sold-buckets
fix/3083-estimate-throughput
fix/3274-part2b-gate
fix/3274-part2a-caddy-retry
fix/perimeter-smoke-retry-on-no-response
fix/3274-zero-downtime-frontend
fix/3274-part1-deploy-swap
fix/3412-cian-instance-relaunch
fix/3415-bucket-done-only-if-phases-ok
chore/backend-pool-wiring-tails
fix/3398-pool-ops-off-event-loop
fix/3402-followups-ban-kinds-curl
feat/3404-proxy-run-attribution
fix/cian-captcha-is-platform-refusal
refactor/3390-single-runs-module
fix/3398-estimator-valuations-proxy-pool
fix/3386-estimator-imv-proxy-pool
fix/3394-cian-sweep-houses-proxy-pool
fix/3393-interrupted-runs-outside-streaks
fix/drain-marks-inflight-app-tasks
fix/3384-no-proxy-at-batch-start
fix/3197-yandex-newbuilding-proxy-pool
fix/3376-price-history-decimal-slips
fix/backend-proxy-pool-flags
fix/3197-cian-history-backfill-proxy-pool
fix/3288-sidecar-ban-status-code
fix/3375-yandex-fullload-on-bucket-contract
fix/3380-deploy-metrics-alloy-recreate
fix/3354-alloy-query-secret-scrub
fix/3360-admin-prefix-anon-404
fix/3368-yandex-leaf-complete-flag
fix/3369-domclick-cancel-checkpoint
fix/3225-domklik-diff-percent
fix/smoke-history-path
fix/3288-breaker-block-kind
fix/3355-drain-mark-fullloads
fix/3191-yandex-detail-completeness
fix/3359-containment-cian-yandex
fix/3323-payment-init-fail-409
fix/3172-freshness-by-data
fix/3288-avito-ban-per-source
fix/3253-domclick-house-fields
fix/3312-defer-interval-minutes
fix/3324-rbac-401-oracle
fix/3274-deploy-window-error-page
fix/3343-auth-latency-flaky
fix/3315-exhaustive-containment-skip
fix/3338-backfill-save-false
fix/3339-thin-market-badge
fix/3154-glitchtip-secret-log-leak
fix/3333-drain-mark-all-sweeps
fix/3323-imv-thin-market-gate
fix/3324-mera-perimeter
fix/3323-coverage-copy-honesty
fix/3332-domclick-counter-identity
fix/3324-ptica-deploy-gate
fix/3316-role-single-source
fix/3319-citysweep-checkpoint
fix/3322-rosseti-stable-key
fix/3320-v2-honest-zeros
fix/3321-draft-fields-survive
fix/mera-mobile-nav-and-sticky
fix/audit-form-ux
fix/audit-coverage-500
fix/audit-dkp-price
fix/audit-accuracy-window
fix/audit-faq-contradiction
fix/perimeter-smoke-after-payments
feat/b2c-landing-honest-copy
feat/b2c-landing-live-numbers
feat/b2c-v3-becomes-root
feat/b2c-v3-port-v1-blocks
feat/b2c-report-redesign
feat/b2c-landing-v3-full
feat/3192b-yandex-phones
feat/3168-backfill-cursor-resume
fix/3118-domclick-no-proxy
fix/3170-yandex-combo-checkpoint
feat/3074-newbuilding-sweep-resume
fix/3163-infra-topic-default
fix/3156-tgbot-error-type
feat/3163-infra-topic-split
fix/3161-alertmanager-route-prefix
fix/3155-prometheus-no-alertmanager
feat/2997-drop-listings-geom-idx
fix/3122-boot-reap-observable
feat/3122-boot-reap
feat/3051-houses-region-code
feat/3074-cian-anchor-checkpoint
feat/3051-region-registry
fix/2656-anchor-ratio-freshness
fix/3114-scrub-credentials-in-logs
fix/3078-grafana-single-auth
fix/3081-honest-progress
fix/3063-pro-seller-derive
fix/3074-checkpoint-survives-claim
fix/3082-estimate-concurrency
fix/3044-enriched-total-seen
fix/telegram-pin-selectel-override
chore/compose-host-parameterised-resources
fix/revisit-floor-lateral-lookup
fix/avito-detail-fields
fix/3034-avito-fingerprint
fix/avito-offers-per-page
feat/3033-avito-secondary-filter
fix/2203-restore-drill-readiness
feat/2203-backup-staleness-and-forgejo
fix/2990-clean-start-initdb
fix/2924-yandex-jk-resolve-tried-at
fix/2992-upsert-distinct-gate
fix/2998-rosreestr-q2-partitions
feat/2936-null-penalty-flag
fix/2996-mislocated-houses-watchdog
fix/1781-secondary-only-param
fix/2934-risks-coverage
fix/2464-three-small
fix/2464-two-docstrings
fix/2464-zouit-label
fix/2464-building-pct-guard
fix/2464-download-binary-retry
fix/2986-permits-key
fix/2464-tep-docstring
fix/2464-act-date-backfill
fix/2464-area-bin-null
fix/2464-act-date-citation
fix/2464-detect-kind
fix/2464-status-negation
fix/2464-objective-zombie-sweep
fix/2464-inert-retry-config
fix/2464-default-profile-unique
fix/2464-zombie-any-running
fix/2464-catalog-skipped-counter
fix/2464-heat-loader-tx
fix/2464-objective-run-stuck
fix/2464-catalog-waf-breaker
fix/2464-lock-key-order
fix/2464-backfill-waf-abort
fix/2464-docs-vs-code
fix/2464-land-reservation-dedup
fix/2464-manual-list-validation
fix/2464-capacity-savepoints
fix/2464-leads-window-naming
fix/2464-zouit-count-label
fix/2464-catalog-batch-commits
fix/2464-html-zoning-fallback
fix/2950-lock-wait-observable
fix/2956-freshness-counts-failed-harvest
fix/2950-host-lock
fix/2953-nominatim-throttle
fix/2950-deploy-docker-lock
fix/2464-ird-lookups-savepoint
fix/2464-parcels-savepoint-pair
fix/2674-deal-floor-display
docs/2854-stale-justifications
chore/2857-drop-placeholder-columns
fix/2855-probe-protected-path
fix/2674-has-panorama
fix/house-imv-anchor-era
fix/2674-quality-cadastre-column
fix/sber-freshness-guard
fix/dkp-corridor-as-of
fix/scheduler-resume-checkpoint
fix/quarter-target-from-neighbour
fix/2687-domclick-ban-kind-platform
fix/2814-address-backfill
fix/2677-house-anchor-renovation
feat/tradein-paid-retention
chore/ci-config-cleanup
feat/mera-b2c-privacy
feat/tradein-payments-schema
chore/2674-dead-code-sweep
fix/2674-matching-tiers-honesty
fix/2674-avito-full-load-coverage
fix/2674-admin-metrics-honesty
fix/2674-writers-honor-schema
fix/2674-alerts-actually-fire
fix/2679-scraper-deploy-parity
fix/2674-house-imv-params
fix/2666-discount-plausibility-gate
feat/2435-cian-house-enrichment
fix/2657-domclick-block-not-done
feat/2571-login-throttle
fix/2660-display-freshness-segment
fix/2658-loud-skip-status
fix/2603-geocode-city-hint-tails
feat/2600-per-source-proxy-health
feat/tradein-v2-exposure-in-result-card
fix/tradein-avito-browser-proxy-pool
chore/tradein-cut-wasteful-scraping
fix/tradein-v2-deals-fallback-visible
fix/tradein-city-stamp-geo-guard
fix/tradein-cian-oblast-secondary
fix/tradein-implausible-build-year
fix/tradein-snapshot-query-perf
fix/tradein-asking-sold-city-scope
chore/tradein-purge-dead-mobileproxy
feat/tradein-asocks-rotation
fix/tradein-region-code-foreign-cities
fix/tradein-proxy-pool-self-healing
fix/tradein-backfill-listing-city-from-url
fix/tradein-geocode-queue-active-only
fix/tradein-geocode-city-hint
chore/tradein-remove-yandex-scripts
fix/tradein-listing-city-from-sweep
chore/tradein-remove-yandex-geocoder
chore/tradein-remove-n1
fix/tradein-geocoder-fail-closed
fix/tradein-ui-city-label-clip
feat/tradein-ui-city-hint
fix/tradein-coords-backfill-city-gate
fix/tradein-geocoder-city-default
fix/tradein-anchor-geo-scope
fix/tradein-avito-detail-oblast
feat/tradein-price-bands-refresh
feat/tradein-caddy-cutover
fix/tradein-team-nav-and-401
feat/tradein-team-dashboard
fix/tradein-team-list-order
feat/tradein-team-api
feat/tradein-login-ui
feat/tradein-auth-core
feat/tradein-auth-password-foundation
feat/tradein-auth-users-schema
fix/tradein-rbac-test-user2-expired
fix/tradein-auth-revoke-user2
fix/2013-avito-cohort-null
fix/rbac-test-user2-expired
fix/expire-brusnika-trial-access
feat/tradein-domclick-house-sku-schema
chore/design-sync-tradein
fix/tradein-deploy-scraper-paths-filter
fix/tradein-no-numberless-house-insert
fix/tradein-dedup-fias-pass-no-geoguard
feat/tradein-fias-estimate-frontend
fix/tradein-dedup-by-fias
feat/tradein-fias-tier-matching
fix/tradein-v2-uiux-p1
fix/objective-lots-dedup-1964
fix/audit-followups-1953
feat/concept-house-picker-1965-stage3b
feat/concept-house-catalog-1965-stage3a
feat/concept-live-massing-1965-stage2b
feat/concept-recompute-1965-stage2a
feat/concept-section-1965-stage1
fix/best-layouts-per-object-snapshot-1956
fix/deficit-segmentation-1959
feat/tradein-hedonic-ground-floor
fix/report-map-points-1961
fix/report-microcopy-1963
fix/report-nspd-zoning-1962
fix/report-frontend-display-1953
perf/tradein-estimate-audit
perf/best-layouts-objects-first
fix/171-migration-path
perf/171-objective-crm-report-month-idx
fix/1926-app-log-stdout
fix/estimator-tiebreaker-nanalogs
fix/1917-fetch-json-network-retry
fix/1926-scrape-runs-total-seen
fix/1781-house-fk-source-identity
feat/39-osrm-per-category
feat/1746-utility-infra-map
fix/test-849-savepoint-count
fix/parking-economics-by-class
fix/zouit-engineering-area-gate
fix/zoning-resolution-decouple
feat/dcf-velocity-schedule
feat/zone-regulation-backfill
chore/mock-financial-estimate
fix/finmodel-split-disclosure-threshold
feat/finmodel-financing
feat/finmodel-sitefinder-bridge
feat/finmodel-dcf
feat/finmodel-price-calibration
feat/finmodel-cost-cascade
audit/1871-p2-estimator-dedup-split
audit/1871-p2-avito-coord
audit/1871-p3-uiux
audit/1871-p2-invest-moi
audit/1871-p2-velocity-market
audit/1871-p1-3-isreal-stubs
audit/1871-p1-2-ghost-anchor-guard
audit/1871-p1-scenarios-collapse
revert/site-finder-v2
fix/v2-remove-resource-legend
fix/v2-map-legend-position
feat/site-finder-v2-map-light-polish
rollback/site-finder-home-light
feat/site-finder-v2-cockpit
rollback/sf-old-analysis-design
feat/ptica-tabs-6-6-reports-params
fix/ptica-vri-row
feat/ptica-map-glyphs-sitefinder-dark
fix/ptica-3d-preview-product-verdict
fix/ptica-button-fontsize
fix/ptica-parity-data-mapping
chore/ptica-iso-preview-spin
fix/ptica-inter-map-product
fix/ptica-visual-parity
fix/ptica-left-rail
feat/ptica-cockpit-complete-bottom
feat/ptica-default-and-rich-map
feat/ptica-real-ksit-frontend
feat/tradein-ekb-geoportal-buildings
fix/sf-feedback-batch
feat/avito-newbuilding-sweep
feat/browser-concurrent-pool
fix/backfill-kadastr-column
fix/avito-proactive-ip-rotate
feat/activate-domclick-sweep
feat/avito-newbuilding-capture
fix/house-id-fk-realtime-link
fix/migration-162-table-if-exists
feat/riasurt-sverdl-layers-108
fix/sber-dataset-paths-902
fix/conflict-resolution-freshness-1539
feat/objective-lots-history-writer-307-obj6
feat/velocity-mv-61
fix/objective-mapping-is-reviewed-gate-307-obj2
fix/cian-detail-rich-fields
fix/avito-novostroyki-segment
feat/yandex-novostroyki-newflat
fix/ci-dedup-runner-storm-1709
fix/emiss-pk-granularity-1687
feat/listings-segment-param-1188
fix/inn-regex-word-boundary-1682
fix/excel-deficit-horizon-1590
fix/admin-scrape-validation
fix/admin-leads-interval-cast-1694
fix/dkp-corridor-doc-p10p90-1695
fix/weather-wind-d-allnone
test/residential-zone-rawprops-1681
fix/domrf-badge-regex-narrow-1686
feat/yandex-camoufox-transport
fix/score-sat-factor-1509
fix/base-pace-room-bucket-1593
fix/gate-verdict-no-blocker-1617
fix/confidence-deal-count-window-1637
fix/match-economics-1511-1512
fix/listings-partial-indexes-1398
fix/smart-suggestions-threshold-1503
fix/dkp-corridor-percentile-1520
fix/enrich-economics-window-1513
fix/leads-stats-window-1383
fix/poi-score-scale-1486
fix/geo-weight-floor-1633
fix/inn-regex-context-1640
fix/domrf-status-classify-1609
fix/emiss-period-dedup-1606
fix/cian-paginate-tail-1393
fix/normalize-zero-fill-guard-1638
fix/supply-view-devgroup-key-1650
fix/residential-zone-detect-1353
fix/score-label-threshold-1357
fix/trend-ratio-vprior-zero-1508
fix/district-median-dedup-1352
fix/supply-layers-overlap-1355
fix/pdf-expires-at-1530
fix/quartirography-area-bucket-1406
fix/cad-zones-multipolygon-1344
fix/sold-pct-market-verdict-1407
fix/week-review-finish
fix/week-review-backend-v2
feat/plan-vectorization-spike-299
fix/1668-analyze-confidence
fix/1667-metro-block
fix/1666-layout-velocity-beat
chore/remove-n1-scraper
fix/cian-kitchen-area
feat/yandex-detail-backfill
feat/avito-detail-backfill
fix/best-layouts-bucket-normalization
fix/gknspecial-incremental-commit-per-prefix
fix/okn-objects-full-registry-load
fix/parcel-ird-overlap-except-expand
fix/report-assembler-confounded-keys
fix/job-settings-json-persist-v2
fix/nspd-geo-soft-time-limit-passthrough
fix/nspd-soft-time-limit-v2
fix/pilot-request-modal-validation
fix/recommend-mix-saturation-latest-snapshot
fix/scrape-cadastre-fail-counter-v2
fix/izyatie-ocr-cad-normalize
fix/job-settings-panel-json-state-persist
fix/noise-loader-savepoint-per-row
fix/objective-sync-config-bare-except
fix/parcel-snapshot-mdash-double-escape
fix/poi-loader-leap-year-date-replace
fix/scrape-cadastre-permanent-fail-counter
fix/usermenu-analyst-role-label
feat/location-948b-r
feat/location-entity-948b
feat/insight-entity-948a
feat/analyst-role-audit-962
feat/cbr-inflation-macro-946
feat/cian-zhk-resolve-972
perf/forecast-parallel-horizons-1129
feat/newbuilding-enrich-backfill-972
feat/emiss-macro-indicators-946
feat/rosstat-emiss-macro-946
ci/frontend-vitest-job
chore/frontend-vitest-wkt-tests
feat/forecast-meta-footer
feat/forecast-future-supply-competitors
feat/forecast-docx-pptx-buttons
feat/forecast-scoring-panel
feat/forecast-product-tz-block
feat/market-map-layers-999
feat/forecast-chart-section6
feat/forecast-export-pptx-959
feat/forecast-export-docx-959
feat/forecast-export-ui-959
feat/forecast-export-telegram-959
feat/forecast-export-md-959
feat/analyze-response-contract-961
feat/competitor-velocity-spatial-fallback-968
fix/frontend-healthcheck-hostname
feat/analyze-market-coords-999
fix/site-finder-entry-crash-1001
feat/horizon-selector-996
feat/forecast-section-998
feat/forecast-endpoint-horizon-enqueue
feat/forecast-celery-task-persist
feat/forecast-orchestrator-service
feat/demand-supply-months-of-inventory
feat/wire-district-resolver
feat/district-vocab-reconciliation
fix/affordability-market-spread
fix/backtest-sig-gate
feat/wire-978-almon-rate-regime
feat/backtest-oos-almon-seasonal
ci/forgejo-pytest-gate
fix/tradein-praktika-logo-form-scroll
feat/yandex-exhaustive-price-room
feat/794-sber-time-adjust
chore/bot-harness-tuning
docs/agent-usage-throttle-qa-terminal
fix/avito-sweep-single-run-guard
chore/analyst-inbound-queue-tradein-db
feat/801-preview-full-wt
chore/bot-safety-followups
feat/tradein-avito-imv-fix
feat/tradein-repair-coef-calibration
feat/tradein-avito-houses-fix
feat/tradein-address-precision
feat/tradein-backfill-prioritize-listings
feat/tradein-geocode-deals-nominatim
feat/tradein-geocode-deals-from-houses
feat/tradein-same-building-match
feat/claude-envvars-and-stale-cron
No results found.
Labels
Clear labels
Находки полного мульти-агентного ревью (Claude Fable 5, 2026-06-09)
Новое ТЗ от Ген Геныча (июнь 2026): Site Finder v2 — ИИ-прогноз продуктовой стратегии девелопера. Актуальный приоритет.
Admin UI / internal tools / pipeline tracker
Аналитика данных / matching
Authentication / authorization / multi-tenancy
Автоматизация / cron / scheduler
Something isn't working
Коммерческая воронка / пилоты / pipeline / реестр ПО
Operational housekeeping
Forgejo Actions / build pipeline
152-ФЗ / реестр ПО / legal / TOS
Data sources, parsers, ETL
Уникальные данные — sales tracker, CRM aggregation
README / runbooks / onboarding
This issue or pull request already exists
Developer experience / build speed
New feature or request
Feedback from Max (Senior partner)
Generative Design — concept generation engine
Pending team sync / decision
Human review/decision required
Monitoring / metrics / logs / Sentry / Uptime
Kill-switch — all autonomous bots pause
Latency / throughput / DB query tuning
Critical / production-blocker
High priority
Normal priority
Низкий приоритет (follow-up, tech-debt)
Backend Python — FastAPI, Celery, scrapers
DB migrations, indexes, SQL
docker-compose, Caddy, workflows
Frontend — Next.js, React, TypeScript
Tests, smoke, Playwright
Скрапперы (Avito/Cian/Yandex/Rosreestr)
Security audit / secrets / vulnerabilities
Site Finder scoring quality & data layer
Stage 1: Generative MVP (нед 2-7)
Stage 2: Site Finder MVP (нед 8-12)
Blocked — needs human intervention
Closed, completed
Raw/fuzzy task filed by human — auto-analyst подхватывает: code-archeology + декомпозиция в actionable scope/* + status/ready (или split на под-issues)
Reviewer/QA вернул worker на доработку — worker сам чинит свой PR (fixup), НЕ требует human (в отличие от status/blocked)
PR merged, awaiting smoke test
Ready for pickup by worker bot
PR open, awaiting code review
Work in progress (worker claimed)
Технический долг
Trade-In MVP проект
User experience / responsive / conversion
Week review 1 — находки multi-agent аудита проекта (2026-06-14)
This will not be worked on
Исходно-разрешительная документация — слой ограничений участка для analyze-таблицы
Trade-In Estimator — проект оценки вторичного жилья
Fable 5 ревью
Находки полного мульти-агентного ревью (Claude Fable 5, 2026-06-09)
GG-форсайт
Новое ТЗ от Ген Геныча (июнь 2026): Site Finder v2 — ИИ-прогноз продуктовой стратегии девелопера. Актуальный приоритет.
admin
Admin UI / internal tools / pipeline tracker
analytics
Аналитика данных / matching
auth
Authentication / authorization / multi-tenancy
automation
Автоматизация / cron / scheduler
bug
Something isn't working
business
Коммерческая воронка / пилоты / pipeline / реестр ПО
chore
Operational housekeeping
ci
Forgejo Actions / build pipeline
compliance
152-ФЗ / реестр ПО / legal / TOS
data
Data sources, parsers, ETL
data-moat
Уникальные данные — sales tracker, CRM aggregation
docs
README / runbooks / onboarding
duplicate
This issue or pull request already exists
dx
Developer experience / build speed
enhancement
New feature or request
feedback/max
Feedback from Max (Senior partner)
generative
Generative Design — concept generation engine
needs-discussion
Pending team sync / decision
needs-human
Human review/decision required
observability
Monitoring / metrics / logs / Sentry / Uptime
pause-bots
Kill-switch — all autonomous bots pause
performance
Latency / throughput / DB query tuning
priority/p0
Critical / production-blocker
priority/p1
High priority
priority/p2
Normal priority
priority/p3
Низкий приоритет (follow-up, tech-debt)
scope/backend
Backend Python — FastAPI, Celery, scrapers
scope/db
DB migrations, indexes, SQL
scope/devops
docker-compose, Caddy, workflows
scope/frontend
Frontend — Next.js, React, TypeScript
scope/qa
Tests, smoke, Playwright
scrapers
Скрапперы (Avito/Cian/Yandex/Rosreestr)
security
Security audit / secrets / vulnerabilities
site-finder
Site Finder scoring quality & data layer
stage/1
Stage 1: Generative MVP (нед 2-7)
stage/2
Stage 2: Site Finder MVP (нед 8-12)
status/blocked
Blocked — needs human intervention
status/done
Closed, completed
status/needs-analysis
Raw/fuzzy task filed by human — auto-analyst подхватывает: code-archeology + декомпозиция в actionable scope/* + status/ready (или split на под-issues)
status/needs-fix
Reviewer/QA вернул worker на доработку — worker сам чинит свой PR (fixup), НЕ требует human (в отличие от status/blocked)
status/qa
PR merged, awaiting smoke test
status/ready
Ready for pickup by worker bot
status/review
PR open, awaiting code review
status/wip
Work in progress (worker claimed)
tech-debt
Технический долг
tradein
Trade-In MVP проект
ux
User experience / responsive / conversion
week ревью 1
Week review 1 — находки multi-agent аудита проекта (2026-06-14)
wontfix
This will not be worked on
ИРД
Исходно-разрешительная документация — слой ограничений участка для analyze-таблицы
вторичка
Trade-In Estimator — проект оценки вторичного жилья
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
ИРД
вторичка
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3078
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Телеметрия: метрики и Grafana для GenDesign
Зачем
Ниже — только случаи, где отсутствие измерения уже стоило времени или денег. Это не гипотезы, каждый разбирался постфактум руками.
dealsне обновлялась 39 суток, при этомrosreestr_dkp_importкаждый день рапортовалdoneсtotal_seen=0. Цитата из issue: «планировщик зелёный, монитор зелёный, данных нет». Поймала бы: freshness-метрикаnow() - max(scraped_at)по таблице-приёмнику + алерт наrows_ingested=0 при status=done.house_imv_backfillмёртв 34 дня (saved:0, errors:35/35, все прогоныdone, #2698); ciannewbuilding_enrich— 0 записей 8 суток, 200 попыток, всеdone(#2767);listing_source_snapshotуходил в zombie 6 ночей подряд, осиротевшие запросы висели 46 ч и держали горизонт vacuum (#2607). Поймала бы:success_ratio = saved/checkedна прогон, а неstatus.cancelled, и это ровно самые дорогие:avito_full_load_exhaustive2 ч 58 мин,yandex_city_sweep2 ч 33 мин,cian_full_load2 ч 10 мин (#3074). Поймала бы: счётчикcancelledпо source + потерянные часы сбора.listings: 198 апдейтов на строку, HOT-обновлений 0,43 %, TOAST 15 ГБ при ~230 МБ живого, WAL 7,02 ГБ/сутки при ~4 пользовательских расчётах в сутки (#2992, #2989). Поймали бы: WAL/сутки иn_tup_updvsn_tup_hot_updпо таблицам.avito_detail_backfillуничтожены пересозданием при обычном деплое через 17 минут; «сегодня было около двадцати деплоев» (#2741). Поймал бы: счётчик отказов на прогон с меткой причины, живущий вне lifecycle контейнера.grep prometheus|statsd|opentelemetryпоbackend/,tradein-mvp/,docker-compose*.yml— ноль),/metricsне существует ни в одном бэкенде. Сравнить Beget vs Poincare по latency/RPS/CPU объективно нечем; задержка Beget↔Selectel никогда не измерялась (#3032, оценка 10-15 мс).Что уже есть
errors.gendsgn.ru)traces_sample_rate0.05, интеграции Starlette/FastAPI/Celery/SQLAlchemy/httpx. Trade-in:traces_sample_rate=0.0— только ошибкиdone, 0 строк) не порождает исключения вовсеdocker-compose.uptime.yml, отдельный проектgendesign-uptime) + внешнийops/uptime-healthcheck.sh/health200-м». Дефолтный список проб — толькоhealth|/health|200, остальной/api/*под Basic-Auth и анонимно даёт 401x-logginganchor, driver journald)SystemMaxUse=500Mставится вручную drop-in'ом, не через deploy.yml/healthотдаёт{status, environment, version}— без проверки БД/Redis/очереди. Trade-in/healthнаружу через Caddy не проксируется/healthпри мёртвом Postgres — штатное поведениеtradein-mvp/backend/app/api/v1/glitchtip.py). Штатный алертинг GlitchTip нем:alerts_projectalertпуст,EMAIL_URL=consolemail://печатает письма в stdoutИтог: третьего дашборда не появляется. Появляется отсутствующий сейчас класс данных — числовые ряды и алерты по трендам вместо алертов по событиям.
Что мерить
HTTP / API — требует инструментирования: добавить
/metricsв оба бэкенда (сегодня его нет). Latency p50/p95/p99, RPS, доля 4xx/5xx по роутам. Альтернатива без кода на первом шаге — Caddy-метрики (gendsgn.ru.log, ретенция не проверена).Celery и скрапперы — почти всё уже в БД, просто не визуализируется:
kn_scrape_runs/nspd_scrape_runs(started_at,finished_at,heartbeat_at,status), счётчики saved/checked/errors. Отсюда без кода: success_ratio, freshness приёмника, утилизация,cancelledпо source. Требует кода: длина очереди Celery (Redisllen), возраст самой старой задачи,duration_ms— колонок длительности в ORM нет, единственный хитjob_settings.rate_ms. Предусловие:#2702— из 487 прогонов 153 «длятся» дольше своего окна >1,5×, крайний случайcian_history_backfillid=346: окно 0,032 с приduration_sec18 230. Пока start/finish врут, графики throughput тоже врут.Postgres — postgres_exporter, без кода: WAL/сутки,
n_tup_updvsn_tup_hot_upd, рост TOAST, bloat, connections, replication/vacuum-горизонт.pg_stat_statementsвключён только у trade-in; для Site Finder-PG у сервиса нет секцииcommandвовсе — потребуется правка root-compose и рестарт прод-БД.Хост — node_exporter + cAdvisor, без кода: CPU/RAM/диск/IO, per-container память. Отдельно нужен диск: на проде 79 % занято, 13 ГБ логов forgejo/glitchtip без ротации (#2761).
Бизнес — из БД, без кода: расчёты/сутки (сейчас ~4), доля активных объявлений (26 203 мёртвых числятся активными, #2994), возраст свежайших сделок. Плюс синтетический heartbeat, доказывающий доставку алерта до человека: в GlitchTip-проекте МЕРЫ не ушло наружу ни одного сообщения с 30 мая (#2673).
Где размещать — решение владельца
30.08 хосты разъезжаются:
CADDY_SITES=apps(gendsgn.ru, meraocenka/merahome/meraotsenka) → Selectel Poincare,CADDY_SITES=infra(obsidian./errors./git.) → остаётся на Beget. Три варианта, не выбираю за владельца:gendesign_sharedбез сети наружу; site-блок вcaddy/sites/apps.caddy. Минус: при падении хоста падает и мониторинг.Смежное:
ops/uptime-healthcheck.shне прописан ни в одном cron — вops/crontab-poincare.cronего нет по замыслу (должен крутиться на другом хосте). После переезда хост для него надо назначить явно, иначе watchdog не запущен нигде.Технически стек копируется с
docker-compose.obsidian.ymlодин-в-один: свой project (-p gendesign-metrics), external networkgendesign_shared,exposeбезports, свойdeploy-metrics.yml. Grafana закрывается тем жеimport caddy/users.caddy.snippet(basic_auth bcrypt) внутриroute{}—forward_authв репозитории не используется нигде (0 хитов). Нужен A-recordmetrics.илиgrafana.gendsgn.ru; auto-TLS подхватит.Стоимость
Объявленными
mem_limitрасписано ~11,4 ГиБ (root-compose ~3968 МиБ: osrm 1.5g + osrm-walk 1.5g + glitchtip-web 512m + glitchtip-worker 384m; trade-in ~7680 МиБ: browser 2560m + postgres 3g + backend 768m + scraper 640m + tgbot 256m + frontend 384m). На хосте 62-64 ГБ. Место под стек метрик (2-4 ГБ: Prometheus 1-2g, Grafana 512m, exporter'ы по 64-128m) есть с большим запасом.Предупреждение честности ради: цифра 62/64 ГБ взята из комментариев
ops/selectel-bootstrap.sh, а не из живогоfreeна хосте — проверить перед стартом. И сумма лимитов ≠ потребление: безmem_limitвообще работают postgres (Site Finder), redis, backend, frontend, worker (--concurrency=8), beat, caddy, glitchtip-auth-forwarder. Реальное потребление сверху не ограничено, бюджет брать с запасом. Диск: retention Prometheus задать явно (15d), с учётом что на проде уже 79 % занято.Что НЕ входит
started_at/finished_at(#2702) — предусловие, а не часть этой задачи.Приёмка
/metricsотвечает на обоих бэкендах, закрыт от анонимного доступа.cancelled. На дашборде воспроизводится кейс #2998 (зелёныйdoneпри 0 строк виден как аномалия).n_tup_updvsn_tup_hot_upd, рост TOAST, connections.mem_limitпроставлены.Открытые вопросы владельцу
metrics.gendsgn.ruилиgrafana.gendsgn.ru? Нужен A-record.shared_preload_libraries = pg_stat_statements— согласован? Без него query-метрик по Site Finder не будет.ops/uptime-healthcheck.shпосле переезда — назначить явно.Разбиение
Задача больше одного захода (новый compose-стек + инструментирование двух бэкендов + exporter'ы + дашборды + алерты + деплой-воркфлоу — заведомо >5 файлов и >8 ч). Предлагаемый сплит, каждая часть ~200-500 строк:
docker-compose.metrics.ymlпо шаблонуdocker-compose.obsidian.yml,.forgejo/workflows/deploy-metrics.yml, site-блок вapps.caddyпод basic_auth, node_exporter + cAdvisor. Приёмка: Grafana открывается, хостовые графики живые.pg_stat_statementsуже включён), дашборд БД. Отдельно и позже —shared_preload_librariesдля Site Finder-PG, требует рестарта./metricsв обоих бэкендах, HTTP-гистограммы, длина очереди Celery. Единственная часть, трогающая прод-код.kn_scrape_runs/nspd_scrape_runsи таблиц-приёмников (success_ratio, freshness, утилизация), дашборд, воспроизводящий #2998/#2698/#2767.Части 1-2 независимы от 3; 4 зависит от фикса честных таймстампов (#2702); 5 — последняя.
Проверил вопрос «а что если полностью на Grafana» разведкой по коду и живым данным. Границы issue подтвердились, но три вещи в скоупе стоит поправить.
Полного переезда не получается — трекер ошибок Grafana OSS не заменяет. Не «дорого» и не «неудобно», а нечем: ни один компонент Grafana OSS не принимает Sentry DSN/envelope (у OTel Collector есть
sentryexporter— он шлёт в Sentry, receiver протокола числится in progress). Error fingerprinting и issue-инбокс документированы только в Grafana Cloud Frontend Observability; в self-hosted Grafana+Loki это плоские логи без группировки, без assign/resolve, без детекта регрессий. Faro покрывает только фронтенд, а серверные исключения Python — основной источник — не собирает вообще.На живых данных: 584 события свёрнуты в 50 unresolved issue, дедуп 11.7:1, топ-issue = 147 событий одной строкой. В Loki это 584 строки.
Цена отказа:
sentry_sdk.initв двух бэкендах (6 и 5 интеграций), 3092 строки в 15 файлах, точечныеcapture_exceptionв 96 файлах. Отдельно 549 строк скрубберов — это не фича GlitchTip, а 152-ФЗ и вычистка Telegram-токена из locals стек-фрейма; преемник обязан воспроизвестиbefore_send, иначе ПДн поедут в новый бэкенд. Плюс контрактLoggingIntegration(event_level=ERROR): каждыйlogger.errorуже является событием трекера, на это прямо ссылаются комментарии вmain.py. Экономии тоже нет — GlitchTip забронировал 896 МБ, Grafana+Prometheus+Loki того же порядка.Метрики и логи — наоборот, чистый выигрыш. Метрик сегодня нет вообще: ни Prometheus, ни экспортеров,
journald— единственный канал; мы не знаем ни RSS во времени, ни latency ручек, ни глубины очереди Celery. Loki monolithic рекомендован до ~20 ГБ/сутки, у нас ~39 МБ/сутки — запас в 500 раз.Правки в скоуп
mem_limit, диск на 70%. Pull-скрейп через линк переживёт: p50 17.50 / p95 17.70 мс, потерь 0% (#3032).ops/glitchtip-auth-forwarder. 408 строк + 77 тестов + отдельный сервис в compose, при этом егоbefore_sendдропает все 401-события — в трекер он сегодня не шлёт ничего. 401-лог Caddy естественнее отдать promtail→Loki. Чистые 485 строк минус.Что тянет за собой
#2761 (ротация логов) из «навести порядок в journald» становится предусловием Loki:
glitchtip-workerльёт 31.9 МБ/сутки — 81% всего роста журнала. Тот же поток пойдёт в Loki и на общий RAID1. Делать до этой задачи, не после. Туда же — ретенция GlitchTip:grep retention/EVENT_RETENTIONдаёт ноль попаданий, 729 МБ растут без политики.Вебхук tradein→GlitchTip (219 строк + 291 тест, секрет в query, сеть
gendesign_shared) ломается переездом сам по себе — после разъезда это cross-host по публичному URL. Переписывать придётся независимо от решения по Grafana.Не измерено, нужно до старта
dfнигде не зафиксирован. Если Loki встанет туда, его чанки лягут на тот же NVMe RAID1, что оба кластера Postgres: всплеск логов забивает диск и валит БД.grafana.*вapps.caddyилиinfra.caddy? Ошибка = недостижимый ACME challenge и лимит LE 5 failed validations/hostname/hour.docker-compose.prod.ymlиcaddy/**триггерят оба деплоя из одного файла — стек метрик нужен отдельным compose или под profiles.Уточнение к предыдущему комментарию. Владелец решил держать инфраструктуру на Beget, и замеры показали, что она туда помещается — это меняет архитектуру задачи в лучшую сторону.
Замеры (SSH, не оценка)
Beget: 6 vCPU, 11960 МиБ RAM, диск 145 ГБ на 70%, своп занят 1783 МиБ, 25 контейнеров ≈ 5.2 ГиБ. Крупнейший —
forgejo2.324 ГиБ, 44% всей памяти контейнеров,mem_limitнет.Selectel: выделенный сервер, не облако (
systemd-detect-virt= none), Ryzen 5 5600G, 63592 МиБ RAM (свободно 49 ГБ), RAID 910 ГБ занят на 8% — 798 ГБ свободно, load 0.01, 3 контейнера.Это закрывает вопрос «свободное место на Poincare не измерено» из прошлого комментария.
После 30.08 продуктовый стек уходит с Beget и освобождает 2.58 ГиБ. Остаётся инфра 2.63 ГиБ +
infra-postgres~0.2 + наблюдаемость 1.0–1.5 ≈ 4.1 ГБ из 11.96. Своп рассосётся сам, без единого рубля.Что меняется: Grafana ставим на Beget, а не на Selectel
Прошлый вывод («стек метрик увезти на Selectel») отменяется замерами. Grafana + Prometheus + Loki встают на Beget рядом с GlitchTip, и это снимает почти все ограничения плагина.
Чтение GlitchTip — прямой SQL-датасорс, а не Sentry-плагин. Схема годится:
issue_events_issueevent(RANGE-партиции поreceived;issue_id,organization_id,level,type,tags jsonb) +issue_events_issue(project_id,first_seen). Готовые агрегатыIssueIndex(count, last_seen, status, level) иIssueAggregateсdateв составном PK дают ряды и топ-N без сканов сырья. Правок в GlitchTip ноль, нужен read-only пользователь. #3061 уже вынес эту базу в отдельный кластер, поэтому продуктовый Postgres такой доступ не задевает.Почему не плагин, хотя он официально документирован GlitchTip (
glitchtip.com/documentation/integrations, обычный read-only Auth Token, Grafana ≥10.4, Cloud не нужен):stats_v2с фильтром по проекту → 500, открытый баг GlitchTip #381 с 2025-01-10. Per-project панели не заведутся.grafana/sentry-datasourceноль issue со словом glitchtip: апстрим связку не тестирует и не заявляет неподдержку. В 2.2.6 Issues перевели на lifetimefirstSeen/lastSeen— при ином сериализаторе GlitchTip панели молча исказятся.Плагин можно оставить вторым, необязательным источником — но нести на нём основные панели не стоит.
Логи: Alloy, не Promtail. У Promtail EOL 2 марта 2026, ставить его в 2026 нельзя. Alloy читает journald нативно (
loki.source.journal, дефолт/var/log/journalи/run/log/journal). Две грабли: пользовательalloyобязан быть в группахadmиsystemd-journal, иначе тихо ноль записей; в контейнере путь задавать явно (path="/var/log/journal"), иначеSD_JOURNAL_LOCAL_ONLYскроет хостовые логи — монтировать/var/log/journalи/etc/machine-id, systemd внутри контейнера не нужен.Транспорт push-овый — входящих портов на Selectel не открываем. Alloy на Selectel шлёт логи через
loki.writeи метрики черезprometheus.remote_writeисходящим HTTPS с basic_auth. Приёмнику метрик нужен--web.enable-remote-write-receiver(endpoint/api/v1/write), приёмники прячем за Caddy с TLS и авторизацией. Наши 39 МБ/сутки против рекомендованного потолка Loki ~20 ГБ/сутки.Топология это позволяет: между хостами нет ни VPN, ни приватной сети, ни туннеля (единственные хиты grep — ручной
ssh -N); наружу опубликованы только 80/443, firewall Selectel — default deny incoming + SSH/80/443. Push обходит всё это без единого нового правила.Побочный выигрыш: наблюдатель оказывается у другого провайдера, чем наблюдаемое. Упадёт Selectel — Grafana на Beget жива и покажет ровно это.
Скоуп задачи
stats_v2.mem_limitнаforgejo— он один ест 44% памяти контейнеров и ничем не ограничен. Дешевле и полезнее любого апгрейда тарифа.ops/glitchtip-auth-forwarder(485 строк, егоbefore_sendдропает все 401-события — в трекер он не шлёт ничего).CADDY_SITESиCOMPOSE_PROFILESв git или runbook — сейчас задаются руками на хостах.Проверить руками до старта
\dtв базе glitchtip на нашей 6.1.6 — до версии 4.x приложение называлосьissues_*, имена таблиц и колонок (receivedпротивtimestamp) и наличиеIssueIndex/IssueAggregateнадо подтвердить глазами. Это несущий факт для SQL-пути.ENABLE_OBSERVABILITY_APIу GlitchTip 6 включает/metricsчерез django-prometheus — но это метрики HTTP/БД/Django, не ошибки в разрезе issue. Годится только для здоровья сервиса.Проверка после разворачивания: части 1–2 собирают данные с обоих хостов
Стек поднялся не с первого раза — понадобились #3105 (поиск привилегированной роли), #3103 (монтирование сниппетов Caddy), #3106 (падение агента из-за переменной чужой роли) и #3109 (cAdvisor 0.55.1). Проверил, что после всего этого он реально собирает, а не просто «зелёный».
Контейнеры: на Beget — Prometheus, Loki, Grafana, Alloy, node-exporter, cAdvisor, pg-exporter-infra. На Poincare — Alloy, node-exporter, cAdvisor, pg-exporter-gendesign, pg-exporter-tradein.
Метрики в Prometheus (агенты пушат через
remote_write, поэтому в списке scrape-целей их нет — там только Grafana, Loki и сам Prometheus; данные искал запросом, а не по целям):node— оба хостаpostgres— все три базыapp— оба бэкенда (#3102)integrations/self— сам AlloyТочечно:
node_load1— 2 серии,node_memory_MemAvailable_bytes— 2,pg_up— 3,container_memory_usage_bytes— 42 (cAdvisor с обоих хостов).Логи в Loki: метка
hostимеет оба значения —appsиinfra. Набор меток:container,host,job,level,node,service_name,unit.То есть покрытие полное: хостовые метрики с двух машин, все три базы, оба приложения, контейнеры и логи.
Что остаётся не закрытым
Alertmanager не поднят — профиль
alertsвключается только когда заданыMETRICS_TELEGRAM_BOT_TOKENиMETRICS_TELEGRAM_CHAT_ID, а они не заданы. Это осознанный гейт из джобыserver, и он правильный: Alertmanager с пустым токеном стартовал бы зелёным и молча никому не слал.Но практический итог сейчас такой: метрики и логи собираются, а предупреждать некому. Ради этого стек и заводился — правила в
ops/metrics/prometheus/rules/infra.ymlесть, срабатывать им некуда. Переменные секретные, задать их может только владелец.Отдельно стоит иметь в виду при смене IP (#3110): агенты отправляют данные на
metrics.gendsgn.ru, то есть на Beget по имени — от смены адреса Poincare это не зависит и переживёт замену без правок.Перепроверка 27.08.2026 (после пересборки базы 25-26.08 и переезда продукта на Poincare). Тело тикета писалось 20-24.08 по старой инфраструктуре.
Несущая посылка тела опровергнута: «метрик нет ни одной,
/metricsне существует ни в одном бэкенде» — сегодня неверно.Замерено:
/metricsесть в обоих бэкендах (metrics.py); Prometheus видитup: app 2, node 2, postgres 3;/api/v1/rules);/api/v2/alertsиз-за префикса external-url), #3163 (инфра-алерты и клиентские инциденты делили одну тему форума). Доставку подтвердил владелец.Что осталось в тикете: дашборд «Скрапперы» и бизнес-серии (
scrape_run/ freshness / success_ratio), дашборды Postgres и хоста, jobcadvisorне виден вup.Что выбросить из тела: замер baseline latency/RPS/CPU «до и после переезда» — окно прошло, точка «до» упущена безвозвратно.
Закрываю по ревизии 01.09.2026: посылка «метрик нет» опровергнута перепроверкой 27.08 — /metrics в обоих бэкендах, Prometheus up (app 2, node 2, pg 3), 16 правил алертинга, Alertmanager доставляет. Открытые вопросы стека вынесены отдельно: #3158 (нужна ли Grafana-алертика при живом Prometheus), #3157 (наблюдаемость доставки GlitchTip).