Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
Prometheus examples (Descrybe v2)
Starter scrape + alert configs for gated GET /metrics and /readyz worker freshness.
Examples only — not a live Prometheus install. No secrets; replace placeholder hosts with private/mesh targets.
| File | Purpose |
|---|---|
scrape.example.yml |
Job snippets: descrybe-api, descrybe-worker, blackbox /readyz |
alerts.example.yml |
RED + sync + scrape-down + worker readiness rules |
Canonical guidance: docs/production-readiness.md — Ops: Prometheus scrape. Cutover checklist: docs/production-checklist.md §1d.
Topology (summary)
Prometheus ──scrape──► API HTTP_ADDR GET /metrics → HTTP RED series
──scrape──► Worker METRICS_ADDR GET /metrics → sync_* series
──probe───► API HTTP_ADDR GET /readyz → worker freshness (HTTP 200)
Public VIP ──deny────► /metrics
- Production Gate: loopback (or
METRICS_PUBLIC=1on a private VIP only). - Worker sync series require
METRICS_ADDR(e.g.127.0.0.1:9091). - Heartbeat age is not a Prom series.
/readyzreturns 503 whenchecks.workerismissing/stale(stale after 60s). On-call triage: JSONworker_last_seen_age_s+checks.worker.
Status (cutover blocker #9)
| Layer | Status |
|---|---|
| Code + example scrape/alert files | CODE DONE |
| Live scrape targets + alertmanager routing on the host | OPS OPEN |