414667062c
Отдельный от 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>
39 lines
1.5 KiB
YAML
39 lines
1.5 KiB
YAML
# Собирает докер-логи ТОЛЬКО этого хоста (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:
|