Files
MikrotikManager/lib/scheduler-settings.ts
T

102 lines
4.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** Типы и подписи для UI планировщика / страницы «Сбор данных» (совпадают с ответами API). */
/** Последний ключ — движок оповещений (читает БД после коллекторов; см. описание `alert_engine`). */
export const SCHEDULER_JOB_KEYS = [
"router_logs",
"traffic",
"servers_rest_ping",
"uptime_resources",
"uptime_ping",
"uptime_speed",
"internet_path",
"gre_bgp",
"certificates_renew",
"backups",
"geoip_update",
"alert_engine",
] as const
export type SchedulerJobKey = (typeof SCHEDULER_JOB_KEYS)[number]
export const SCHEDULER_JOB_LABELS: Record<string, string> = {
router_logs: "Логи MikroTik",
traffic: "Трафик",
servers_rest_ping: "Серверы: REST API",
uptime_resources: "Uptime: ресурсы",
uptime_ping: "Uptime: ping",
uptime_speed: "Uptime: speed",
internet_path: "Internet Path",
gre_bgp: "GRE + BGP",
certificates_renew: "Сертификаты: автообновление",
backups: "Бэкапы",
geoip_update: "GeoIP: базы GeoLite2",
alert_engine: "Оповещения",
}
/** Кратко — для раскрытой карточки прогона и подсказок. */
export const SCHEDULER_JOB_DESCRIPTIONS: Record<string, string> = {
router_logs: "REST-сбор буфера memory в PostgreSQL. Параметры — в панели «Логи MikroTik» ниже; live ускоряет опрос выбранного устройства до 2 секунд.",
traffic: "Опрос интерфейсов RouterOS, запись сэмплов трафика в PostgreSQL.",
servers_rest_ping:
"Проверка доступности каталога серверов: GET /system/identity (RouterOS REST), замер задержки без полного опроса.",
uptime_resources: "CPU, память, температура и др. метрики с устройств.",
uptime_ping: "ICMP-пинг по настроенным пробам мониторинга.",
uptime_speed: "Фоновые btest / speed-пробы между узлами (при включённых пробах).",
internet_path: "Снимок данных для карты интернет-маршрута на dashboard (WAN/JH/EN, route+runtime, speed-пробы).",
gre_bgp:
"Опрос GRE-туннелей и BGP-сессий на включённых серверах, запись сэмплов в PostgreSQL для движка оповещений.",
certificates_renew:
"Автообновление сертификатов, выпущенных через UI (ACME DNS-01 / Cloudflare). Отключается на странице «Сертификаты», если ACME ведёт RouterOS.",
backups:
"Плановые бэкапы RouterOS по расписанию со страницы «Бэкапы»; тик планировщика раз в минуту.",
geoip_update:
"Проверка и доставка GeoLite2 Country/ASN с зеркала P3TERX в backend/storage/geoip (ETag, атомарная подмена). Управление — в настройках NetFlow.",
alert_engine:
"Оценка правил по данным из PostgreSQL (сэмплы пишут джобы сбора, в т.ч. «GRE + BGP» и «Серверы: REST API»).",
}
export interface CollectorSettingsDto {
enabled: boolean
intervalSec: number
probeIntervalSec?: number
speedIntervalSec?: number
retentionDays: number
lastCollectedAt: string | null
lastDurationMs: number | null
lastError: string | null
collectorRunning?: boolean
}
export interface SchedulerJobStatusDto {
jobKey: string
enabled: boolean
intervalSec: number
running: boolean
lastFinishedAt: string | null
lastStatus: string | null
lastDurationMs: number | null
lastError: string | null
}
export interface SchedulerStatusDto {
jobs: SchedulerJobStatusDto[]
}
export interface UptimeSettingsDto extends CollectorSettingsDto {
resourcesEnabled?: boolean
pingEnabled?: boolean
speedEnabled?: boolean
scheduler?: SchedulerStatusDto
}
export interface SchedulerRunRowDto {
id: string
jobKey: string
startedAt: string
finishedAt: string
status: string
error: string | null
durationMs: number
/** JSON снимка результатов прогона (серверы, пробы, speed и т.д.) */
resultJson?: unknown
}