feat(backend): метрика vidconf_host_info для плашки характеристик сервера
Info-метрика (значение всегда 1, лейблы cpus/ram_mb/gpu_name/vram_mb) — источник GPU для новой панели «Характеристики сервера» в дашборде «Хост и контейнеры» (живые CPU/RAM/диск там же берутся из node-exporter, GPU node-exporter не знает). Данные — уже читаемые Settings.hw_* из .env, которые install.sh пишет по ADR-004. «—» вместо None/пустой строки — однозначный прочерк на панели вместо пустого текста.
This commit is contained in:
@@ -20,6 +20,7 @@ from prometheus_client.samples import Sample
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from api import metrics as metrics_module
|
||||
from core.config import get_settings
|
||||
from core.redis import redis_client
|
||||
from models.conference import Conference
|
||||
from models.session import ConferenceSession
|
||||
@@ -57,6 +58,31 @@ async def test_metrics_endpoint_returns_prometheus_exposition_format(
|
||||
assert "vidconf_http_request_duration_seconds" in families
|
||||
assert "vidconf_pipeline_sessions" in families
|
||||
assert "vidconf_celery_queue_depth" in families
|
||||
assert "vidconf_host_info" in families
|
||||
|
||||
|
||||
async def test_metrics_host_info_gauge_reflects_settings(
|
||||
client: httpx.AsyncClient, monkeypatch: pytest.MonkeyPatch
|
||||
) -> None:
|
||||
"""`vidconf_host_info` отдаёт `HW_*` из настроек как лейблы, значение всегда 1."""
|
||||
settings = get_settings()
|
||||
monkeypatch.setattr(settings, "hw_cpus", 4)
|
||||
monkeypatch.setattr(settings, "hw_ram_mb", 7937)
|
||||
monkeypatch.setattr(settings, "hw_gpu_name", None)
|
||||
monkeypatch.setattr(settings, "hw_vram_mb", None)
|
||||
|
||||
response = await client.get("/metrics")
|
||||
|
||||
samples = _samples(response.text, "vidconf_host_info")
|
||||
value = _sample_value(
|
||||
samples,
|
||||
suffix="vidconf_host_info",
|
||||
cpus="4",
|
||||
ram_mb="7937",
|
||||
gpu_name="—",
|
||||
vram_mb="—",
|
||||
)
|
||||
assert value == 1
|
||||
|
||||
|
||||
async def test_metrics_records_http_latency_by_route(client: httpx.AsyncClient) -> None:
|
||||
|
||||
Reference in New Issue
Block a user