e1107600ec
Вкладка «Инстанс» сверху показывает нагрузку сервера, ниже — диск и базу, внизу healthcheck с пингом (AGENT.md 7.19). - `Gauge` — полукруглый индикатор: заполняется по значению, меняет цвет на порогах 70 % и 90 %, доступен как `role="meter"`; - процессор и память обновляются раз в секунду (`useInstanceMetrics`), для простоя вкладки опрос останавливается; - два блока диска: «занято / всего» и вес базы (файл + WAL); видимых подписей нет — они раскрываются в тултипе при наведении на значение; - healthcheck: состояние каждой проверки, общий статус, техническая деталь и живой пинг — время ответа инстанса на запрос дашборда в миллисекундах; - переводы ru/en, тесты на индикаторы, формат «занято / всего», тултипы, healthcheck и отсутствие раздела у обычного пользователя.
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { request } from './client';
|
|
|
|
/** Живые метрики инстанса для дашборда в настройках (AGENT.md 7.19). */
|
|
export interface InstanceMetrics {
|
|
cpu: {
|
|
/** Загрузка в процентах от доступного времени (лимит контейнера или ядра). */
|
|
percent: number;
|
|
cores: number;
|
|
source: 'cgroup' | 'host' | '';
|
|
};
|
|
memory: {
|
|
used_bytes: number;
|
|
total_bytes: number;
|
|
percent: number;
|
|
source: 'cgroup' | 'host' | '';
|
|
};
|
|
disk: {
|
|
used_bytes: number;
|
|
total_bytes: number;
|
|
free_bytes: number;
|
|
};
|
|
database: {
|
|
bytes: number;
|
|
wal_bytes: number;
|
|
};
|
|
checks: InstanceCheck[];
|
|
health: 'ok' | 'warn' | 'failed';
|
|
uptime_seconds: number;
|
|
version: string;
|
|
commit: string;
|
|
collected_at: string;
|
|
}
|
|
|
|
export interface InstanceCheck {
|
|
name: string;
|
|
status: 'ok' | 'warn' | 'failed' | 'off';
|
|
message?: string;
|
|
}
|
|
|
|
export const metricsQueryKey = ['instance', 'metrics'] as const;
|
|
|
|
export async function fetchInstanceMetrics(signal?: AbortSignal): Promise<InstanceMetrics> {
|
|
const payload = await request<{ metrics: InstanceMetrics }>(
|
|
'/instance/metrics',
|
|
signal === undefined ? {} : { signal },
|
|
);
|
|
return payload.metrics;
|
|
}
|