Единый observability-стек: Prometheus + Loki + Grafana + Caddy auth-гейт
Отдельный от db+vaultwarden compose-файл (разный жизненный цикл, свой deploy-workflow) — единственное место сбора для backend, лендинга и каждой прокси-ноды, которые физически живут на других серверах. Prometheus скрейпит наружу (сам ходит в /metrics на тех хостах — там нужно только открыть порт метрик для IP этого VPS). Loki, наоборот, принимает пуши логов ИЗВНЕ — порт 3100 публикуется наружу и обязательно фильтруется firewall'ом по IP тех хостов. Grafana не торчит в интернет напрямую (127.0.0.1-only) — единственный вход через Caddy с forward_auth, гейтящим по cookie-сессии netrunner-backend (GET /api/v1/admin/observability/check, Owner/Moderator). 3 provisioned дашборда (backend/landing/прокси-ноды). Список scrape-таргетов для прокси-нод (observability/targets/nodes.json) генерится и заливается автоматически из netrunner-proxy при каждом деплое нод — вручную ничего не поддерживается. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Собирает докер-логи ТОЛЬКО этого хоста (Postgres/Vaultwarden/backup из
|
||||
# netrunner-data/docker-compose.yml + prometheus/loki/grafana этого же
|
||||
# compose — docker_sd_configs видит все контейнеры хоста через общий
|
||||
# docker.sock, не только контейнеры этого конкретного compose-проекта).
|
||||
#
|
||||
# Логи с backend/landing/каждой прокси-ноды приходят СЮДА ЖЕ по сети —
|
||||
# на каждом из тех хостов свой отдельный тонкий promtail, пушащий прямо в
|
||||
# Loki на этом VPS (см. netrunner-backend/promtail-config.yml после
|
||||
# переноса — `clients.url` там указывает на публичный адрес этого хоста).
|
||||
server:
|
||||
http_listen_port: 9080
|
||||
grpc_listen_port: 0
|
||||
|
||||
positions:
|
||||
filename: /tmp/positions.yaml
|
||||
|
||||
clients:
|
||||
- url: http://loki:3100/loki/api/v1/push
|
||||
|
||||
scrape_configs:
|
||||
- job_name: docker_service_logs
|
||||
docker_sd_configs:
|
||||
- host: unix:///var/run/docker.sock
|
||||
refresh_interval: 5s
|
||||
relabel_configs:
|
||||
- source_labels: ["__meta_docker_container_name"]
|
||||
regex: "/(.*)"
|
||||
target_label: "container"
|
||||
pipeline_stages:
|
||||
- docker: {}
|
||||
- json:
|
||||
expressions:
|
||||
level: level
|
||||
module: target
|
||||
message: message
|
||||
- labels:
|
||||
level:
|
||||
module:
|
||||
Reference in New Issue
Block a user