{ "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": [ { "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" } ], "queryFormulas": [] }, "queryType": "builder" }, "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": [ { "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" } ], "queryFormulas": [] }, "queryType": "builder" }, "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": [ { "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" } ], "queryFormulas": [] }, "queryType": "builder" }, "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": [ { "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" } ], "queryFormulas": [] }, "queryType": "builder" }, "fillSpans": false, "yAxisUnit": "seconds" } ] }