2026-01-09 14:48:44 +01:00
{
2026-01-09 23:14:12 +01:00
"description" : "Comprehensive API performance monitoring for Bakery IA REST and GraphQL endpoints" ,
"tags" : [ "api" , "performance" , "rest" , "graphql" ] ,
"name" : "bakery-ia-api-performance" ,
"title" : "Bakery IA - API Performance" ,
"uploadedGrafana" : false ,
"uuid" : "bakery-ia-api-01" ,
"version" : "v4" ,
"collapsableRowsMigrated" : true ,
"layout" : [
{
"x" : 0 ,
"y" : 0 ,
"w" : 6 ,
"h" : 3 ,
"i" : "request-volume" ,
"moved" : false ,
"static" : false
} ,
{
"x" : 6 ,
"y" : 0 ,
"w" : 6 ,
"h" : 3 ,
"i" : "error-rate" ,
"moved" : false ,
"static" : false
} ,
{
"x" : 0 ,
"y" : 3 ,
"w" : 6 ,
"h" : 3 ,
"i" : "avg-response-time" ,
"moved" : false ,
"static" : false
} ,
{
"x" : 6 ,
"y" : 3 ,
"w" : 6 ,
"h" : 3 ,
"i" : "p95-latency" ,
"moved" : false ,
"static" : false
}
] ,
"variables" : {
"service" : {
"id" : "service-var" ,
"name" : "service" ,
"description" : "Filter by API service" ,
"type" : "QUERY" ,
"queryValue" : "SELECT DISTINCT(resource_attrs['service.name']) as value FROM signoz_metrics.distributed_time_series_v4_1day WHERE metric_name = 'http_server_requests_seconds_count' AND value != '' ORDER BY value" ,
"customValue" : "" ,
"textboxValue" : "" ,
"showALLOption" : true ,
"multiSelect" : false ,
"order" : 1 ,
"modificationUUID" : "" ,
"sort" : "ASC" ,
"selectedValue" : null
}
} ,
"widgets" : [
{
"id" : "request-volume" ,
"title" : "Request Volume" ,
"description" : "API request volume by service" ,
"isStacked" : false ,
"nullZeroValues" : "zero" ,
"opacity" : "1" ,
"panelTypes" : "graph" ,
"query" : {
"builder" : {
"queryData" : [
2026-01-09 14:48:44 +01:00
{
2026-01-09 23:14:12 +01:00
"dataSource" : "metrics" ,
"queryName" : "A" ,
"aggregateOperator" : "sum" ,
"aggregateAttribute" : {
"key" : "http_server_requests_seconds_count" ,
"dataType" : "int64" ,
"type" : "Counter" ,
"isColumn" : false
} ,
"timeAggregation" : "rate" ,
"spaceAggregation" : "sum" ,
"functions" : [ ] ,
"filters" : {
"items" : [
{
"key" : {
"key" : "service.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
"op" : "=" ,
"value" : "{{.service}}"
}
] ,
"op" : "AND"
} ,
"expression" : "A" ,
"disabled" : false ,
"having" : [ ] ,
"stepInterval" : 60 ,
"limit" : null ,
"orderBy" : [ ] ,
"groupBy" : [
{
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
}
] ,
"legend" : "{{api.name}}" ,
"reduceTo" : "sum"
2026-01-09 14:48:44 +01:00
}
2026-01-09 23:14:12 +01:00
] ,
"queryFormulas" : [ ]
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"queryType" : "builder"
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"fillSpans" : false ,
"yAxisUnit" : "req/s"
} ,
{
"id" : "error-rate" ,
"title" : "Error Rate" ,
"description" : "API error rate by service" ,
"isStacked" : false ,
"nullZeroValues" : "zero" ,
"opacity" : "1" ,
"panelTypes" : "graph" ,
"query" : {
"builder" : {
"queryData" : [
2026-01-09 14:48:44 +01:00
{
2026-01-09 23:14:12 +01:00
"dataSource" : "metrics" ,
"queryName" : "A" ,
"aggregateOperator" : "sum" ,
"aggregateAttribute" : {
"key" : "http_server_requests_seconds_count" ,
"dataType" : "int64" ,
"type" : "Counter" ,
"isColumn" : false
} ,
"timeAggregation" : "rate" ,
"spaceAggregation" : "sum" ,
"functions" : [ ] ,
"filters" : {
"items" : [
{
"key" : {
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
"op" : "=" ,
"value" : "{{.api}}"
} ,
{
"key" : {
"key" : "status_code" ,
"dataType" : "string" ,
"type" : "tag" ,
"isColumn" : false
} ,
"op" : "=~" ,
"value" : "5.."
}
] ,
"op" : "AND"
} ,
"expression" : "A" ,
"disabled" : false ,
"having" : [ ] ,
"stepInterval" : 60 ,
"limit" : null ,
"orderBy" : [ ] ,
"groupBy" : [
{
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
{
"key" : "status_code" ,
"dataType" : "string" ,
"type" : "tag" ,
"isColumn" : false
}
] ,
"legend" : "{{api.name}} - {{status_code}}" ,
"reduceTo" : "sum"
2026-01-09 14:48:44 +01:00
}
2026-01-09 23:14:12 +01:00
] ,
"queryFormulas" : [ ]
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"queryType" : "builder"
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"fillSpans" : false ,
"yAxisUnit" : "req/s"
} ,
{
"id" : "avg-response-time" ,
"title" : "Average Response Time" ,
"description" : "Average API response time by endpoint" ,
"isStacked" : false ,
"nullZeroValues" : "zero" ,
"opacity" : "1" ,
"panelTypes" : "graph" ,
"query" : {
"builder" : {
"queryData" : [
2026-01-09 14:48:44 +01:00
{
2026-01-09 23:14:12 +01:00
"dataSource" : "metrics" ,
"queryName" : "A" ,
"aggregateOperator" : "avg" ,
"aggregateAttribute" : {
"key" : "http_server_requests_seconds_sum" ,
"dataType" : "float64" ,
"type" : "Counter" ,
"isColumn" : false
} ,
"timeAggregation" : "avg" ,
"spaceAggregation" : "avg" ,
"functions" : [ ] ,
"filters" : {
"items" : [
{
"key" : {
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
"op" : "=" ,
"value" : "{{.api}}"
}
] ,
"op" : "AND"
} ,
"expression" : "A" ,
"disabled" : false ,
"having" : [ ] ,
"stepInterval" : 60 ,
"limit" : null ,
"orderBy" : [ ] ,
"groupBy" : [
{
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
{
"key" : "endpoint" ,
"dataType" : "string" ,
"type" : "tag" ,
"isColumn" : false
}
] ,
"legend" : "{{api.name}} - {{endpoint}}" ,
"reduceTo" : "avg"
2026-01-09 14:48:44 +01:00
}
2026-01-09 23:14:12 +01:00
] ,
"queryFormulas" : [ ]
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"queryType" : "builder"
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"fillSpans" : false ,
"yAxisUnit" : "seconds"
} ,
{
"id" : "p95-latency" ,
"title" : "P95 Latency" ,
"description" : "95th percentile latency by endpoint" ,
"isStacked" : false ,
"nullZeroValues" : "zero" ,
"opacity" : "1" ,
"panelTypes" : "graph" ,
"query" : {
"builder" : {
"queryData" : [
2026-01-09 14:48:44 +01:00
{
2026-01-09 23:14:12 +01:00
"dataSource" : "metrics" ,
"queryName" : "A" ,
"aggregateOperator" : "histogram_quantile" ,
"aggregateAttribute" : {
"key" : "http_server_requests_seconds_bucket" ,
"dataType" : "float64" ,
"type" : "Histogram" ,
"isColumn" : false
} ,
"timeAggregation" : "avg" ,
"spaceAggregation" : "avg" ,
"functions" : [ ] ,
"filters" : {
"items" : [
{
"key" : {
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
"op" : "=" ,
"value" : "{{.api}}"
}
] ,
"op" : "AND"
} ,
"expression" : "A" ,
"disabled" : false ,
"having" : [ ] ,
"stepInterval" : 60 ,
"limit" : null ,
"orderBy" : [ ] ,
"groupBy" : [
{
"key" : "api.name" ,
"dataType" : "string" ,
"type" : "resource" ,
"isColumn" : false
} ,
{
"key" : "endpoint" ,
"dataType" : "string" ,
"type" : "tag" ,
"isColumn" : false
}
] ,
"legend" : "{{api.name}} - {{endpoint}}" ,
"reduceTo" : "avg"
2026-01-09 14:48:44 +01:00
}
2026-01-09 23:14:12 +01:00
] ,
"queryFormulas" : [ ]
2026-01-09 14:48:44 +01:00
} ,
2026-01-09 23:14:12 +01:00
"queryType" : "builder"
} ,
"fillSpans" : false ,
"yAxisUnit" : "seconds"
2026-01-09 14:48:44 +01:00
}
2026-01-09 23:14:12 +01:00
]
2026-01-09 14:48:44 +01:00
}