mirror of
https://gitverse.ru/kpa39l/monitoring.git
synced 2026-09-29 09:55:09 +00:00
64 lines
3.5 KiB
Markdown
64 lines
3.5 KiB
Markdown
# 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, здесь нет. |