Merge pull request 'Access-логи Caddy доезжают в Loki: статусы и латентность прокси наконец видны' (#3478) from feat/3471-caddy-access-logs into main
Some checks failed
Deploy / perimeter-smoke (push) Blocked by required conditions
Deploy / deploy-status (push) Blocked by required conditions
Deploy Infra Host / sync-infra-host (push) Successful in 7s
Deploy / changes (push) Successful in 12s
Deploy / build-backend (push) Successful in 51s
Deploy / build-worker (push) Successful in 47s
Deploy / deploy-caddy (push) Has been skipped
Deploy / build-frontend (push) Successful in 51s
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / perimeter-smoke (push) Blocked by required conditions
Deploy / deploy-status (push) Blocked by required conditions
Deploy Infra Host / sync-infra-host (push) Successful in 7s
Deploy / changes (push) Successful in 12s
Deploy / build-backend (push) Successful in 51s
Deploy / build-worker (push) Successful in 47s
Deploy / deploy-caddy (push) Has been skipped
Deploy / build-frontend (push) Successful in 51s
Deploy / deploy (push) Has been cancelled
This commit is contained in:
commit
2d87f70711
1 changed files with 47 additions and 0 deletions
|
|
@ -133,6 +133,35 @@ gendsgn.ru {
|
||||||
format json
|
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 {
|
route {
|
||||||
# `/metrics` наружу не отдаётся — ни бэкендом, ни фронтом (#3078).
|
# `/metrics` наружу не отдаётся — ни бэкендом, ни фронтом (#3078).
|
||||||
# Сегодня он и так недостижим: бэкенду «Птицы» ниже уходят только
|
# Сегодня он и так недостижим: бэкенду «Птицы» ниже уходят только
|
||||||
|
|
@ -375,6 +404,24 @@ meraocenka.ru {
|
||||||
output file /var/log/caddy/meraocenka.ru.log
|
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). Здесь действует белый список и
|
# `/metrics` наружу не отдаётся (#3078). Здесь действует белый список и
|
||||||
# финальный `handle { respond 404 }`, так что путь и без этой строки не
|
# финальный `handle { respond 404 }`, так что путь и без этой строки не
|
||||||
# проходит, — но у бэкенда «Меры» он ОТКРЫТ без авторизации ради агента
|
# проходит, — но у бэкенда «Меры» он ОТКРЫТ без авторизации ради агента
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue