feat(instance): метрики всей машины вторым рядом дашборда
Дашборд показывал только контейнер (лимиты профиля), поэтому не было видно, сколько ресурсов у хоста всего. - `sysinfo.NewHostSampler` и `ReadHostMemory` всегда читают `/proc/stat` и `/proc/meminfo`, игнорируя cgroup; - в ответе метрик появились `host_cpu` и `host_memory` (`source: host`); - недоступные источники попадают в проверку `metrics`, а не ломают ручку.
This commit is contained in:
@@ -67,9 +67,11 @@ type Server struct {
|
||||
voice *voice.TokenIssuer
|
||||
// voiceAdmin — RoomService для модерации на стороне SFU.
|
||||
voiceAdmin *voice.AdminClient
|
||||
// sysinfoPaths и cpuSampler — источники живых метрик дашборда инстанса.
|
||||
sysinfoPaths sysinfo.Paths
|
||||
cpuSampler *sysinfo.Sampler
|
||||
// sysinfoPaths, cpuSampler и hostCPUSampler — источники живых метрик
|
||||
// дашборда инстанса: контейнер и вся машина.
|
||||
sysinfoPaths sysinfo.Paths
|
||||
cpuSampler *sysinfo.Sampler
|
||||
hostCPUSampler *sysinfo.Sampler
|
||||
// metricsLimiter — отдельный лимит для ручки метрик (опрос раз в секунду).
|
||||
metricsLimiter *httpx.RateLimiter
|
||||
// health — кэш тяжёлых проверок инстанса.
|
||||
@@ -116,6 +118,7 @@ func New(cfg config.Config, db *database.DB, logger *slog.Logger, deps Deps) *Se
|
||||
voiceAdmin: voice.NewAdminClient(voice.NewIssuer(cfg.LiveKitAPIKey, cfg.LiveKitAPISecret, cfg.LiveKitTokenTTL), cfg.LiveKitAPIURL),
|
||||
}
|
||||
s.cpuSampler = sysinfo.NewSampler(s.sysinfoPaths)
|
||||
s.hostCPUSampler = sysinfo.NewHostSampler(s.sysinfoPaths)
|
||||
switch {
|
||||
case deps.Permissions != nil:
|
||||
s.perms = deps.Permissions
|
||||
|
||||
Reference in New Issue
Block a user