fix: rewrite SigNoz dashboards using correct v4 widget schema
Some checks failed
CI / Format (push) Successful in 3s
CI / Clippy (push) Successful in 4m30s
CI / Tests (push) Has been cancelled
CI / Detect Changes (push) Has been cancelled
CI / Deploy Agent (push) Has been cancelled
CI / Deploy Dashboard (push) Has been cancelled
CI / Deploy Docs (push) Has been cancelled
CI / Deploy MCP (push) Has been cancelled
CI / Security Audit (push) Has started running
Some checks failed
CI / Format (push) Successful in 3s
CI / Clippy (push) Successful in 4m30s
CI / Tests (push) Has been cancelled
CI / Detect Changes (push) Has been cancelled
CI / Deploy Agent (push) Has been cancelled
CI / Deploy Dashboard (push) Has been cancelled
CI / Deploy Docs (push) Has been cancelled
CI / Deploy MCP (push) Has been cancelled
CI / Security Audit (push) Has started running
Previous JSON used an incorrect format. Rewrote both dashboards using the actual SigNoz v4 schema (widgets array, builder queryData, proper layout entries, aggregateOperator/aggregateAttribute structure). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,238 +1,734 @@
|
||||
{
|
||||
"title": "Compliance Dashboard (Frontend)",
|
||||
"description": "Monitoring dashboard for the compliance-dashboard Dioxus SSR/WASM service — page loads, server functions, and error tracking",
|
||||
"description": "Server functions, page loads, and error tracking for the compliance-dashboard Dioxus SSR service",
|
||||
"tags": ["compliance", "dashboard", "frontend"],
|
||||
"version": "v4",
|
||||
"panelMap": {},
|
||||
"uploadedGrafana": false,
|
||||
"variables": {},
|
||||
"layout": [
|
||||
{ "i": "row-overview", "x": 0, "y": 0, "w": 24, "h": 1, "moved": false, "static": false },
|
||||
{ "i": "request-rate", "x": 0, "y": 1, "w": 8, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "error-rate", "x": 8, "y": 1, "w": 8, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "latency", "x": 16, "y": 1, "w": 8, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "row-serverfn", "x": 0, "y": 9, "w": 24, "h": 1, "moved": false, "static": false },
|
||||
{ "i": "serverfn-latency", "x": 0, "y": 10, "w": 12, "h": 9, "moved": false, "static": false },
|
||||
{ "i": "serverfn-calls", "x": 12, "y": 10, "w": 12, "h": 9, "moved": false, "static": false },
|
||||
{ "i": "serverfn-errors", "x": 0, "y": 19, "w": 12, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "slow-requests", "x": 12, "y": 19, "w": 12, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "row-logs", "x": 0, "y": 27, "w": 24, "h": 1, "moved": false, "static": false },
|
||||
{ "i": "log-rate", "x": 0, "y": 28, "w": 12, "h": 8, "moved": false, "static": false },
|
||||
{ "i": "error-logs", "x": 12, "y": 28, "w": 12, "h": 8, "moved": false, "static": false }
|
||||
],
|
||||
"widgets": [
|
||||
{
|
||||
"id": "row-overview",
|
||||
"type": "row",
|
||||
"title": "Overview",
|
||||
"collapsed": false
|
||||
"panelTypes": "row",
|
||||
"description": "",
|
||||
"query": { "queryType": "builder", "builder": { "queryData": [], "queryFormulas": [] }, "promql": [], "clickhouse_sql": [] }
|
||||
},
|
||||
{
|
||||
"id": "panel-request-rate",
|
||||
"type": "graph",
|
||||
"title": "Request Rate",
|
||||
"description": "Requests per second to the compliance-dashboard service",
|
||||
"gridPos": { "x": 0, "y": 1, "w": 8, "h": 8 },
|
||||
"id": "request-rate",
|
||||
"title": "Request Rate (ops/s)",
|
||||
"panelTypes": "graph",
|
||||
"description": "Requests per second to the dashboard service",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 1 MINUTE) AS ts, count() / 60 AS rps FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND parentSpanID = '' AND timestamp >= now() - INTERVAL 1 HOUR GROUP BY ts ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": "ops/s"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "rate",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "Requests/s",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-error-rate",
|
||||
"type": "graph",
|
||||
"title": "Error Rate",
|
||||
"description": "Percentage of requests with errors",
|
||||
"gridPos": { "x": 8, "y": 1, "w": 8, "h": 8 },
|
||||
"id": "error-rate",
|
||||
"title": "Error Rate (%)",
|
||||
"panelTypes": "graph",
|
||||
"description": "Percentage of spans with errors",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "percent",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": true,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 1 MINUTE) AS ts, countIf(hasError = true) AS errors, count() AS total, if(total > 0, errors * 100.0 / total, 0) AS error_pct FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 1 HOUR GROUP BY ts ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": "%"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "count",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "f-err",
|
||||
"key": { "id": "hasError--bool--tag--true", "key": "hasError", "dataType": "bool", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "true"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "Errors",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
},
|
||||
{
|
||||
"queryName": "B",
|
||||
"expression": "B",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "count",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc2",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "Total",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
}
|
||||
],
|
||||
"queryFormulas": [
|
||||
{
|
||||
"queryName": "F1",
|
||||
"expression": "A * 100 / B",
|
||||
"legend": "Error %",
|
||||
"disabled": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-latency",
|
||||
"type": "graph",
|
||||
"title": "Response Latency (p50 / p95 / p99)",
|
||||
"description": "Response time percentiles for the dashboard service",
|
||||
"gridPos": { "x": 16, "y": 1, "w": 8, "h": 8 },
|
||||
"id": "latency",
|
||||
"title": "Latency p50 / p95 / p99",
|
||||
"panelTypes": "graph",
|
||||
"description": "Response time percentiles",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "ns",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 1 MINUTE) AS ts, quantile(0.5)(durationNano) / 1e6 AS p50_ms, quantile(0.95)(durationNano) / 1e6 AS p95_ms, quantile(0.99)(durationNano) / 1e6 AS p99_ms FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND parentSpanID = '' AND timestamp >= now() - INTERVAL 1 HOUR GROUP BY ts ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": "ms"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "p50",
|
||||
"aggregateAttribute": { "id": "durationNano--float64--tag--true", "key": "durationNano", "dataType": "float64", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "p50",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "avg",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
},
|
||||
{
|
||||
"queryName": "B",
|
||||
"expression": "B",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "p95",
|
||||
"aggregateAttribute": { "id": "durationNano--float64--tag--true", "key": "durationNano", "dataType": "float64", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "p95",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "avg",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
},
|
||||
{
|
||||
"queryName": "C",
|
||||
"expression": "C",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "p99",
|
||||
"aggregateAttribute": { "id": "durationNano--float64--tag--true", "key": "durationNano", "dataType": "float64", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "p99",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "avg",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "row-server-functions",
|
||||
"type": "row",
|
||||
"id": "row-serverfn",
|
||||
"title": "Server Functions",
|
||||
"collapsed": false
|
||||
"panelTypes": "row",
|
||||
"description": "",
|
||||
"query": { "queryType": "builder", "builder": { "queryData": [], "queryFormulas": [] }, "promql": [], "clickhouse_sql": [] }
|
||||
},
|
||||
{
|
||||
"id": "panel-server-fn-latency",
|
||||
"type": "graph",
|
||||
"title": "Server Function Latency by Name",
|
||||
"description": "p95 latency for each Dioxus server function (fetch_repositories, fetch_findings, fetch_sbom, etc.)",
|
||||
"gridPos": { "x": 0, "y": 10, "w": 12, "h": 10 },
|
||||
"id": "serverfn-latency",
|
||||
"title": "Server Function p95 Latency",
|
||||
"panelTypes": "graph",
|
||||
"description": "p95 latency by operation name",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "ns",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 5 MINUTE) AS ts, name AS server_fn, quantile(0.95)(durationNano) / 1e6 AS p95_ms FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 3 HOUR GROUP BY ts, server_fn ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": "ms"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "p95",
|
||||
"aggregateAttribute": { "id": "durationNano--float64--tag--true", "key": "durationNano", "dataType": "float64", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [
|
||||
{ "id": "name--string--tag--true", "key": "name", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false }
|
||||
],
|
||||
"having": [],
|
||||
"legend": "{{name}}",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "avg",
|
||||
"orderBy": [],
|
||||
"limit": 15
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-server-fn-calls",
|
||||
"type": "graph",
|
||||
"id": "serverfn-calls",
|
||||
"title": "Server Function Call Volume",
|
||||
"panelTypes": "graph",
|
||||
"description": "Number of calls per server function over time",
|
||||
"gridPos": { "x": 12, "y": 10, "w": 12, "h": 10 },
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": true,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 5 MINUTE) AS ts, name AS server_fn, count() AS calls FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 3 HOUR GROUP BY ts, server_fn ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": ""
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "count",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [
|
||||
{ "id": "name--string--tag--true", "key": "name", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false }
|
||||
],
|
||||
"having": [],
|
||||
"legend": "{{name}}",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [{ "columnName": "#SIGNOZ_VALUE", "order": "desc" }],
|
||||
"limit": 15
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-server-fn-errors",
|
||||
"type": "table",
|
||||
"title": "Server Function Errors (Last 24h)",
|
||||
"description": "Server functions with the most errors",
|
||||
"gridPos": { "x": 0, "y": 20, "w": 12, "h": 8 },
|
||||
"id": "serverfn-errors",
|
||||
"title": "Top Operations by Error Count",
|
||||
"panelTypes": "table",
|
||||
"description": "Operations with the most errors",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT name AS server_fn, count() AS total_calls, countIf(hasError = true) AS errors, round(errors * 100.0 / total_calls, 2) AS error_pct, quantile(0.95)(durationNano) / 1e6 AS p95_ms FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 24 HOUR GROUP BY server_fn HAVING total_calls > 0 ORDER BY errors DESC LIMIT 20"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "table"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "count",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "f-err",
|
||||
"key": { "id": "hasError--bool--tag--true", "key": "hasError", "dataType": "bool", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "true"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [
|
||||
{ "id": "name--string--tag--true", "key": "name", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false }
|
||||
],
|
||||
"having": [],
|
||||
"legend": "Errors",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "sum",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [{ "columnName": "#SIGNOZ_VALUE", "order": "desc" }],
|
||||
"limit": 20
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-slow-requests",
|
||||
"type": "table",
|
||||
"title": "Slowest Requests (Last 1h)",
|
||||
"description": "Top 20 slowest individual requests",
|
||||
"gridPos": { "x": 12, "y": 20, "w": 12, "h": 8 },
|
||||
"id": "slow-requests",
|
||||
"title": "Slowest Traces",
|
||||
"panelTypes": "list",
|
||||
"description": "Individual traces ordered by duration",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [
|
||||
{ "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
{ "id": "name--string--tag--true", "key": "name", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
{ "id": "durationNano--float64--tag--true", "key": "durationNano", "dataType": "float64", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
{ "id": "hasError--bool--tag--true", "key": "hasError", "dataType": "bool", "type": "tag", "isColumn": true, "isJSON": false }
|
||||
],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT name AS operation, traceID, durationNano / 1e6 AS duration_ms, toString(timestamp) AS time, hasError FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND parentSpanID = '' AND timestamp >= now() - INTERVAL 1 HOUR ORDER BY durationNano DESC LIMIT 20"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "table"
|
||||
},
|
||||
{
|
||||
"id": "row-page-navigation",
|
||||
"type": "row",
|
||||
"title": "Page Navigation Patterns",
|
||||
"collapsed": true
|
||||
},
|
||||
{
|
||||
"id": "panel-page-hits",
|
||||
"type": "graph",
|
||||
"title": "Page Load Distribution",
|
||||
"description": "Which dashboard pages are hit most frequently (by server function patterns)",
|
||||
"gridPos": { "x": 0, "y": 29, "w": 12, "h": 8 },
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT CASE WHEN name LIKE '%repositor%' THEN 'Repositories' WHEN name LIKE '%finding%' THEN 'Findings' WHEN name LIKE '%sbom%' THEN 'SBOM' WHEN name LIKE '%dast%' THEN 'DAST' WHEN name LIKE '%graph%' THEN 'Graph' WHEN name LIKE '%chat%' THEN 'Chat' WHEN name LIKE '%scan%' THEN 'Scan Runs' WHEN name LIKE '%overview%' OR name LIKE '%stats%' THEN 'Overview' ELSE 'Other' END AS page, count() AS hits FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 24 HOUR GROUP BY page ORDER BY hits DESC"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "bar"
|
||||
},
|
||||
{
|
||||
"id": "panel-agent-connectivity",
|
||||
"type": "graph",
|
||||
"title": "Agent API Connectivity",
|
||||
"description": "Success vs failure rate of dashboard→agent API calls",
|
||||
"gridPos": { "x": 12, "y": 29, "w": 12, "h": 8 },
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 5 MINUTE) AS ts, countIf(hasError = false) AS success, countIf(hasError = true) AS failed FROM signoz_traces.distributed_signoz_index_v3 WHERE serviceName = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 6 HOUR GROUP BY ts ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": ""
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "traces",
|
||||
"aggregateOperator": "noop",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "serviceName--string--tag--true", "key": "serviceName", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [{ "columnName": "durationNano", "order": "desc" }],
|
||||
"limit": null,
|
||||
"offset": 0,
|
||||
"pageSize": 10
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "row-logs",
|
||||
"type": "row",
|
||||
"title": "Logs",
|
||||
"collapsed": false
|
||||
"panelTypes": "row",
|
||||
"description": "",
|
||||
"query": { "queryType": "builder", "builder": { "queryData": [], "queryFormulas": [] }, "promql": [], "clickhouse_sql": [] }
|
||||
},
|
||||
{
|
||||
"id": "panel-log-rate",
|
||||
"type": "graph",
|
||||
"title": "Log Volume by Severity",
|
||||
"description": "Log entries per severity level over time",
|
||||
"gridPos": { "x": 0, "y": 38, "w": 12, "h": 8 },
|
||||
"id": "log-rate",
|
||||
"title": "WARN / ERROR Log Rate",
|
||||
"panelTypes": "graph",
|
||||
"description": "Warn and error log entries over time",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": true,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toStartOfInterval(timestamp, INTERVAL 5 MINUTE) AS ts, severity_text AS level, count() AS cnt FROM signoz_logs.distributed_logs_v2 WHERE resources_string['service.name'] = 'compliance-dashboard' AND timestamp >= now() - INTERVAL 6 HOUR GROUP BY ts, level ORDER BY ts"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "time_series",
|
||||
"unit": ""
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "logs",
|
||||
"aggregateOperator": "count",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "service.name--string--resource--false", "key": "service.name", "dataType": "string", "type": "resource", "isColumn": false, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "f-level",
|
||||
"key": { "id": "severity_text--string--tag--true", "key": "severity_text", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "in",
|
||||
"value": ["WARN", "ERROR"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [
|
||||
{ "id": "severity_text--string--tag--true", "key": "severity_text", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false }
|
||||
],
|
||||
"having": [],
|
||||
"legend": "{{severity_text}}",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [],
|
||||
"limit": null
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "panel-recent-errors",
|
||||
"type": "list",
|
||||
"id": "error-logs",
|
||||
"title": "Recent Error Logs",
|
||||
"description": "Last 50 ERROR-level log entries from the dashboard service",
|
||||
"gridPos": { "x": 12, "y": 38, "w": 12, "h": 8 },
|
||||
"panelTypes": "list",
|
||||
"description": "Latest ERROR-level log entries",
|
||||
"opacity": "1",
|
||||
"yAxisUnit": "none",
|
||||
"isStacked": false,
|
||||
"nullZeroValues": "zero",
|
||||
"fillSpans": false,
|
||||
"mergeAllActiveQueries": false,
|
||||
"timePreferance": "GLOBAL_TIME",
|
||||
"columnUnits": {},
|
||||
"thresholds": [],
|
||||
"softMin": 0,
|
||||
"softMax": 0,
|
||||
"bucketCount": 30,
|
||||
"bucketWidth": 0,
|
||||
"stackedBarChart": false,
|
||||
"selectedLogFields": [
|
||||
{ "dataType": "string", "name": "body", "type": "" },
|
||||
{ "dataType": "string", "name": "timestamp", "type": "" },
|
||||
{ "dataType": "string", "name": "severity_text", "type": "" }
|
||||
],
|
||||
"selectedTracesFields": [],
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT toString(timestamp) AS time, body AS message, trace_id FROM signoz_logs.distributed_logs_v2 WHERE resources_string['service.name'] = 'compliance-dashboard' AND severity_text = 'ERROR' AND timestamp >= now() - INTERVAL 24 HOUR ORDER BY timestamp DESC LIMIT 50"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "list"
|
||||
},
|
||||
{
|
||||
"id": "panel-warn-messages",
|
||||
"type": "table",
|
||||
"title": "Top Warning Messages (24h)",
|
||||
"description": "Most frequent WARN messages — catches connectivity issues, deserialization failures, etc.",
|
||||
"gridPos": { "x": 0, "y": 46, "w": 24, "h": 8 },
|
||||
"query": {
|
||||
"clickhouse_sql": [
|
||||
{
|
||||
"name": "A",
|
||||
"query": "SELECT body AS message, count() AS occurrences, max(toString(timestamp)) AS last_seen FROM signoz_logs.distributed_logs_v2 WHERE resources_string['service.name'] = 'compliance-dashboard' AND severity_text = 'WARN' AND timestamp >= now() - INTERVAL 24 HOUR GROUP BY message ORDER BY occurrences DESC LIMIT 30"
|
||||
}
|
||||
]
|
||||
},
|
||||
"panelType": "table"
|
||||
"queryType": "builder",
|
||||
"builder": {
|
||||
"queryData": [
|
||||
{
|
||||
"queryName": "A",
|
||||
"expression": "A",
|
||||
"dataSource": "logs",
|
||||
"aggregateOperator": "noop",
|
||||
"aggregateAttribute": { "id": "------false", "key": "", "dataType": "", "type": "", "isColumn": false, "isJSON": false },
|
||||
"filters": {
|
||||
"op": "AND",
|
||||
"items": [
|
||||
{
|
||||
"id": "f-svc",
|
||||
"key": { "id": "service.name--string--resource--false", "key": "service.name", "dataType": "string", "type": "resource", "isColumn": false, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "compliance-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "f-level",
|
||||
"key": { "id": "severity_text--string--tag--true", "key": "severity_text", "dataType": "string", "type": "tag", "isColumn": true, "isJSON": false },
|
||||
"op": "=",
|
||||
"value": "ERROR"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functions": [],
|
||||
"groupBy": [],
|
||||
"having": [],
|
||||
"legend": "",
|
||||
"disabled": false,
|
||||
"stepInterval": 60,
|
||||
"reduceTo": "avg",
|
||||
"spaceAggregation": "sum",
|
||||
"timeAggregation": "rate",
|
||||
"orderBy": [{ "columnName": "timestamp", "order": "desc" }],
|
||||
"limit": null,
|
||||
"offset": 0,
|
||||
"pageSize": 10
|
||||
}
|
||||
],
|
||||
"queryFormulas": []
|
||||
},
|
||||
"promql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }],
|
||||
"clickhouse_sql": [{ "name": "A", "query": "", "disabled": false, "legend": "" }]
|
||||
}
|
||||
}
|
||||
],
|
||||
"variables": {
|
||||
"time_range": {
|
||||
"type": "custom",
|
||||
"label": "Time Range",
|
||||
"default": "1h",
|
||||
"options": ["15m", "30m", "1h", "3h", "6h", "12h", "24h", "7d"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user