diff --git a/ui/src/api.ts b/ui/src/api.ts index c6ffcc3..36778e1 100644 --- a/ui/src/api.ts +++ b/ui/src/api.ts @@ -77,10 +77,18 @@ export interface QueueLocation { } export interface MetricsResponse { - data: MetricsResult; + queue_size: PrometheusMetricsResponse; +} + +export interface PrometheusMetricsResponse { + status: "success" | "error"; + data?: MetricsResult; // present if status === "success" + error?: string; // present if status === "error" + errorType?: string; // present if status === "error" } export interface MetricsResult { + resultType: string; result: Metrics[]; } @@ -93,8 +101,10 @@ export interface MetricsInfo { __name__: string; instance: string; job: string; - queue: string; - state: string; + + // labels (may or may not be present depending on metrics) + queue?: string; + state?: string; } // Return value from redis INFO command. diff --git a/ui/src/components/QueueSizeMetricsChart.tsx b/ui/src/components/QueueSizeMetricsChart.tsx index 1d90a6d..c7d5889 100644 --- a/ui/src/components/QueueSizeMetricsChart.tsx +++ b/ui/src/components/QueueSizeMetricsChart.tsx @@ -35,7 +35,10 @@ function toChartData(metrics: Metrics[]): ChartData[] { if (!byTimestamp[ts]) { byTimestamp[ts] = { timestamp: ts }; } - byTimestamp[ts][x.metric.queue] = parseFloat(val); + const qname = x.metric.queue; + if (qname) { + byTimestamp[ts][qname] = parseFloat(val); + } } } return Object.values(byTimestamp); diff --git a/ui/src/views/MetricsView.tsx b/ui/src/views/MetricsView.tsx index f49425e..bc346ef 100644 --- a/ui/src/views/MetricsView.tsx +++ b/ui/src/views/MetricsView.tsx @@ -98,8 +98,9 @@ function MetricsView(props: Props) { Queue Size + {/* TODO: show error message if data.queue_size.status === "error" */}