This commit is contained in:
@@ -34,6 +34,69 @@ export interface Server {
|
||||
inventory?: Inventory;
|
||||
}
|
||||
|
||||
export type MonitorType = "http" | "tcp" | "icmp" | "tls";
|
||||
export type MonitorStatus = "up" | "down" | "pending";
|
||||
|
||||
export interface MonitorTarget {
|
||||
url?: string;
|
||||
host?: string;
|
||||
port?: number;
|
||||
method?: string;
|
||||
expected_status?: number;
|
||||
keyword?: string;
|
||||
tls_warn_days?: number;
|
||||
}
|
||||
|
||||
export interface MonitorState {
|
||||
status: MonitorStatus;
|
||||
last_check_at?: string;
|
||||
latency_ms: number;
|
||||
message?: string;
|
||||
cert_expiry_at?: string;
|
||||
fails: number;
|
||||
}
|
||||
|
||||
export interface Monitor {
|
||||
monitor_id: string;
|
||||
name: string;
|
||||
type: MonitorType;
|
||||
target: MonitorTarget;
|
||||
interval_sec: number;
|
||||
runner: string; // "server" or a server_id
|
||||
retries: number;
|
||||
enabled: boolean;
|
||||
channel_ids?: string[];
|
||||
state: MonitorState;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface MonitorInput {
|
||||
name: string;
|
||||
type: MonitorType;
|
||||
target: MonitorTarget;
|
||||
interval_sec: number;
|
||||
runner: string;
|
||||
retries: number;
|
||||
enabled: boolean;
|
||||
channel_ids?: string[];
|
||||
}
|
||||
|
||||
export interface Incident {
|
||||
incident_id: string;
|
||||
monitor_id: string;
|
||||
started_at: string;
|
||||
resolved_at?: string;
|
||||
cause?: string;
|
||||
}
|
||||
|
||||
export interface Rollup {
|
||||
monitor_id: string;
|
||||
period_start: string;
|
||||
checks: number;
|
||||
up_count: number;
|
||||
sum_latency: number;
|
||||
}
|
||||
|
||||
export interface ConsoleConnectRequest {
|
||||
server_id: string;
|
||||
protocol: string;
|
||||
@@ -278,6 +341,35 @@ export const api = {
|
||||
return `curl -fsSL "${window.location.origin}/update" | bash`;
|
||||
},
|
||||
|
||||
// Monitors
|
||||
listMonitors(): Promise<Monitor[]> {
|
||||
return request<Monitor[]>("/monitors");
|
||||
},
|
||||
|
||||
getMonitor(monitorId: string): Promise<Monitor> {
|
||||
return request<Monitor>(`/monitors/${monitorId}`);
|
||||
},
|
||||
|
||||
createMonitor(input: MonitorInput): Promise<Monitor> {
|
||||
return request<Monitor>("/monitors", { method: "POST", body: JSON.stringify(input) });
|
||||
},
|
||||
|
||||
updateMonitor(monitorId: string, input: Partial<MonitorInput>): Promise<void> {
|
||||
return request<void>(`/monitors/${monitorId}`, { method: "PUT", body: JSON.stringify(input) });
|
||||
},
|
||||
|
||||
deleteMonitor(monitorId: string): Promise<void> {
|
||||
return request<void>(`/monitors/${monitorId}`, { method: "DELETE" });
|
||||
},
|
||||
|
||||
getMonitorIncidents(monitorId: string): Promise<Incident[]> {
|
||||
return request<Incident[]>(`/monitors/${monitorId}/incidents`);
|
||||
},
|
||||
|
||||
getMonitorUptime(monitorId: string): Promise<Rollup[]> {
|
||||
return request<Rollup[]>(`/monitors/${monitorId}/uptime`);
|
||||
},
|
||||
|
||||
getLatestAgentVersion(): Promise<{ version: string }> {
|
||||
return request<{ version: string }>("/agent/latest-version");
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user