Files

64 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Design: add-gotosocial-dashboard
## Context
См. proposal.md — Why. Метрики GtS уже поступают в VictoriaMetrics (job
`gotosocial` в prometheus.yml active, `gotosocial_instance_total_users`
отвечает с метками `{service="gotosocial",host="bigbox",
instance="bigbox:9464",otel_scope_name="GoToSocial"}`). Задача — только
визуализация: дашборд Grafana + provisioning.
## Goals / Non-Goals
**Goals**
- Дашборд `GoToSocial` в Grafana (папка gotosocial) со стандартными
панелями: доступность, инстанс, воркеры, HTTP, SQL, процесс.
- Автоимпорт через provisioning, как у vesti/vinogorod/nodes.
**Non-Goals**
- Алерты — отдельное изменение (как vesti-alerts).
- Изменения docker-compose/prometheus.yml — не нужны.
## Decisions
- **Формат дашборда**: копия стиля `grafana/dashboards/vesti/vesti.json`
(Grafana 11.1, datasource uid "Prometheus", stat/timeseries панели).
- **Доступность**: expr `gotosocial_instance_total_users` + stat (mapping
0=DOWN/1=UP по наличию значения; VI с блек-значением если нет данных —
зелёный/красный как в vesti).
- **Панели по группам** (row-группировка как vesti):
1. Доступность (stat): instance total users (инстанс жив)
2. Instance: `gotosocial_instance_total_{users,statuses,federating_instances}`
3. Воркеры: 6 пулов `gotosocial_workers_*_{count,queue}` — count на одном
графике (stacks), queue на другом (столбики)
4. HTTP: `http_server_requests_total` (rate, все routes — sum),
`http_server_requests_active` (gauge)
5. SQL: `go_sql_connections_{open,in_use}`, `go_sql_query_timing_milliseconds{quantile="0.5"}`
6. Процесс: `process_resident_memory_bytes` (GB), `process_cpu_seconds_total`,
`process_open_fds`
- **Метка фильтров**: везде `instance="bigbox:9464"` (или service — что
уникальнее; у GtS instance уже bigbox:9464).
- **Provisioning**: новый провайдер в dashboards.yml, folder: gotosocial,
path: /var/lib/grafana/dashboards/gotosocial.
## Risks / Trade-offs
- [Крупный дашборд, много панелей] → писать аккуратно, проверять импорт по
grafana.db.
- [Панель доступности по instance_total_users] — если инстанс упадёт,
метрика пропадёт, stat станет красным (нет данных) — ок как индикатор.
- [Новые метрики в новых версиях GtS] — дашборд читает по именам; при
обновлении GtS проверить, что имена не поменялись.
## Migration Plan
1. Создать `grafana/dashboards/gotosocial/gotosocial.json`.
2. Добавить провайдер `gotosocial-dashboards` в dashboards.yml.
3. Подождать 30-60с; проверить импорт через grafana.db
(`SELECT uid FROM dashboard WHERE uid LIKE 'gotosocial%'`).
4. Обновить STATUS.md (задача закрыта).
5. Commit+push (gitverse) + mirror-sync.
## Open Questions
- Алерты на недоступность/очереди GtS — отдельный change, здесь нет.