diff --git a/src/app/api/dashboard/route.ts b/src/app/api/dashboard/route.ts
index 0dada7d..5ea0bd0 100644
--- a/src/app/api/dashboard/route.ts
+++ b/src/app/api/dashboard/route.ts
@@ -159,10 +159,10 @@ export async function GET() {
load15,
netIn,
netOut,
- rps,
- latency,
- errors,
- traceVolume,
+ netInSpark,
+ loadSpark,
+ netOutSpark,
+ upstreamCount,
] = await Promise.all([
promQuery(
`100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)`,
@@ -184,6 +184,18 @@ export async function GET() {
promQuery("count(up)"),
]);
+ // ── Error rate (llm-api) & request rate (any /metrics service) ──
+ const [errRate, errSpark] = await Promise.all([
+ promQuery(`sum(rate(llm_api_errors_total[5m]))`),
+ promRange(`sum(rate(llm_api_errors_total[1m]))`),
+ ]);
+ const reqRate = await promQuery(
+ `sum(rate(llm_api_requests_total[5m])) + sum(rate(http_server_request_count_total[5m]))`,
+ );
+ const reqSpark = await promRange(
+ `sum(rate(llm_api_requests_total[1m])) + sum(rate(http_server_request_count_total[1m]))`,
+ );
+
// ── LLM inference metrics (llm-api /metrics) ──
const [
llmReqRate,
@@ -225,10 +237,10 @@ export async function GET() {
services,
traces: [],
node: { cpu, ram, disk, load1, load5, load15, netIn, netOut },
- rps,
- latency,
- errors,
- traceVolume: traceVolume ? [traceVolume] : [],
+ rps: reqSpark,
+ latency: loadSpark,
+ errors: errSpark,
+ traceVolume: netInSpark,
links,
llm: {
reqRate: llmReqRate,
diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx
index ad99820..feb5693 100644
--- a/src/app/dashboard/page.tsx
+++ b/src/app/dashboard/page.tsx
@@ -60,8 +60,8 @@ export default function Dashboard() {
data?.services.filter((s) => s.state === "running").length ?? 0;
const degraded = (data?.services.length ?? 0) - running;
const hasNode = data?.node.cpu !== null || data?.node.ram !== null;
- const hasTraffik =
- (data?.rps?.length ?? 0) > 0 || (data?.latency?.length ?? 0) > 0;
+ const hasTraffic =
+ (data?.rps?.length ?? 0) > 0 || (data?.errors?.length ?? 0) > 0;
const node = data?.node;
return (
@@ -147,7 +147,15 @@ export default function Dashboard() {
label="Traces"
color="text-blue-400"
/>
-
+
@@ -299,7 +307,7 @@ export default function Dashboard() {
{/* Request Rate */}
- {hasTraffik && (
+ {hasTraffic && (
@@ -317,15 +325,15 @@ export default function Dashboard() {
)}
- {/* Latency */}
- {hasTraffik && (
+ {/* Load Average */}
+ {hasNode && (
- Latency
+ Load Average
{data?.latency?.length
- ? `${data.latency[data.latency.length - 1].toFixed(0)}ms`
+ ? data.latency[data.latency.length - 1].toFixed(2)
: "-"}
@@ -337,7 +345,7 @@ export default function Dashboard() {
)}
{/* Error Rate */}
- {hasTraffik && (
+ {hasTraffic && (