2867 lines
		
	
	
	
		
			69 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
		
		
			
		
	
	
			2867 lines
		
	
	
	
		
			69 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
|  | { | ||
|  |   "annotations": { | ||
|  |     "list": [ | ||
|  |       { | ||
|  |         "builtIn": 1, | ||
|  |         "datasource": "-- Grafana --", | ||
|  |         "enable": true, | ||
|  |         "hide": true, | ||
|  |         "iconColor": "rgba(0, 211, 255, 1)", | ||
|  |         "name": "Annotations & Alerts", | ||
|  |         "type": "dashboard" | ||
|  |       }, | ||
|  |       { | ||
|  |         "datasource": "-- Grafana --", | ||
|  |         "enable": true, | ||
|  |         "hide": true, | ||
|  |         "iconColor": "#73BF69", | ||
|  |         "limit": 100, | ||
|  |         "name": "PromEx service start", | ||
|  |         "showIn": 0, | ||
|  |         "tags": ["prom_ex", "pinchflat", "start"], | ||
|  |         "type": "tags" | ||
|  |       }, | ||
|  |       { | ||
|  |         "datasource": "-- Grafana --", | ||
|  |         "enable": true, | ||
|  |         "hide": true, | ||
|  |         "iconColor": "#FF9830", | ||
|  |         "limit": 100, | ||
|  |         "name": "PromEx service stop", | ||
|  |         "showIn": 0, | ||
|  |         "tags": ["prom_ex", "pinchflat", "stop"], | ||
|  |         "type": "tags" | ||
|  |       } | ||
|  |     ] | ||
|  |   }, | ||
|  |   "description": "All the data that is presented here is captured by the PromEx Oban plugin (https://github.com/akoutmos/prom_ex/blob/master/lib/prom_ex/plugins/oban.ex)", | ||
|  |   "editable": false, | ||
|  |   "gnetId": null, | ||
|  |   "graphTooltip": 1, | ||
|  |   "id": null, | ||
|  |   "links": [ | ||
|  |     { | ||
|  |       "asDropdown": false, | ||
|  |       "icon": "bolt", | ||
|  |       "includeVars": false, | ||
|  |       "keepTime": false, | ||
|  |       "tags": [], | ||
|  |       "targetBlank": true, | ||
|  |       "title": "Sponsor PromEx", | ||
|  |       "tooltip": "", | ||
|  |       "type": "link", | ||
|  |       "url": "https://github.com/sponsors/akoutmos" | ||
|  |     }, | ||
|  |     { | ||
|  |       "asDropdown": false, | ||
|  |       "icon": "doc", | ||
|  |       "includeVars": false, | ||
|  |       "keepTime": false, | ||
|  |       "tags": [], | ||
|  |       "targetBlank": true, | ||
|  |       "title": "Oban Plugin Docs", | ||
|  |       "tooltip": "", | ||
|  |       "type": "link", | ||
|  |       "url": "https://hexdocs.pm/prom_ex/PromEx.Plugins.Oban.html" | ||
|  |     } | ||
|  |   ], | ||
|  |   "panels": [ | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 0 | ||
|  |       }, | ||
|  |       "id": 19, | ||
|  |       "panels": [], | ||
|  |       "title": "Overview", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The configuration of the selected Oban instance", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": { | ||
|  |             "align": null, | ||
|  |             "displayMode": "auto" | ||
|  |           }, | ||
|  |           "decimals": 1, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "ms" | ||
|  |         }, | ||
|  |         "overrides": [ | ||
|  |           { | ||
|  |             "matcher": { | ||
|  |               "id": "byName", | ||
|  |               "options": "Config Setting" | ||
|  |             }, | ||
|  |             "properties": [ | ||
|  |               { | ||
|  |                 "id": "mappings", | ||
|  |                 "value": [ | ||
|  |                   { | ||
|  |                     "from": "", | ||
|  |                     "id": 1, | ||
|  |                     "text": "Cooldown", | ||
|  |                     "to": "", | ||
|  |                     "type": 1, | ||
|  |                     "value": "pinchflat_prom_ex_oban_init_dispatch_cooldown_milliseconds" | ||
|  |                   }, | ||
|  |                   { | ||
|  |                     "from": "", | ||
|  |                     "id": 2, | ||
|  |                     "text": "Global Poll Interval", | ||
|  |                     "to": "", | ||
|  |                     "type": 1, | ||
|  |                     "value": "pinchflat_prom_ex_oban_init_poll_interval_milliseconds" | ||
|  |                   }, | ||
|  |                   { | ||
|  |                     "from": "", | ||
|  |                     "id": 3, | ||
|  |                     "text": "Shutdown Grace Period", | ||
|  |                     "to": "", | ||
|  |                     "type": 1, | ||
|  |                     "value": "pinchflat_prom_ex_oban_init_shutdown_grace_period_milliseconds" | ||
|  |                   } | ||
|  |                 ] | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         ] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 5, | ||
|  |         "x": 0, | ||
|  |         "y": 1 | ||
|  |       }, | ||
|  |       "id": 50, | ||
|  |       "options": { | ||
|  |         "showHeader": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "{__name__=~\"pinchflat_prom_ex_oban_init_shutdown_grace_period_milliseconds|pinchflat_prom_ex_oban_init_poll_interval_milliseconds|pinchflat_prom_ex_oban_init_dispatch_cooldown_milliseconds\", job=\"$job\", instance=\"$instance\", name=\"$oban\"}", | ||
|  |           "format": "table", | ||
|  |           "instant": true, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Oban Time Limit Settings", | ||
|  |       "transformations": [ | ||
|  |         { | ||
|  |           "id": "organize", | ||
|  |           "options": { | ||
|  |             "excludeByName": { | ||
|  |               "Time": true, | ||
|  |               "__name__": false, | ||
|  |               "instance": true, | ||
|  |               "job": true, | ||
|  |               "name": true | ||
|  |             }, | ||
|  |             "indexByName": {}, | ||
|  |             "renameByName": { | ||
|  |               "Value": "Time Value", | ||
|  |               "__name__": "Config Setting" | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |       ], | ||
|  |       "type": "table" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs in each queue that are in the available state.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "mappings": [], | ||
|  |           "max": 500, | ||
|  |           "noValue": "NA", | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "#EAB839", | ||
|  |                 "value": 400 | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "red", | ||
|  |                 "value": 500 | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "locale" | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 12, | ||
|  |         "w": 7, | ||
|  |         "x": 5, | ||
|  |         "y": 1 | ||
|  |       }, | ||
|  |       "id": 60, | ||
|  |       "options": { | ||
|  |         "displayMode": "lcd", | ||
|  |         "orientation": "horizontal", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "showUnfilled": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_queue_length_count{job=\"$job\", instance=\"$instance\", name=\"$oban\", state=\"available\"}", | ||
|  |           "instant": true, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Available Jobs in Queue", | ||
|  |       "type": "bargauge" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The configuration of the selected Oban instance", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": { | ||
|  |             "align": null, | ||
|  |             "displayMode": "auto" | ||
|  |           }, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 1 | ||
|  |       }, | ||
|  |       "id": 49, | ||
|  |       "options": { | ||
|  |         "showHeader": true, | ||
|  |         "sortBy": [] | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "{__name__=\"pinchflat_prom_ex_oban_init_status_info\", job=\"$job\", instance=\"$instance\", name=\"$oban\"}", | ||
|  |           "format": "table", | ||
|  |           "instant": true, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Oban Configuration", | ||
|  |       "transformations": [ | ||
|  |         { | ||
|  |           "id": "organize", | ||
|  |           "options": { | ||
|  |             "excludeByName": { | ||
|  |               "Time": true, | ||
|  |               "Value": true, | ||
|  |               "__name__": true, | ||
|  |               "instance": true, | ||
|  |               "job": true | ||
|  |             }, | ||
|  |             "indexByName": {}, | ||
|  |             "renameByName": { | ||
|  |               "name": "Oban Instance", | ||
|  |               "node": "Node", | ||
|  |               "plugins": "Configured Plugins", | ||
|  |               "prefix": "Postgres Schema", | ||
|  |               "queues": "Configured Queues", | ||
|  |               "repo": "Ecto Repo" | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |       ], | ||
|  |       "type": "table" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The configured concurrency limits for each of the queues under the Oban supervisor.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": { | ||
|  |             "align": null | ||
|  |           }, | ||
|  |           "decimals": 1, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "locale" | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 5, | ||
|  |         "x": 0, | ||
|  |         "y": 7 | ||
|  |       }, | ||
|  |       "id": 36, | ||
|  |       "options": { | ||
|  |         "showHeader": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_init_queue_concurrency_limit{instance=\"$instance\", job=\"$job\", name=\"$oban\"}", | ||
|  |           "format": "table", | ||
|  |           "instant": true, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Queue Concurrency Limits", | ||
|  |       "transformations": [ | ||
|  |         { | ||
|  |           "id": "organize", | ||
|  |           "options": { | ||
|  |             "excludeByName": { | ||
|  |               "Time": true, | ||
|  |               "__name__": true, | ||
|  |               "instance": true, | ||
|  |               "job": true, | ||
|  |               "name": true | ||
|  |             }, | ||
|  |             "indexByName": {}, | ||
|  |             "renameByName": { | ||
|  |               "Value": "Concurrent Workers", | ||
|  |               "queue": "Queue" | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |       ], | ||
|  |       "type": "table" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs processed across all queues and states.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "decimals": 1, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "locale" | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 4, | ||
|  |         "x": 12, | ||
|  |         "y": 7 | ||
|  |       }, | ||
|  |       "id": 45, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "area", | ||
|  |         "justifyMode": "center", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "round(sum(increase(pinchflat_prom_ex_oban_job_processing_duration_milliseconds_count{instance=\"$instance\", job=\"$job\", name=\"$oban\"}[$interval])))", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A", | ||
|  |           "format": "table" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Processed Jobs (by $interval interval)", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs that resulted in an error across all queues.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "decimals": 1, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "locale" | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 4, | ||
|  |         "x": 16, | ||
|  |         "y": 7 | ||
|  |       }, | ||
|  |       "id": 46, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "area", | ||
|  |         "justifyMode": "center", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "round(sum(increase(pinchflat_prom_ex_oban_job_exception_duration_milliseconds_count{instance=\"$instance\", job=\"$job\", name=\"$oban\"}[$interval])))", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A", | ||
|  |           "format": "table" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Job Errors (by $interval interval)", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs that have been enqueued.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "decimals": 1, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               } | ||
|  |             ] | ||
|  |           }, | ||
|  |           "unit": "locale" | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 6, | ||
|  |         "w": 4, | ||
|  |         "x": 20, | ||
|  |         "y": 7 | ||
|  |       }, | ||
|  |       "id": 47, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "area", | ||
|  |         "justifyMode": "center", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "round(sum(increase(pinchflat_prom_ex_oban_producer_dispatched_count_count{instance=\"$instance\", job=\"$job\", name=\"$oban\"}[$interval])))", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A", | ||
|  |           "format": "table" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Jobs Enqueued (by $interval interval)", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 13 | ||
|  |       }, | ||
|  |       "id": 2, | ||
|  |       "panels": [], | ||
|  |       "title": "Successful Job Processing Details", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing the time it took to process jobs across all queues.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 14 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 6, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_job_processing_duration_milliseconds_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Job Execution Time", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "ms", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing how long jobs are waiting in queue for processing.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 14 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 12, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_job_queue_time_milliseconds_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Job Queue Time", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "ms", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time it took to process jobs per queue. This will include jobs that ended with a successful, snoozed, or discarded state.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 27 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 11, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_processing_duration_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_processing_duration_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ state }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Execution Time", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "Execution Time", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time a job waited in queue for processing.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 27 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 44, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_queue_time_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_queue_time_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ state }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Queue Time", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "In Queue Time", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time it took to process jobs per queue. This will include jobs that ended with a successful, snoozed, or discarded state.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 40 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 51, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_complete_attempts_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_complete_attempts_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ state }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Attempts", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "locale", | ||
|  |           "label": "Job Attempts", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 53 | ||
|  |       }, | ||
|  |       "id": 54, | ||
|  |       "panels": [], | ||
|  |       "title": "Job Error Details", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing the time it took to process jobs across all queues that resulted in an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 54 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 55, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_job_exception_duration_milliseconds_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Job Execution Time", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "ms", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing how long jobs are waiting in queue for processing that resulted in an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 54 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 56, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_job_exception_queue_time_milliseconds_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Job Queue Time", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "ms", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time it took to process jobs per queue that resulted in an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 67 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 57, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_exception_duration_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_exception_duration_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ error }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Execution Time", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "Execution Time", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time a job waited in queue for processing prior to resulting in an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 67 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 58, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_exception_queue_time_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_exception_queue_time_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ error }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Queue Time", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "In Queue Time", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average time it took to process jobs per queue that resulted in an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 80 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 52, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": true, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "hideEmpty": false, | ||
|  |         "hideZero": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": true, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_job_exception_attempts_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_job_exception_attempts_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "({{ state }}) {{ name }} :: {{ worker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Job Failure Attempts", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "locale", | ||
|  |           "label": "Job Attempts", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 93 | ||
|  |       }, | ||
|  |       "id": 4, | ||
|  |       "panels": [], | ||
|  |       "title": "Queue Details", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs marked as available in each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 94 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 15, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": false, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_queue_length_count{job=\"$job\", instance=\"$instance\", name=\"$oban\", state=\"available\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Available Jobs per Queue", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs marked as completed in each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 94 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 63, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": false, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_queue_length_count{job=\"$job\", instance=\"$instance\", name=\"$oban\", state=\"completed\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Completed Jobs per Queue", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs marked as executing in each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 107 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 62, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": false, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_queue_length_count{job=\"$job\", instance=\"$instance\", name=\"$oban\", state=\"executing\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Executing Jobs per Queue", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of jobs marked as retryable in each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 107 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 61, | ||
|  |       "legend": { | ||
|  |         "alignAsTable": false, | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "rightSide": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null as zero", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_queue_length_count{job=\"$job\", instance=\"$instance\", name=\"$oban\", state=\"retryable\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Retryable Jobs per Queue", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": null, | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 120 | ||
|  |       }, | ||
|  |       "id": 30, | ||
|  |       "panels": [], | ||
|  |       "title": "Producer Details", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing how long jobs to be dispatched.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 121 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 73, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_producer_duration_milliseconds_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Producer Dispatch Time", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "ms", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "cards": { | ||
|  |         "cardPadding": null, | ||
|  |         "cardRound": null | ||
|  |       }, | ||
|  |       "color": { | ||
|  |         "cardColor": "#b4ff00", | ||
|  |         "colorScale": "sqrt", | ||
|  |         "colorScheme": "interpolateOranges", | ||
|  |         "exponent": 0.5, | ||
|  |         "mode": "spectrum" | ||
|  |       }, | ||
|  |       "dataFormat": "tsbuckets", | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "A heatmap showing the number of jobs that were dispatched.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 121 | ||
|  |       }, | ||
|  |       "heatmap": {}, | ||
|  |       "hideZeroBuckets": true, | ||
|  |       "highlightCards": true, | ||
|  |       "id": 74, | ||
|  |       "legend": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "reverseYBuckets": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "sum(irate(pinchflat_prom_ex_oban_producer_dispatched_count_bucket{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])) by (le)", | ||
|  |           "format": "heatmap", | ||
|  |           "hide": false, | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ le }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Producer Dispatch Count", | ||
|  |       "tooltip": { | ||
|  |         "show": true, | ||
|  |         "showHistogram": true | ||
|  |       }, | ||
|  |       "type": "heatmap", | ||
|  |       "xAxis": { | ||
|  |         "show": true | ||
|  |       }, | ||
|  |       "xBucketNumber": null, | ||
|  |       "xBucketSize": null, | ||
|  |       "yAxis": { | ||
|  |         "decimals": null, | ||
|  |         "format": "locale", | ||
|  |         "logBase": 1, | ||
|  |         "max": null, | ||
|  |         "min": null, | ||
|  |         "show": true, | ||
|  |         "splitFactor": null | ||
|  |       }, | ||
|  |       "yBucketBound": "auto", | ||
|  |       "yBucketNumber": null, | ||
|  |       "yBucketSize": null | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average amount of time it took to dispatch jobs to each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 134 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 67, | ||
|  |       "legend": { | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_producer_duration_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_producer_duration_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Dispatch Time", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average number of jobs dispatched to each queue.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 134 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 75, | ||
|  |       "legend": { | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_producer_dispatched_count_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_producer_dispatched_count_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Dispatch Count", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The average amount of time it took to encounter an encounter an error.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 147 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 76, | ||
|  |       "legend": { | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "irate(pinchflat_prom_ex_oban_producer_exception_duration_milliseconds_sum{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval]) / irate(pinchflat_prom_ex_oban_producer_exception_duration_milliseconds_count{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ queue }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Average Exception Duration", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "ms", | ||
|  |           "label": "Number of Jobs", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "collapsed": false, | ||
|  |       "datasource": null, | ||
|  |       "gridPos": { | ||
|  |         "h": 1, | ||
|  |         "w": 24, | ||
|  |         "x": 0, | ||
|  |         "y": 160 | ||
|  |       }, | ||
|  |       "id": 65, | ||
|  |       "panels": [], | ||
|  |       "title": "Circuit Breaker Details", | ||
|  |       "type": "row" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "This is the total number of trip events that have been encountered by the selected application and Oban instances.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "noValue": "0", | ||
|  |           "decimals": 0, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "red", | ||
|  |                 "value": 80 | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 5, | ||
|  |         "w": 6, | ||
|  |         "x": 0, | ||
|  |         "y": 161 | ||
|  |       }, | ||
|  |       "id": 78, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "none", | ||
|  |         "justifyMode": "auto", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "increase(pinchflat_prom_ex_oban_circuit_trip_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[1h])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Circuit Trip Events (last 1 hour)", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "This is the total number of trip events that have been encountered by the selected application and Oban instances.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "noValue": "0", | ||
|  |           "decimals": 0, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "red", | ||
|  |                 "value": 80 | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 5, | ||
|  |         "w": 6, | ||
|  |         "x": 6, | ||
|  |         "y": 161 | ||
|  |       }, | ||
|  |       "id": 80, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "none", | ||
|  |         "justifyMode": "auto", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_circuit_trip_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Total Circuit Trip Events", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "This is the total number of open events that have been encountered by the selected application and Oban instances.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "noValue": "0", | ||
|  |           "decimals": 0, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "red", | ||
|  |                 "value": 80 | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 5, | ||
|  |         "w": 6, | ||
|  |         "x": 12, | ||
|  |         "y": 161 | ||
|  |       }, | ||
|  |       "id": 81, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "none", | ||
|  |         "justifyMode": "auto", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "increase(pinchflat_prom_ex_oban_circuit_open_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[1h])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Circuit Open Events (last 1 hour)", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "This is the total number of open events that have been encountered by the selected application and Oban instances.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {}, | ||
|  |           "noValue": "0", | ||
|  |           "decimals": 0, | ||
|  |           "mappings": [], | ||
|  |           "thresholds": { | ||
|  |             "mode": "absolute", | ||
|  |             "steps": [ | ||
|  |               { | ||
|  |                 "color": "green", | ||
|  |                 "value": null | ||
|  |               }, | ||
|  |               { | ||
|  |                 "color": "red", | ||
|  |                 "value": 80 | ||
|  |               } | ||
|  |             ] | ||
|  |           } | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "gridPos": { | ||
|  |         "h": 5, | ||
|  |         "w": 6, | ||
|  |         "x": 18, | ||
|  |         "y": 161 | ||
|  |       }, | ||
|  |       "id": 79, | ||
|  |       "options": { | ||
|  |         "colorMode": "value", | ||
|  |         "graphMode": "none", | ||
|  |         "justifyMode": "auto", | ||
|  |         "orientation": "auto", | ||
|  |         "reduceOptions": { | ||
|  |           "calcs": ["lastNotNull"], | ||
|  |           "fields": "", | ||
|  |           "values": false | ||
|  |         }, | ||
|  |         "textMode": "auto" | ||
|  |       }, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "pinchflat_prom_ex_oban_circuit_open_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "timeFrom": null, | ||
|  |       "timeShift": null, | ||
|  |       "title": "Total Circuit Open Events", | ||
|  |       "type": "stat" | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of circuit breaker trip events that occurred along with what component tripped the breaker.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 0, | ||
|  |         "y": 166 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 70, | ||
|  |       "legend": { | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "increase(pinchflat_prom_ex_oban_circuit_trip_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ circuit_breaker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Circuit Breaker Trip Events", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Circuit Trips", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     }, | ||
|  |     { | ||
|  |       "aliasColors": {}, | ||
|  |       "bars": false, | ||
|  |       "dashLength": 10, | ||
|  |       "dashes": false, | ||
|  |       "datasource": "prometheus", | ||
|  |       "description": "The number of circuit breaker open events that occurred along with what component tripped the breaker.", | ||
|  |       "fieldConfig": { | ||
|  |         "defaults": { | ||
|  |           "custom": {} | ||
|  |         }, | ||
|  |         "overrides": [] | ||
|  |       }, | ||
|  |       "fill": 1, | ||
|  |       "fillGradient": 0, | ||
|  |       "gridPos": { | ||
|  |         "h": 13, | ||
|  |         "w": 12, | ||
|  |         "x": 12, | ||
|  |         "y": 166 | ||
|  |       }, | ||
|  |       "hiddenSeries": false, | ||
|  |       "id": 72, | ||
|  |       "legend": { | ||
|  |         "avg": false, | ||
|  |         "current": false, | ||
|  |         "max": false, | ||
|  |         "min": false, | ||
|  |         "show": true, | ||
|  |         "total": false, | ||
|  |         "values": false | ||
|  |       }, | ||
|  |       "lines": true, | ||
|  |       "linewidth": 1, | ||
|  |       "nullPointMode": "null", | ||
|  |       "percentage": false, | ||
|  |       "pluginVersion": "7.1.3", | ||
|  |       "pointradius": 2, | ||
|  |       "points": false, | ||
|  |       "renderer": "flot", | ||
|  |       "seriesOverrides": [], | ||
|  |       "spaceLength": 10, | ||
|  |       "stack": false, | ||
|  |       "steppedLine": false, | ||
|  |       "targets": [ | ||
|  |         { | ||
|  |           "expr": "increase(pinchflat_prom_ex_oban_circuit_open_total{job=\"$job\", instance=\"$instance\", name=\"$oban\"}[$interval])", | ||
|  |           "interval": "", | ||
|  |           "legendFormat": "{{ circuit_breaker }}", | ||
|  |           "refId": "A" | ||
|  |         } | ||
|  |       ], | ||
|  |       "thresholds": [], | ||
|  |       "timeFrom": null, | ||
|  |       "timeRegions": [], | ||
|  |       "timeShift": null, | ||
|  |       "title": "Circuit Breaker Open Events", | ||
|  |       "tooltip": { | ||
|  |         "shared": true, | ||
|  |         "sort": 2, | ||
|  |         "value_type": "individual" | ||
|  |       }, | ||
|  |       "type": "graph", | ||
|  |       "xaxis": { | ||
|  |         "buckets": null, | ||
|  |         "mode": "time", | ||
|  |         "name": null, | ||
|  |         "show": true, | ||
|  |         "values": [] | ||
|  |       }, | ||
|  |       "yaxes": [ | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "Number of Circuit Opens", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": "0", | ||
|  |           "show": true | ||
|  |         }, | ||
|  |         { | ||
|  |           "format": "short", | ||
|  |           "label": "", | ||
|  |           "logBase": 1, | ||
|  |           "max": null, | ||
|  |           "min": null, | ||
|  |           "show": false | ||
|  |         } | ||
|  |       ], | ||
|  |       "yaxis": { | ||
|  |         "align": false, | ||
|  |         "alignLevel": null | ||
|  |       } | ||
|  |     } | ||
|  |   ], | ||
|  |   "refresh": "5s", | ||
|  |   "schemaVersion": 26, | ||
|  |   "style": "dark", | ||
|  |   "tags": ["PromEx", "Oban", "pinchflat"], | ||
|  |   "templating": { | ||
|  |     "list": [ | ||
|  |       { | ||
|  |         "allValue": null, | ||
|  |         "current": { | ||
|  |           "selected": false, | ||
|  |           "text": "elixir_app", | ||
|  |           "value": "elixir_app" | ||
|  |         }, | ||
|  |         "datasource": "prometheus", | ||
|  |         "definition": "label_values(pinchflat_prom_ex_prom_ex_status_info, job)", | ||
|  |         "hide": 0, | ||
|  |         "includeAll": false, | ||
|  |         "label": "Prometheus Job", | ||
|  |         "multi": false, | ||
|  |         "name": "job", | ||
|  |         "options": [], | ||
|  |         "query": "label_values(pinchflat_prom_ex_prom_ex_status_info, job)", | ||
|  |         "refresh": 2, | ||
|  |         "regex": "", | ||
|  |         "skipUrlSync": false, | ||
|  |         "sort": 6, | ||
|  |         "tagValuesQuery": "", | ||
|  |         "tags": [], | ||
|  |         "tagsQuery": "", | ||
|  |         "type": "query", | ||
|  |         "useTags": false | ||
|  |       }, | ||
|  |       { | ||
|  |         "allValue": null, | ||
|  |         "current": { | ||
|  |           "selected": false, | ||
|  |           "text": "elixir_app_one:4000", | ||
|  |           "value": "elixir_app_one:4000" | ||
|  |         }, | ||
|  |         "datasource": "prometheus", | ||
|  |         "definition": "label_values(pinchflat_prom_ex_prom_ex_status_info, instance)", | ||
|  |         "hide": 0, | ||
|  |         "includeAll": false, | ||
|  |         "label": "Application Instance", | ||
|  |         "multi": false, | ||
|  |         "name": "instance", | ||
|  |         "options": [], | ||
|  |         "query": "label_values(pinchflat_prom_ex_prom_ex_status_info{job=\"$job\"}, instance)", | ||
|  |         "refresh": 2, | ||
|  |         "regex": "", | ||
|  |         "skipUrlSync": false, | ||
|  |         "sort": 0, | ||
|  |         "tagValuesQuery": "", | ||
|  |         "tags": [], | ||
|  |         "tagsQuery": "", | ||
|  |         "type": "query", | ||
|  |         "useTags": false | ||
|  |       }, | ||
|  |       { | ||
|  |         "allValue": null, | ||
|  |         "datasource": "prometheus", | ||
|  |         "definition": "label_values(pinchflat_prom_ex_oban_init_status_info, name)", | ||
|  |         "hide": 0, | ||
|  |         "includeAll": false, | ||
|  |         "label": "Oban Instance", | ||
|  |         "multi": false, | ||
|  |         "name": "oban", | ||
|  |         "options": [], | ||
|  |         "query": "label_values(pinchflat_prom_ex_oban_init_status_info, name)", | ||
|  |         "refresh": 1, | ||
|  |         "regex": "", | ||
|  |         "skipUrlSync": false, | ||
|  |         "sort": 1, | ||
|  |         "tagValuesQuery": "", | ||
|  |         "tags": [], | ||
|  |         "tagsQuery": "", | ||
|  |         "type": "query", | ||
|  |         "useTags": false | ||
|  |       }, | ||
|  |       { | ||
|  |         "auto": false, | ||
|  |         "auto_count": 30, | ||
|  |         "auto_min": "10s", | ||
|  |         "current": { | ||
|  |           "selected": true, | ||
|  |           "text": "30s", | ||
|  |           "value": "30s" | ||
|  |         }, | ||
|  |         "hide": 0, | ||
|  |         "label": "Interval", | ||
|  |         "name": "interval", | ||
|  |         "options": [ | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "15s", | ||
|  |             "value": "15s" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": true, | ||
|  |             "text": "30s", | ||
|  |             "value": "30s" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "1m", | ||
|  |             "value": "1m" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "5m", | ||
|  |             "value": "5m" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "15m", | ||
|  |             "value": "15m" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "30m", | ||
|  |             "value": "30m" | ||
|  |           }, | ||
|  |           { | ||
|  |             "selected": false, | ||
|  |             "text": "1h", | ||
|  |             "value": "1h" | ||
|  |           } | ||
|  |         ], | ||
|  |         "query": "15s, 30s, 1m, 5m, 15m, 30m, 1h", | ||
|  |         "queryValue": "", | ||
|  |         "refresh": 2, | ||
|  |         "skipUrlSync": false, | ||
|  |         "type": "interval" | ||
|  |       } | ||
|  |     ] | ||
|  |   }, | ||
|  |   "time": { | ||
|  |     "from": "now-1h", | ||
|  |     "to": "now" | ||
|  |   }, | ||
|  |   "timepicker": { | ||
|  |     "refresh_intervals": ["5s", "10s", "30s", "1m", "5m"] | ||
|  |   }, | ||
|  |   "timezone": "", | ||
|  |   "title": "Pinchflat - PromEx Oban Dashboard", | ||
|  |   "uid": "AF9058A0496CA7FF8D4FA747EEDC7AF3", | ||
|  |   "version": 1 | ||
|  | } |