mirror of
https://github.com/hibiken/asynqmon.git
synced 2025-10-26 08:16:10 +08:00
(ui): Add Queue memory usage chart
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
|||||||
type getMetricsResponse struct {
|
type getMetricsResponse struct {
|
||||||
QueueSize *json.RawMessage `json:"queue_size"`
|
QueueSize *json.RawMessage `json:"queue_size"`
|
||||||
QueueLatency *json.RawMessage `json:"queue_latency_seconds"`
|
QueueLatency *json.RawMessage `json:"queue_latency_seconds"`
|
||||||
|
QueueMemUsgApprox *json.RawMessage `json:"queue_memory_usage_approx_bytes"`
|
||||||
PendingTasksByQueue *json.RawMessage `json:"pending_tasks_by_queue"`
|
PendingTasksByQueue *json.RawMessage `json:"pending_tasks_by_queue"`
|
||||||
RetryTasksByQueue *json.RawMessage `json:"retry_tasks_by_queue"`
|
RetryTasksByQueue *json.RawMessage `json:"retry_tasks_by_queue"`
|
||||||
ArchivedTasksByQueue *json.RawMessage `json:"archived_tasks_by_queue"`
|
ArchivedTasksByQueue *json.RawMessage `json:"archived_tasks_by_queue"`
|
||||||
@@ -48,6 +49,7 @@ func newGetMetricsHandlerFunc(client *http.Client, prometheusAddr string) http.H
|
|||||||
queries := []string{
|
queries := []string{
|
||||||
"asynq_queue_size",
|
"asynq_queue_size",
|
||||||
"asynq_queue_latency_seconds",
|
"asynq_queue_latency_seconds",
|
||||||
|
"asynq_queue_memory_usage_approx_bytes",
|
||||||
"asynq_tasks_enqueued_total{state=\"pending\"}",
|
"asynq_tasks_enqueued_total{state=\"pending\"}",
|
||||||
"asynq_tasks_enqueued_total{state=\"retry\"}",
|
"asynq_tasks_enqueued_total{state=\"retry\"}",
|
||||||
"asynq_tasks_enqueued_total{state=\"archived\"}",
|
"asynq_tasks_enqueued_total{state=\"archived\"}",
|
||||||
@@ -59,7 +61,6 @@ func newGetMetricsHandlerFunc(client *http.Client, prometheusAddr string) http.H
|
|||||||
for _, q := range queries {
|
for _, q := range queries {
|
||||||
go func(q string) {
|
go func(q string) {
|
||||||
url := buildPrometheusURL(prometheusAddr, q, opts)
|
url := buildPrometheusURL(prometheusAddr, q, opts)
|
||||||
fmt.Printf("DEBUG: url: %s\n", url) // TODO: Delete this once debugging is done
|
|
||||||
msg, err := fetchPrometheusMetrics(client, url)
|
msg, err := fetchPrometheusMetrics(client, url)
|
||||||
ch <- res{q, msg, err}
|
ch <- res{q, msg, err}
|
||||||
}(q)
|
}(q)
|
||||||
@@ -75,6 +76,8 @@ func newGetMetricsHandlerFunc(client *http.Client, prometheusAddr string) http.H
|
|||||||
resp.QueueSize = r.msg
|
resp.QueueSize = r.msg
|
||||||
case "asynq_queue_latency_seconds":
|
case "asynq_queue_latency_seconds":
|
||||||
resp.QueueLatency = r.msg
|
resp.QueueLatency = r.msg
|
||||||
|
case "asynq_queue_memory_usage_approx_bytes":
|
||||||
|
resp.QueueMemUsgApprox = r.msg
|
||||||
case "asynq_tasks_enqueued_total{state=\"pending\"}":
|
case "asynq_tasks_enqueued_total{state=\"pending\"}":
|
||||||
resp.PendingTasksByQueue = r.msg
|
resp.PendingTasksByQueue = r.msg
|
||||||
case "asynq_tasks_enqueued_total{state=\"retry\"}":
|
case "asynq_tasks_enqueued_total{state=\"retry\"}":
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ export interface QueueLocation {
|
|||||||
export interface MetricsResponse {
|
export interface MetricsResponse {
|
||||||
queue_size: PrometheusMetricsResponse;
|
queue_size: PrometheusMetricsResponse;
|
||||||
queue_latency_seconds: PrometheusMetricsResponse;
|
queue_latency_seconds: PrometheusMetricsResponse;
|
||||||
|
queue_memory_usage_approx_bytes: PrometheusMetricsResponse;
|
||||||
pending_tasks_by_queue: PrometheusMetricsResponse;
|
pending_tasks_by_queue: PrometheusMetricsResponse;
|
||||||
retry_tasks_by_queue: PrometheusMetricsResponse;
|
retry_tasks_by_queue: PrometheusMetricsResponse;
|
||||||
archived_tasks_by_queue: PrometheusMetricsResponse;
|
archived_tasks_by_queue: PrometheusMetricsResponse;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import Container from "@material-ui/core/Container";
|
|||||||
import Grid from "@material-ui/core/Grid";
|
import Grid from "@material-ui/core/Grid";
|
||||||
import Typography from "@material-ui/core/Typography";
|
import Typography from "@material-ui/core/Typography";
|
||||||
import WarningIcon from "@material-ui/icons/Warning";
|
import WarningIcon from "@material-ui/icons/Warning";
|
||||||
|
import prettyBytes from "pretty-bytes";
|
||||||
import { getMetricsAsync } from "../actions/metricsActions";
|
import { getMetricsAsync } from "../actions/metricsActions";
|
||||||
import { AppState } from "../store";
|
import { AppState } from "../store";
|
||||||
import QueueMetricsChart from "../components/QueueMetricsChart";
|
import QueueMetricsChart from "../components/QueueMetricsChart";
|
||||||
@@ -140,6 +141,17 @@ function MetricsView(props: Props) {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
)}
|
)}
|
||||||
|
{data?.queue_size && (
|
||||||
|
<Grid item xs={12}>
|
||||||
|
<ChartRow
|
||||||
|
title="Queue Memory Usage (approx)"
|
||||||
|
metrics={data.queue_memory_usage_approx_bytes}
|
||||||
|
endTime={endTimeSec}
|
||||||
|
startTime={endTimeSec - durationSec}
|
||||||
|
yAxisTickFormatter={(val: number) => prettyBytes(val)}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
)}
|
||||||
{data?.pending_tasks_by_queue && (
|
{data?.pending_tasks_by_queue && (
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<ChartRow
|
<ChartRow
|
||||||
|
|||||||
Reference in New Issue
Block a user