106 lines
2.9 KiB
TypeScript
106 lines
2.9 KiB
TypeScript
export type InfrastructureMonitoringRange = '1h' | '24h' | '7d';
|
|
|
|
export type InfrastructureMetricPoint = {
|
|
timestamp: string;
|
|
value: number;
|
|
};
|
|
|
|
export type InfrastructureServiceStatus = {
|
|
key: string;
|
|
name: string;
|
|
unit: string;
|
|
status: 'healthy' | 'unhealthy' | 'unknown';
|
|
};
|
|
|
|
export type InfrastructureServiceMetricGroup = {
|
|
key: string;
|
|
name: string;
|
|
available: boolean;
|
|
metrics: Array<{
|
|
key: string;
|
|
label: string;
|
|
value: number | null;
|
|
unit: 'percent' | 'seconds' | 'count' | 'per_second' | 'bytes';
|
|
}>;
|
|
};
|
|
|
|
export type InfrastructureAlert = {
|
|
fingerprint: string;
|
|
name: string;
|
|
severity: 'info' | 'warning' | 'critical';
|
|
status: string;
|
|
startedAt: string;
|
|
summary: string;
|
|
description?: string;
|
|
currentValue?: string;
|
|
threshold?: string;
|
|
service?: string;
|
|
instance?: string;
|
|
acknowledged: boolean;
|
|
acknowledgedAt?: string;
|
|
};
|
|
|
|
export type InfrastructureMonitoringOverview = {
|
|
disks: Array<{
|
|
id: string;
|
|
instance: string;
|
|
device: string;
|
|
mountpoint: string;
|
|
mountpoints: string[];
|
|
filesystem: string;
|
|
usagePercent: number | null;
|
|
totalBytes: number | null;
|
|
availableBytes: number | null;
|
|
trend: InfrastructureMetricPoint[];
|
|
}>;
|
|
available: boolean;
|
|
range: InfrastructureMonitoringRange;
|
|
collectedAt: string;
|
|
lastSampleAt: string | null;
|
|
error?: string;
|
|
summary: {
|
|
overallStatus: 'healthy' | 'warning' | 'critical' | 'unknown';
|
|
serviceTotal: number;
|
|
serviceHealthy: number;
|
|
warningAlerts: number;
|
|
criticalAlerts: number;
|
|
activeAlerts: number;
|
|
};
|
|
metrics: {
|
|
cpuUsagePercent: number | null;
|
|
memoryUsagePercent: number | null;
|
|
memoryTotalBytes: number | null;
|
|
memoryAvailableBytes: number | null;
|
|
diskUsagePercent: number | null;
|
|
diskTotalBytes: number | null;
|
|
diskAvailableBytes: number | null;
|
|
networkReceiveBytesPerSecond: number | null;
|
|
networkTransmitBytesPerSecond: number | null;
|
|
load1: number | null;
|
|
uptimeSeconds: number | null;
|
|
};
|
|
trends: {
|
|
cpuUsagePercent: InfrastructureMetricPoint[];
|
|
memoryUsagePercent: InfrastructureMetricPoint[];
|
|
diskUsagePercent: InfrastructureMetricPoint[];
|
|
networkReceiveBytesPerSecond: InfrastructureMetricPoint[];
|
|
networkTransmitBytesPerSecond: InfrastructureMetricPoint[];
|
|
};
|
|
services: InfrastructureServiceStatus[];
|
|
serviceMetrics: InfrastructureServiceMetricGroup[];
|
|
alerts: InfrastructureAlert[];
|
|
};
|
|
|
|
export type InfrastructureAlertThresholds = Record<string, { warning: number; critical: number }>;
|
|
|
|
export type InfrastructureAlertSettings = {
|
|
configVersion: number;
|
|
effectiveVersion: number;
|
|
applyStatus: 'effective' | 'applying' | 'failed';
|
|
lastError: string | null;
|
|
appliedAt: string | null;
|
|
thresholds: InfrastructureAlertThresholds;
|
|
effectiveThresholds: InfrastructureAlertThresholds;
|
|
definitions: Array<{ key: string; label: string; unit: string; min: number; max: number; step: number }>;
|
|
};
|