2b399d0838
Split the contour across the two prod hosts and retune for the small main host: - Gate vpn+bot to the telegram-local profile. The CI test deploy now passes --profile telegram-local so the test contour still brings them; the prod main host omits both, and the prod bot runs standalone from docker-compose.bot.yml. - docker-compose.prod.yml (main-host overlay): publish caddy 80/443 (no host caddy in prod; caddy owns ACME) and gateway 9443 (the remote bot dials in over mTLS); GOMAXPROCS=2, smaller memory caps and 7d Prometheus retention for the 2 vCPU / 1.9 GiB host. It launches deliberately undersized; resize reactively. - docker-compose.bot.yml: standalone bot for the tg host (no VPN, OTLP off since otelcol is unreachable from there, dials the main host's bot-link). - Add node_exporter + a Prometheus scrape so host memory pressure (the OOM signal on the tight main host), not just per-container docker_stats, is visible. - Soften AWG_CONF to a default: only the profiled vpn sidecar consumes it, and compose interpolates profiled-out services too, so prod must not require it.
26 lines
1.0 KiB
YAML
26 lines
1.0 KiB
YAML
# Prometheus scrape config for the Scrabble contour. The OTel Collector exposes
|
|
# every service's metrics on its prometheus exporter; Prometheus scrapes that one
|
|
# endpoint. Retention (15d) is set on the command line in docker-compose.yml.
|
|
global:
|
|
scrape_interval: 30s
|
|
evaluation_interval: 30s
|
|
|
|
scrape_configs:
|
|
# otelcol exposes both the services' OTLP metrics and the docker_stats receiver's
|
|
# per-container resource metrics (CPU/memory/network) on one endpoint.
|
|
- job_name: otelcol
|
|
static_configs:
|
|
- targets: ["otelcol:9464"]
|
|
- job_name: prometheus
|
|
static_configs:
|
|
- targets: ["localhost:9090"]
|
|
# Postgres server metrics (connections, cache hit ratio, transactions, db size).
|
|
- job_name: postgres_exporter
|
|
static_configs:
|
|
- targets: ["postgres_exporter:9187"]
|
|
# Host-level metrics (memory/CPU/disk). Matters most on the prod main host's tight
|
|
# 1.9 GiB budget, where total host memory is the OOM-proximity signal.
|
|
- job_name: node
|
|
static_configs:
|
|
- targets: ["node_exporter:9100"]
|