feat: add vendor tenant metrics dashboard
Fleet overview page at /vendor/metrics showing per-tenant operational metrics (agents, CPU, heap, HTTP requests, ingestion drops, uptime). Queries each tenant's server via the new POST /api/v1/admin/server-metrics/query REST API instead of direct ClickHouse access, supporting future per-tenant CH instances. Backend: TenantMetricsService fires 11 metric queries per tenant concurrently over a 5-minute window, assembles into a summary snapshot. ServerApiClient.queryServerMetrics() handles the M2M authenticated POST. Frontend: VendorMetricsPage with KPI strip (fleet totals) and per-tenant table with color-coded badges and heap usage bars. Auto-refreshes every 60s. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -155,3 +155,48 @@ export interface AuditLogFilters {
|
||||
page?: number;
|
||||
size?: number;
|
||||
}
|
||||
|
||||
// Tenant metrics (from server /api/v1/admin/metrics/summary)
|
||||
export interface AgentMetrics {
|
||||
live: number;
|
||||
stale: number;
|
||||
dead: number;
|
||||
shutdown: number;
|
||||
}
|
||||
|
||||
export interface IngestionMetrics {
|
||||
bufferDepth: number;
|
||||
dropsPerMinute: number;
|
||||
}
|
||||
|
||||
export interface ServerMetrics {
|
||||
cpuUsage: number;
|
||||
heapUsedBytes: number;
|
||||
heapMaxBytes: number;
|
||||
uptimeSeconds: number;
|
||||
threadCount: number;
|
||||
}
|
||||
|
||||
export interface HttpMetrics {
|
||||
requestsPerMinute: number;
|
||||
errorRate: number;
|
||||
}
|
||||
|
||||
export interface MetricsSummary {
|
||||
collectedAt: string;
|
||||
agents: AgentMetrics;
|
||||
ingestion: IngestionMetrics;
|
||||
server: ServerMetrics;
|
||||
http: HttpMetrics;
|
||||
authFailuresPerMinute: number;
|
||||
}
|
||||
|
||||
export interface TenantMetricsEntry {
|
||||
tenantId: string;
|
||||
tenantName: string;
|
||||
slug: string;
|
||||
tier: string;
|
||||
status: string;
|
||||
serverState: string;
|
||||
metrics: MetricsSummary | null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user