feat(UptimeMonitor): add uptime monitor scheduler settings and endpoints for improved monitoring functionality
Publish Fast Tabler Docker image / build-and-push-fast (push) Failing after 2m47s
Publish Fast Tabler Docker image / build-and-push-fast (push) Failing after 2m47s
This commit is contained in:
@@ -89,6 +89,8 @@ export default function SettingsPage() {
|
||||
const [uptimeMonitorIntervalSeconds, setUptimeMonitorIntervalSeconds] = useState('120');
|
||||
const [uptimeMonitorCheckType, setUptimeMonitorCheckType] = useState('http');
|
||||
const [uptimeMonitorCacheSeconds, setUptimeMonitorCacheSeconds] = useState('120');
|
||||
const [uptimeMonitorSchedulerEnabled, setUptimeMonitorSchedulerEnabled] = useState(true);
|
||||
const [uptimeMonitorSchedulerIntervalMinutes, setUptimeMonitorSchedulerIntervalMinutes] = useState('2');
|
||||
const [serversList, setServersList] = useState([]);
|
||||
const [sidebarSearch, setSidebarSearch] = useState('');
|
||||
const [activeSection, setActiveSection] = useState(() => {
|
||||
@@ -272,6 +274,12 @@ export default function SettingsPage() {
|
||||
setUptimeMonitorCacheSeconds(
|
||||
data?.uptimeMonitorCacheSeconds != null ? String(data.uptimeMonitorCacheSeconds) : '120'
|
||||
);
|
||||
setUptimeMonitorSchedulerEnabled(data?.uptimeMonitorSchedulerEnabled !== false);
|
||||
setUptimeMonitorSchedulerIntervalMinutes(
|
||||
data?.uptimeMonitorSchedulerIntervalMinutes != null
|
||||
? String(data.uptimeMonitorSchedulerIntervalMinutes)
|
||||
: '2'
|
||||
);
|
||||
const raw = data?.trafficInterfaces;
|
||||
setTrafficInterfacesSelected(
|
||||
Array.isArray(raw)
|
||||
@@ -391,6 +399,11 @@ export default function SettingsPage() {
|
||||
0,
|
||||
parseInt(uptimeMonitorCacheSeconds, 10) || 120
|
||||
),
|
||||
uptimeMonitorSchedulerEnabled: Boolean(uptimeMonitorSchedulerEnabled),
|
||||
uptimeMonitorSchedulerIntervalMinutes: Math.max(
|
||||
1,
|
||||
Math.min(1440, parseInt(uptimeMonitorSchedulerIntervalMinutes, 10) || 2)
|
||||
),
|
||||
trafficInterfaces: Array.isArray(trafficInterfacesSelected)
|
||||
? trafficInterfacesSelected.map((p) => ({
|
||||
serverKey: p.serverKey,
|
||||
@@ -825,6 +838,33 @@ export default function SettingsPage() {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-3 mb-2">
|
||||
<div className="form-check form-switch mb-2">
|
||||
<input
|
||||
className="form-check-input"
|
||||
type="checkbox"
|
||||
id="uptimeMonitorSchedulerEnabled"
|
||||
checked={uptimeMonitorSchedulerEnabled}
|
||||
onChange={(e) => setUptimeMonitorSchedulerEnabled(e.target.checked)}
|
||||
disabled={saving}
|
||||
/>
|
||||
<label className="form-check-label" htmlFor="uptimeMonitorSchedulerEnabled">
|
||||
Планировщик: обновлять кеш проверок по расписанию (после перезапуска контейнера кеш обновится автоматически)
|
||||
</label>
|
||||
</div>
|
||||
<FormField
|
||||
label="Интервал планировщика (мин)"
|
||||
name="uptimeMonitorSchedulerIntervalMinutes"
|
||||
type="number"
|
||||
value={uptimeMonitorSchedulerIntervalMinutes}
|
||||
onChange={setUptimeMonitorSchedulerIntervalMinutes}
|
||||
placeholder="2"
|
||||
helpText="Как часто планировщик проверяет все jumphost/home (1–1440 мин). По умолчанию 2 мин."
|
||||
disabled={saving}
|
||||
min={1}
|
||||
max={1440}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
|
||||
@@ -187,7 +187,14 @@ export default function UptimeMonitorPage() {
|
||||
setChecking(false);
|
||||
}, [jumphosts]);
|
||||
|
||||
// Автопроверка по интервалу в фоне (при открытии страницы данные берём из кеша, без немедленного запуска проверки)
|
||||
// Первый запуск проверки через несколько секунд после загрузки (после перезапуска контейнера кеш может быть пустым или устаревшим)
|
||||
useEffect(() => {
|
||||
if (jumphosts.length === 0) return;
|
||||
const t = setTimeout(runChecks, 4000);
|
||||
return () => clearTimeout(t);
|
||||
}, [jumphosts.length, runChecks]);
|
||||
|
||||
// Автопроверка по интервалу в фоне
|
||||
useEffect(() => {
|
||||
if (jumphosts.length === 0) return;
|
||||
intervalRef.current = setInterval(runChecks, checkIntervalMs);
|
||||
|
||||
Reference in New Issue
Block a user