feat(openspec): vesti-alerts — 6 алертов на компоненты VESTI (web/publisher/tunnel/db/stale); OpenSpec change

This commit is contained in:
kpa39l
2026-09-13 15:34:47 +00:00
parent df1ebed76d
commit 62a4f1a0db
7 changed files with 342 additions and 1 deletions
+38
View File
@@ -252,6 +252,44 @@ grafana.nixg.ru {
- В логах caddy много ошибок renew для старых доменов — они имеют
уже выпущенные сертификаты в caddy_data, работает всё.
## Опыт: VESTI — textfile-метрики + встроенный Prometheus Alerting (2026-09-13)
> Ситуация: добавлен дашборд и алерты на компоненты /opt/vesti. Проект
> управляется через OpenSpec: все изменения — только через openspec/change.
### 22. Textfile-коллектор node-exporter для метрик сервиса
node-exporter умеет отдавать произвольные метрики из файлов каталога
(`--collector.textfile.directory=...` ← `ARGS` в /etc/default/prometheus-node-exporter).
Скрипт раз в минуту пишет файл в Prometheus-формате (1 метрика = 1 строка
`name{labels} value`), node-exporter отдаёт их в /metrics — и Prometheus
тащит их обычным job'ом `node` (тот же 9100). Для сервиса достаточно:
`/opt/vesti/scripts/vesti-metrics.sh` → `/var/lib/node_exporter/textfile_collector/vesti.prom`.
Грабля: каталог textfile принадлежит пользователю `prometheus`, скрипт от
root должен делать `chown prometheus:prometheus` (иначе файл появится, но
node-exporter его не прочитает — права!). Запуск: cron.d (root) — каждую минуту.
### 23. Prometheus-алерты: файл alerts.yml + `/api/v1/rules`
В этом стеке алерты — НЕ Grafana, а встроенный механизм Prometheus:
`prometheus.yml` → `rule_files: /etc/prometheus/alerts.yml` (группы/правила в
YAML). Правила видны в `http://127.0.0.1:9090/api/v1/rules` (JSON: groups,
state, query). Перечитываются ТОЛЬКО рестартом прометеуса
(`docker restart prometheus`), НЕ автоматически.
Грабля: `promtool check config /etc/prometheus/prometheus.yml` считает
alerts.yml правило-файлом: «FAILED: field groups not found» при прямом
проверке alerts.yml — это НОРМАЛЬНО (это не самостоятельный конфиг;
проверять через рrometheus.yml, который находит 13 rules).
### 24. OpenSpec для /opt/monitoring
Все изменения проекта — ТОЛЬКО через `openspec/change/` (proposal/design/tasks/
specs/). Формат spec: `## ADDED Requirements` + `### Requirement: X` +
`#### Scenario:` (иначе validate ругается). После внесения: `openspec validate`,
применить, `openspec archive --yes` + обновить STATUS/README/WALKTHROUGH.
## Опыт: дашборд Grafana пустой (NO DATA) — 3 причины подряд (2026-09-02)
> Дата: 2026-09-02. Ситуация: после этапа 6 (tproxy) пользователь сообщил,