From f218df9bb64e45a7ba820d5987e9c31a17bf0292 Mon Sep 17 00:00:00 2001 From: acoshift Date: Fri, 9 Oct 2026 15:48:04 +0700 Subject: [PATCH] Add a by-deployment tab on the project metrics page Groups the samples already stored per deployment into one chart series each. Disk, replicas, and cache egress stay on the project tab. Prompter: ACS --- .../ProjectMetricsByDeployment.svelte | 103 ++++++++++++++++++ src/lib/server/mock.ts | 21 ++++ .../(auth)/(project)/metrics/+page.svelte | 40 ++++++- src/types/api.d.ts | 10 ++ 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 src/lib/components/ProjectMetricsByDeployment.svelte diff --git a/src/lib/components/ProjectMetricsByDeployment.svelte b/src/lib/components/ProjectMetricsByDeployment.svelte new file mode 100644 index 00000000..0cfbd5ae --- /dev/null +++ b/src/lib/components/ProjectMetricsByDeployment.svelte @@ -0,0 +1,103 @@ + + +

+ CPU and memory are each day's average, summed across a deployment's pods. Egress and requests are daily totals. + Samples are kept for 30 days. Cache egress, replicas, and disk are not recorded per deployment. +

+ +
+ goto(tabHref((e.currentTarget as HTMLSelectElement).value))} + > + + + +
+
+ Project + By deployment +
+ +{#if tab === 'deployment'} + +{:else} + +{/if} diff --git a/src/types/api.d.ts b/src/types/api.d.ts index d65677f0..077e21c8 100644 --- a/src/types/api.d.ts +++ b/src/types/api.d.ts @@ -1298,6 +1298,16 @@ declare namespace Api { staticStorage: UsageMetricsLine[] } + // Result of project.metricsByDeployment. One line per deployment. History + // is 30 days (7d or 30d). Disk, replicas, and cache egress are not included. + export type ProjectMetricsByDeploymentResult = { + cpuUsage: UsageMetricsLine[] + memory: UsageMetricsLine[] + egress: UsageMetricsLine[] + requests: UsageMetricsLine[] + staticStorage: UsageMetricsLine[] + } + // Result of deployment.metrics. Every series is optional — the backend only // returns the metrics relevant to the deployment type (e.g. requests for // WebService/Static, storage for Static).