import { useEffect, useState } from "react"; import { getPublicConfig } from "./api"; const DASHBOARDS = [ { uid: "netrunner-backend", title: "Backend" }, { uid: "netrunner-landing", title: "Лендинг" }, { uid: "netrunner-proxy-nodes", title: "Прокси-ноды (ядро)" }, ] as const; export default function ObservabilityPage() { const [grafanaUrl, setGrafanaUrl] = useState(undefined); const [active, setActive] = useState<(typeof DASHBOARDS)[number]["uid"]>(DASHBOARDS[0].uid); useEffect(() => { getPublicConfig().then((cfg) => setGrafanaUrl(cfg.grafana_url)); }, []); if (grafanaUrl === undefined) { return null; } if (!grafanaUrl) { return (

Grafana ещё не настроена (GRAFANA_PUBLIC_URL не задан на сервере).

); } return (

Мониторинг

{DASHBOARDS.map((d) => ( ))}
{/* Ключ на iframe меняет DOM-узел при смене дашборда — проще, чем городить логику перезагрузки src внутри одного и того же iframe. */}