{ "__inputs": [ { "name": "DS_PROMETHEUS", "label": "Prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" }, { "name": "VAR_BLOCKY_URL", "type": "constant", "label": "blocky API URL", "value": "http://blocky:4000", "description": "Base URL of the blocky HTTP API, used by the blocking control links" } ], "__elements": {}, "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "10.4.0" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" }, { "type": "panel", "id": "timeseries", "name": "Time series", "version": "" }, { "type": "panel", "id": "stat", "name": "Stat", "version": "" }, { "type": "panel", "id": "piechart", "name": "Pie chart", "version": "" }, { "type": "panel", "id": "bargauge", "name": "Bar gauge", "version": "" }, { "type": "panel", "id": "heatmap", "name": "Heatmap", "version": "" }, { "type": "panel", "id": "state-timeline", "name": "State timeline", "version": "" }, { "type": "panel", "id": "canvas", "name": "Canvas", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "description": "Operational dashboard for the blocky DNS proxy and ad blocker: traffic, latency, blocking effectiveness, caching, DNSSEC, rate limiting and Go runtime health.", "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, "id": null, "links": [ { "title": "blocky docs", "type": "link", "icon": "doc", "url": "https://0xerr0r.github.io/blocky/", "targetBlank": true, "tooltip": "", "asDropdown": false, "includeVars": false, "keepTime": false, "tags": [] } ], "panels": [ { "id": 1, "type": "row", "title": "Overview", "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "panels": [] }, { "id": 2, "type": "stat", "title": "Blocking", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 0, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [ { "type": "value", "options": { "0": { "text": "Disabled", "color": "red", "index": 1 }, "1": { "text": "Enabled", "color": "green", "index": 0 } } } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "green", "value": 1 } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "background", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "min(blocky_blocking_enabled{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true } ], "description": "Ad/tracker blocking status. Use the 'Blocking control' buttons below to enable or temporarily disable blocking via the blocky API." }, { "id": 3, "type": "stat", "title": "Query rate", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 4, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "reqps", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] }, "decimals": 1 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false } ], "description": "Current DNS queries per second across all selected instances." }, { "id": 4, "type": "stat", "title": "Blocked", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 8, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "percentunit", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] }, "decimals": 1 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(increase(blocky_response_total{response_type=\"BLOCKED\", job=~\"$job\", instance=~\"$instance\"}[$__range])) / sum(increase(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__range]))", "refId": "A", "range": false, "instant": true } ], "description": "Share of queries answered as BLOCKED over the dashboard time range." }, { "id": 5, "type": "stat", "title": "p95 latency", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 12, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "s", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 0.1 }, { "color": "red", "value": 0.5 } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.95, sum by (le) (rate(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false } ], "description": "95th percentile of request duration (all response types)." }, { "id": 6, "type": "stat", "title": "Cache hit ratio", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 16, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "percentunit", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "yellow", "value": 0.3 }, { "color": "green", "value": 0.6 } ] }, "decimals": 1 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_cache_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])) / (sum(rate(blocky_cache_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])) + sum(rate(blocky_cache_misses_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false } ], "description": "Share of cacheable queries answered from the result cache." }, { "id": 7, "type": "stat", "title": "Errors", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 4, "x": 20, "y": 1 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 1 }, { "color": "red", "value": 100 } ] }, "decimals": 0 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(increase(blocky_error_total{job=~\"$job\", instance=~\"$instance\"}[$__range]))", "refId": "A", "range": false, "instant": true } ], "description": "Queries that ended in an error over the dashboard time range." }, { "id": 8, "type": "stat", "title": "Version", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 0, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "name", "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "blocky_build_info{job=~\"$job\", instance=~\"$instance\"}", "refId": "A", "range": false, "instant": true, "legendFormat": "{{version}}" } ] }, { "id": 9, "type": "stat", "title": "Uptime", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 3, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "s", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] }, "decimals": 1 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "time() - max(process_start_time_seconds{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true } ], "description": "Time since the (longest running) blocky process started." }, { "id": 10, "type": "stat", "title": "Denylist entries", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 6, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(blocky_denylist_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true } ], "description": "Total domains in all denylist groups (summed over instances)." }, { "id": 11, "type": "stat", "title": "Last list refresh", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 9, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "s", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 86400 }, { "color": "red", "value": 259200 } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "time() - max(blocky_last_list_group_refresh_timestamp_seconds{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true } ], "description": "Age of the newest deny/allowlist refresh. Turns yellow after one day and red after three days without a refresh." }, { "id": 12, "type": "stat", "title": "Cache entries", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 12, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(blocky_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true } ], "description": "Entries currently in the DNS result cache (summed over instances)." }, { "id": 13, "type": "stat", "title": "Failed list downloads", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 4, "w": 3, "x": 15, "y": 5 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 1 }, { "color": "red", "value": 5 } ] }, "decimals": 0 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "orientation": "auto", "textMode": "auto", "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "wideLayout": true, "showPercentChange": false, "percentChangeColorMode": "standard" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(increase(blocky_failed_downloads_total{job=~\"$job\", instance=~\"$instance\"}[$__range])) or vector(0)", "refId": "A", "range": false, "instant": true } ], "description": "Deny/allowlist download failures over the dashboard time range." }, { "id": 14, "type": "canvas", "title": "Blocking control", "datasource": { "type": "datasource", "uid": "grafana" }, "gridPos": { "h": 4, "w": 6, "x": 18, "y": 5 }, "fieldConfig": { "defaults": {}, "overrides": [] }, "options": { "inlineEditing": false, "showAdvancedTypes": false, "panZoom": false, "infinitePan": false, "root": { "type": "frame", "name": "Element 0", "background": { "color": { "fixed": "transparent" } }, "border": { "color": { "fixed": "transparent" } }, "constraint": { "horizontal": "left", "vertical": "top" }, "placement": { "left": 0, "top": 0, "width": 100, "height": 100, "rotation": 0 }, "elements": [ { "type": "button", "name": "btn-enable", "config": { "text": { "mode": "fixed", "fixed": "On" }, "api": { "endpoint": "$blocky_url/api/blocking/enable", "method": "GET", "queryParams": [], "headerParams": [] }, "style": { "variant": "success" } }, "background": { "color": { "fixed": "transparent" } }, "border": { "color": { "fixed": "transparent" } }, "constraint": { "horizontal": "left", "vertical": "top" }, "placement": { "left": 8, "top": 36, "width": 70, "height": 28, "rotation": 0 }, "links": [] }, { "type": "button", "name": "btn-disable-5m", "config": { "text": { "mode": "fixed", "fixed": "Off 5m" }, "api": { "endpoint": "$blocky_url/api/blocking/disable", "method": "GET", "queryParams": [ [ "duration", "5m" ] ], "headerParams": [] }, "style": { "variant": "destructive" } }, "background": { "color": { "fixed": "transparent" } }, "border": { "color": { "fixed": "transparent" } }, "constraint": { "horizontal": "left", "vertical": "top" }, "placement": { "left": 86, "top": 36, "width": 85, "height": 28, "rotation": 0 }, "links": [] }, { "type": "button", "name": "btn-disable-30m", "config": { "text": { "mode": "fixed", "fixed": "Off 30m" }, "api": { "endpoint": "$blocky_url/api/blocking/disable", "method": "GET", "queryParams": [ [ "duration", "30m" ] ], "headerParams": [] }, "style": { "variant": "destructive" } }, "background": { "color": { "fixed": "transparent" } }, "border": { "color": { "fixed": "transparent" } }, "constraint": { "horizontal": "left", "vertical": "top" }, "placement": { "left": 179, "top": 36, "width": 95, "height": 28, "rotation": 0 }, "links": [] } ] } }, "targets": [], "description": "Enable or temporarily disable blocking via the blocky API ($blocky_url). Grafana shows a notification with the result; the 'Blocking' stat and the 'Blocking active' timeline reflect the change on the next refresh." }, { "id": 15, "type": "row", "title": "Traffic", "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 9 }, "panels": [] }, { "id": 16, "type": "timeseries", "title": "Queries by outcome", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 9, "w": 24, "x": 0, "y": 10 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 50, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "normal", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "BLOCKED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] }, { "matcher": { "id": "byName", "options": "CACHED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "blue" } } ] }, { "matcher": { "id": "byName", "options": "RESOLVED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "green" } } ] }, { "matcher": { "id": "byName", "options": "CUSTOMDNS" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "purple" } } ] }, { "matcher": { "id": "byName", "options": "CONDITIONAL" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "yellow" } } ] }, { "matcher": { "id": "byName", "options": "HOSTSFILE" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "orange" } } ] }, { "matcher": { "id": "byName", "options": "FILTERED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "dark-red" } } ] }, { "matcher": { "id": "byName", "options": "SPECIAL" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "dark-purple" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (response_type) (rate(blocky_response_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{response_type}}" } ], "description": "Stacked query rate split by how blocky answered: from cache, blocked, resolved upstream, custom DNS, etc." }, { "id": 17, "type": "timeseries", "title": "Query rate by client (top 10)", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 19 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "topk(10, sum by (client) (rate(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{client}}" } ], "description": "The ten busiest clients over time." }, { "id": 18, "type": "bargauge", "title": "Top clients", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 19 }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlPu" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] } }, "overrides": [] }, "options": { "displayMode": "gradient", "orientation": "horizontal", "valueMode": "color", "showUnfilled": true, "minVizHeight": 16, "minVizWidth": 8, "maxVizHeight": 300, "sizing": "auto", "namePlacement": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "topk(10, sum by (client) (ceil(increase(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__range]))))", "refId": "A", "range": false, "instant": true, "legendFormat": "{{client}}" } ], "description": "Clients with the most queries over the dashboard time range." }, { "id": 19, "type": "piechart", "title": "Query types", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 28 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "mappings": [], "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } } }, "overrides": [] }, "options": { "pieType": "donut", "displayLabels": [ "percent" ], "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": [ "value", "percent" ] }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (type) (ceil(increase(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__range])))", "refId": "A", "range": false, "instant": true, "legendFormat": "{{type}}" } ], "description": "DNS record types requested (A, AAAA, PTR, \u2026)." }, { "id": 20, "type": "piechart", "title": "Response codes", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 28 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "mappings": [], "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } } }, "overrides": [] }, "options": { "pieType": "donut", "displayLabels": [ "percent" ], "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": [ "value", "percent" ] }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (response_code) (ceil(increase(blocky_response_total{job=~\"$job\", instance=~\"$instance\"}[$__range])))", "refId": "A", "range": false, "instant": true, "legendFormat": "{{response_code}}" } ], "description": "DNS response codes returned to clients (NOERROR, NXDOMAIN, SERVFAIL, \u2026)." }, { "id": 21, "type": "piechart", "title": "Response reasons", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 28 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "mappings": [], "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } } }, "overrides": [] }, "options": { "pieType": "donut", "displayLabels": [ "percent" ], "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": [ "value", "percent" ] }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (reason) (ceil(increase(blocky_response_total{job=~\"$job\", instance=~\"$instance\"}[$__range])))", "refId": "A", "range": false, "instant": true, "legendFormat": "{{reason}}" } ], "description": "Answer reason, including the upstream resolver or the denylist group that matched. For blocked queries the `reason` label is group-level (to keep its cardinality bounded); the specific matched rule/domain is available in the query-log dashboard." }, { "id": 22, "type": "row", "title": "Latency", "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 36 }, "panels": [] }, { "id": 23, "type": "timeseries", "title": "Request duration percentiles", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 37 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "s", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 10, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "p50" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "green" } } ] }, { "matcher": { "id": "byName", "options": "p90" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "yellow" } } ] }, { "matcher": { "id": "byName", "options": "p99" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.50, sum by (le) (rate(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false, "legendFormat": "p50" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.90, sum by (le) (rate(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "B", "range": true, "instant": false, "legendFormat": "p90" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.99, sum by (le) (rate(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "C", "range": true, "instant": false, "legendFormat": "p99" } ], "description": "Median, 90th and 99th percentile of end-to-end request duration." }, { "id": 24, "type": "heatmap", "title": "Request duration heatmap", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 37 }, "fieldConfig": { "defaults": { "custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "scaleDistribution": { "type": "linear" } } }, "overrides": [] }, "options": { "calculate": false, "yAxis": { "unit": "s", "axisPlacement": "left", "reverse": false }, "color": { "mode": "scheme", "scheme": "Spectral", "steps": 64, "reverse": true, "exponent": 0.5, "fill": "dark-orange" }, "cellGap": 1, "filterValues": { "le": 1e-09 }, "rowsFrame": { "layout": "auto" }, "tooltip": { "mode": "single", "showColorScale": false, "yHistogram": true }, "legend": { "show": true }, "exemplars": { "color": "rgba(255,0,255,0.7)" }, "showValue": "never" }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (le) (increase(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{le}}", "format": "heatmap" } ], "pluginVersion": "11.5.0", "description": "Distribution of request durations over time." }, { "id": 25, "type": "timeseries", "title": "p95 duration by outcome", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 46 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "s", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 0, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "BLOCKED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] }, { "matcher": { "id": "byName", "options": "CACHED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "blue" } } ] }, { "matcher": { "id": "byName", "options": "RESOLVED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "green" } } ] }, { "matcher": { "id": "byName", "options": "CUSTOMDNS" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "purple" } } ] }, { "matcher": { "id": "byName", "options": "CONDITIONAL" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "yellow" } } ] }, { "matcher": { "id": "byName", "options": "HOSTSFILE" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "orange" } } ] }, { "matcher": { "id": "byName", "options": "FILTERED" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "dark-red" } } ] }, { "matcher": { "id": "byName", "options": "SPECIAL" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "dark-purple" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.95, sum by (le, response_type) (rate(blocky_request_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{response_type}}" } ], "description": "p95 duration per response type \u2014 cached answers should be microseconds, RESOLVED reflects upstream latency." }, { "id": 26, "type": "row", "title": "Blocking & lists", "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 54 }, "panels": [] }, { "id": 27, "type": "state-timeline", "title": "Blocking active", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 3, "w": 24, "x": 0, "y": 55 }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [ { "type": "value", "options": { "0": { "text": "Disabled", "color": "red", "index": 1 }, "1": { "text": "Enabled", "color": "green", "index": 0 } } } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null }, { "color": "green", "value": 1 } ] }, "custom": { "lineWidth": 0, "fillOpacity": 80, "spanNulls": false, "insertNulls": false, "hideFrom": { "legend": false, "tooltip": false, "viz": false } } }, "overrides": [] }, "options": { "mergeValues": true, "showValue": "auto", "alignValue": "center", "rowHeight": 0.9, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": false }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "min(blocky_blocking_enabled{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": true, "instant": false, "legendFormat": "blocking" } ], "description": "History of the blocking switch \u2014 shows when blocking was temporarily disabled." }, { "id": 28, "type": "timeseries", "title": "Blocked queries", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 58 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "blocked/s" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] }, { "matcher": { "id": "byName", "options": "blocked %" }, "properties": [ { "id": "unit", "value": "percentunit" }, { "id": "custom.axisPlacement", "value": "right" }, { "id": "custom.fillOpacity", "value": 0 }, { "id": "color", "value": { "mode": "fixed", "fixedColor": "orange" } }, { "id": "max", "value": 1 } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_response_total{response_type=\"BLOCKED\", job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "blocked/s" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_response_total{response_type=\"BLOCKED\", job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])) / sum(rate(blocky_query_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "B", "range": true, "instant": false, "legendFormat": "blocked %" } ], "description": "Rate of blocked queries (left axis) and blocked share of all queries (right axis)." }, { "id": 29, "type": "bargauge", "title": "Top block reasons", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 58 }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlPu" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": null } ] } }, "overrides": [] }, "options": { "displayMode": "gradient", "orientation": "horizontal", "valueMode": "color", "showUnfilled": true, "minVizHeight": 16, "minVizWidth": 8, "maxVizHeight": 300, "sizing": "auto", "namePlacement": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "topk(10, sum by (reason) (ceil(increase(blocky_response_total{response_type=\"BLOCKED\", job=~\"$job\", instance=~\"$instance\"}[$__range]))))", "refId": "A", "range": false, "instant": true, "legendFormat": "{{reason}}" } ], "description": "Which denylist groups blocked the most queries in the dashboard time range. The `reason` metric label is intentionally group-level to keep its cardinality bounded; for the specific matched rule/domain, use the query-log dashboard." }, { "id": 30, "type": "bargauge", "title": "Denylist entries by group", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 66 }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlPu" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] } }, "overrides": [] }, "options": { "displayMode": "gradient", "orientation": "horizontal", "valueMode": "color", "showUnfilled": true, "minVizHeight": 16, "minVizWidth": 8, "maxVizHeight": 300, "sizing": "auto", "namePlacement": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (group) (blocky_denylist_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true, "legendFormat": "{{group}}" } ] }, { "id": 31, "type": "bargauge", "title": "Allowlist entries by group", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 66 }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlPu" }, "unit": "short", "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] } }, "overrides": [] }, "options": { "displayMode": "gradient", "orientation": "horizontal", "valueMode": "color", "showUnfilled": true, "minVizHeight": 16, "minVizWidth": 8, "maxVizHeight": 300, "sizing": "auto", "namePlacement": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (group) (blocky_allowlist_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": false, "instant": true, "legendFormat": "{{group}}" } ] }, { "id": 32, "type": "timeseries", "title": "Failed list downloads", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 66 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "bars", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 80, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "failures" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] } ] }, "options": { "legend": { "calcs": [ "sum" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(increase(blocky_failed_downloads_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "failures" } ], "description": "List download failures over time \u2014 investigate sustained failures (lists go stale)." }, { "id": 33, "type": "row", "title": "Cache & prefetching", "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 73 }, "panels": [] }, { "id": 34, "type": "timeseries", "title": "Cache hit ratio", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 74 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "percentunit", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] }, "max": 1, "min": 0 }, "overrides": [ { "matcher": { "id": "byName", "options": "hit ratio" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "green" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_cache_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])) / (sum(rate(blocky_cache_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])) + sum(rate(blocky_cache_misses_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false, "legendFormat": "hit ratio" } ] }, { "id": 35, "type": "timeseries", "title": "Cache size", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 74 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(blocky_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": true, "instant": false, "legendFormat": "result cache entries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(blocky_prefetch_domain_name_cache_entries{job=~\"$job\", instance=~\"$instance\"})", "refId": "B", "range": true, "instant": false, "legendFormat": "prefetch candidates" } ], "description": "Entries in the result cache and number of domains tracked as prefetch candidates." }, { "id": 36, "type": "timeseries", "title": "Prefetch activity", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 82 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_prefetches_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "prefetches/s" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_prefetch_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "B", "range": true, "instant": false, "legendFormat": "prefetch hits/s" } ], "description": "Domains refreshed ahead of expiry and answers served from prefetched entries." }, { "id": 37, "type": "timeseries", "title": "Redis buffer drops", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 82 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "bars", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 80, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "drops/s" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_redis_cache_buffer_drops_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "drops/s" } ], "description": "Cache writes dropped because the Redis write-through buffer was full. Only relevant with Redis enabled; non-zero values mean Redis cannot keep up." }, { "id": 41, "type": "row", "title": "DNSSEC", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 90 }, "panels": [ { "id": 38, "type": "timeseries", "title": "Validations by result", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 91 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 50, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "normal", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "secure" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "green" } } ] }, { "matcher": { "id": "byName", "options": "insecure" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "yellow" } } ] }, { "matcher": { "id": "byName", "options": "bogus" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] }, { "matcher": { "id": "byName", "options": "indeterminate" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "orange" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (result) (rate(blocky_dnssec_validation_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{result}}" } ], "description": "DNSSEC validation outcomes. A rise in 'bogus' results means responses failed signature validation." }, { "id": 39, "type": "timeseries", "title": "Validation p95 duration", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 91 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "s", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "histogram_quantile(0.95, sum by (le, result) (rate(blocky_dnssec_validation_duration_seconds_bucket{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval])))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{result}}" } ] }, { "id": 40, "type": "timeseries", "title": "Validation cache hits", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 91 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_dnssec_cache_hits_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "cache hits/s" } ] } ] }, { "id": 45, "type": "row", "title": "Rate limiting", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 92 }, "panels": [ { "id": 42, "type": "timeseries", "title": "Dropped queries by protocol", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 93 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "reqps", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum by (protocol) (rate(blocky_rate_limit_drops_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "{{protocol}}" } ], "description": "Queries rejected by the per-client rate limiter." }, { "id": 43, "type": "timeseries", "title": "Active buckets", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 93 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(blocky_rate_limit_active_buckets{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": true, "instant": false, "legendFormat": "buckets" } ], "description": "Token buckets (\u2248 distinct clients) currently tracked in memory." }, { "id": 44, "type": "timeseries", "title": "Bucket store cap exhausted", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 93 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "bars", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 80, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "drops/s" }, "properties": [ { "id": "color", "value": { "mode": "fixed", "fixedColor": "red" } } ] } ] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(blocky_rate_limit_cap_exhausted_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "drops/s" } ], "description": "Queries dropped because the bucket store hit its size cap \u2014 consider raising the cap if this fires under normal load." } ] }, { "id": 49, "type": "row", "title": "Go runtime", "collapsed": true, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 94 }, "panels": [ { "id": 46, "type": "timeseries", "title": "Memory", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 95 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "bytes", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(go_memstats_alloc_bytes{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": true, "instant": false, "legendFormat": "heap allocated" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(go_memstats_sys_bytes{job=~\"$job\", instance=~\"$instance\"})", "refId": "B", "range": true, "instant": false, "legendFormat": "obtained from OS" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(process_resident_memory_bytes{job=~\"$job\", instance=~\"$instance\"})", "refId": "C", "range": true, "instant": false, "legendFormat": "resident (RSS)" } ] }, { "id": 47, "type": "timeseries", "title": "Goroutines", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 95 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(go_goroutines{job=~\"$job\", instance=~\"$instance\"})", "refId": "A", "range": true, "instant": false, "legendFormat": "goroutines" } ] }, { "id": 48, "type": "timeseries", "title": "CPU usage", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 95 }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "percentunit", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "pointSize": 5, "spanNulls": false, "insertNulls": false, "axisPlacement": "auto", "axisLabel": "", "axisColorMode": "text", "axisBorderShow": false, "axisCenteredZero": false, "axisSoftMin": 0, "barAlignment": 0, "barWidthFactor": 0.6, "scaleDistribution": { "type": "linear" }, "stacking": { "mode": "none", "group": "A" }, "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null } ] } }, "overrides": [] }, "options": { "legend": { "calcs": [ "mean", "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "desc" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", "expr": "sum(rate(process_cpu_seconds_total{job=~\"$job\", instance=~\"$instance\"}[$__rate_interval]))", "refId": "A", "range": true, "instant": false, "legendFormat": "cpu" } ] } ] } ], "preload": false, "refresh": "30s", "schemaVersion": 40, "tags": [ "dns", "adblock", "blocky" ], "templating": { "list": [ { "current": { "text": "Default", "value": "default" }, "label": "datasource", "name": "DS_PROMETHEUS", "options": [], "query": "prometheus", "refresh": 1, "regex": "", "type": "datasource" }, { "hide": 2, "label": "blocky API URL", "name": "blocky_url", "query": "${VAR_BLOCKY_URL}", "skipUrlSync": true, "type": "constant", "current": { "value": "${VAR_BLOCKY_URL}", "text": "${VAR_BLOCKY_URL}", "selected": false }, "options": [ { "value": "${VAR_BLOCKY_URL}", "text": "${VAR_BLOCKY_URL}", "selected": false } ] }, { "current": {}, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "definition": "label_values(blocky_build_info, job)", "includeAll": true, "multi": true, "label": "job", "name": "job", "options": [], "query": { "qryType": 1, "query": "label_values(blocky_build_info, job)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 1, "regex": "", "sort": 1, "type": "query" }, { "current": {}, "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "definition": "label_values(blocky_build_info{job=~\"$job\"}, instance)", "includeAll": true, "multi": true, "label": "instance", "name": "instance", "options": [], "query": { "qryType": 1, "query": "label_values(blocky_build_info{job=~\"$job\"}, instance)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 1, "regex": "", "sort": 1, "type": "query" } ] }, "time": { "from": "now-24h", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Blocky", "uid": "blocky-dns", "version": 1, "weekStart": "" }