diff --git a/caddy/sites/apps.caddy b/caddy/sites/apps.caddy index 5a47e1bd..1bc227e7 100644 --- a/caddy/sites/apps.caddy +++ b/caddy/sites/apps.caddy @@ -133,6 +133,35 @@ gendsgn.ru { format json } + # #3471: копия access-лога на stdout. За 3 часа наблюдения в + # gendesign-caddy-1 не было НИ ОДНОЙ строки http.log.access — только ACME/ + # TLS/warn от reverse_proxy, статусы/латентность/RPS прокси не видны в + # Loki вообще. Alloy на этом хосте уже собирает stdout контейнеров через + # journald (`loki.source.journal "host"`, + # ops/metrics/alloy/alloy-apps.alloy) — второй bind-монт не нужен. + # + # Секреты в query (`?secret=`, `?token=` и т.п., см. инцидент #3154) режет + # УЖЕ РАБОТАЮЩИЙ `loki.process.scrub_credentials` (#3354, тот же список + # имён параметров, что в app/core/log_scrub.py) — он стоит на пути ЛЮБОГО + # journal-лога, включая этот, поэтому второй слой скраба здесь не заводим. + # + # `log_skip` — общий для ВСЕХ логгеров сайта флаг на запрос (Caddy не даёт + # скипать выборочно по конкретному логгеру), поэтому /health и статика + # Next пропадают заодно и из файлового gendsgn.ru.log выше, не только из + # копии на stdout. Это осознанный побочный эффект, не только экономия: + # /health — 32% строк gendsgn.ru.log в измеренном сегменте (12.09.2026, + # 240 из 742 строк за ~4ч, аптайм-монитор раз в минуту) без диагностической + # ценности, и именно он гонит файловый лог через 50MiB roll_size так часто. + log access_stdout { + output stdout + format json + } + + @noisy_access_log { + path /health /_next/static/* + } + log_skip @noisy_access_log + route { # `/metrics` наружу не отдаётся — ни бэкендом, ни фронтом (#3078). # Сегодня он и так недостижим: бэкенду «Птицы» ниже уходят только @@ -375,6 +404,24 @@ meraocenka.ru { output file /var/log/caddy/meraocenka.ru.log } + # #3471: та же копия access-лога на stdout, что у gendsgn.ru — см. + # развёрнутый комментарий там (Alloy/journald, scrub_credentials #3354, + # log_skip общий на все логгеры сайта). `/trade-in/_next/static/*` — 5.1% + # строк meraocenka.ru.log в измерении 12.09.2026 (3782 из 73810 за + # ~17.6 суток без ротации, roll_size здесь вообще не настроен) — статика + # Next не может быть источником 5xx бэкенда. `/health` на этом домене не + # проксируется (allowlist ниже отдаёт по нему 404), но матчер добавлен для + # единообразия с gendsgn.ru — вреда от него ноль. + log access_stdout { + output stdout + format json + } + + @noisy_access_log { + path /health /trade-in/_next/static/* + } + log_skip @noisy_access_log + # `/metrics` наружу не отдаётся (#3078). Здесь действует белый список и # финальный `handle { respond 404 }`, так что путь и без этой строки не # проходит, — но у бэкенда «Меры» он ОТКРЫТ без авторизации ради агента