From 240e0b0d5bfc63ecebc50e0f919c956abd2a5f8b Mon Sep 17 00:00:00 2001 From: IvanNovik Date: Tue, 28 Apr 2026 18:56:32 +0300 Subject: [PATCH] add and fix dashboards for v11, v12 --- README.md | 2 +- dashboards/v11/MarketData.dashboard.json | 584 ++++++++++++++++++++ dashboards/v11/Overview.dashboard.json | 653 ++++++++++++++++++++++ dashboards/v12/MarketData.dashboard.json | 591 ++++++++++++++++++++ dashboards/v12/Overview.dashboard.json | 675 +++++++++++++++++++++++ docker-compose.yaml | 6 +- 6 files changed, 2507 insertions(+), 4 deletions(-) create mode 100644 dashboards/v11/MarketData.dashboard.json create mode 100644 dashboards/v11/Overview.dashboard.json create mode 100644 dashboards/v12/MarketData.dashboard.json create mode 100644 dashboards/v12/Overview.dashboard.json diff --git a/README.md b/README.md index b5c13eb..9d08009 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ TimeBase plugin uses [TimeBase Web Admin](https://webadmin.timebase.info/api/v0/ Supported TimeBase versions: `[5.5.6, 5.7.*]` Supported TimeBase Web Admin versions: `[0.5.5, 1.2.*]` -Supported Grafana versions: `[10.2+, 11+]` +Supported Grafana versions: `[10.2+, 11+, 12+]` Other versions are rather incompatible or partially incompatible. diff --git a/dashboards/v11/MarketData.dashboard.json b/dashboards/v11/MarketData.dashboard.json new file mode 100644 index 0000000..b9a9adc --- /dev/null +++ b/dashboards/v11/MarketData.dashboard.json @@ -0,0 +1,584 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 2, + "links": [], + "panels": [ + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.1, + "drawStyle": "bars", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 0, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 2, + "maxDataPoints": 40, + "maxPerRow": 2, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "red", + "up": "green" + }, + "fields": { + "close": "close", + "high": "high", + "low": "low", + "open": "open", + "volume": "Value" + }, + "includeAllFields": false, + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": false + }, + "mode": "candles", + "tooltip": { + "mode": "single", + "sort": "desc" + } + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries'\nSELECT\nfirst{}(entries[0].price) as 'open',\nlast{}(entries[-1].price) as 'close',\nmax{}(max(entries.price)) as 'high',\nmin{}(min(entries.price)) as 'low'\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A", + "requestType": "DATAFRAME" + } + ], + "title": "Bars", + "type": "candlestick" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'avgPrice',\nbollinger{}(avgPrice) as 'bollinger'\nSELECT\navgPrice,\nsma{timePeriod: 1h}(avgPrice) as 'sma-1h',\ncma{}(avgPrice) as 'cma',\nema{period: 14}(avgPrice) as 'ema-14',\nbollinger.upperBand,\nbollinger.middleBand,\nbollinger.lowerBand\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Indicators", + "type": "timeseries" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 5, + "maxDataPoints": 80, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "none", + "sort": "none" + } + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries'\nSELECT\nsum{}(sum(entries.size)) as 'volume'\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A", + "requestType": "DATAFRAME" + } + ], + "title": "Volume", + "type": "timeseries" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-purple", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 6, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is L2EntryNew] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'avgPrice'\nSELECT\navgPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current $symbol price", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 12, + "y": 13 + }, + "id": 7, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nwith (entries[this is L2EntryNew] as array(L2EntryNew))[this.side == BID] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'bidPrice'\nSELECT\nbidPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current Bid $symbol price", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 18, + "y": 13 + }, + "id": 8, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nwith (entries[this is L2EntryNew] as array(L2EntryNew))[this.side == ASK] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'askPrice'\nSELECT\naskPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current Ask $symbol price", + "type": "stat" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 40, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "TimeBase", + "value": "TimeBase" + }, + "includeAll": false, + "name": "datasource", + "options": [], + "query": "epam-timebase-datasource", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "bitfinex", + "value": "bitfinex" + }, + "datasource": "${datasource}", + "definition": "select key as '__var' array join streams().key as 'key'", + "includeAll": false, + "name": "stream", + "options": [], + "query": "select key as '__var' array join streams().key as 'key'", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "selected": false, + "text": "BTC/USD", + "value": "BTC/USD" + }, + "datasource": "${datasource}", + "definition": "select s as '__var' array join symbols('$stream') as 's'", + "includeAll": false, + "name": "symbol", + "options": [], + "query": "select s as '__var' array join symbols('$stream') as 's'", + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Market Data", + "uid": "29X3MTnnz", + "version": 3, + "weekStart": "" +} diff --git a/dashboards/v11/Overview.dashboard.json b/dashboards/v11/Overview.dashboard.json new file mode 100644 index 0000000..9a67740 --- /dev/null +++ b/dashboards/v11/Overview.dashboard.json @@ -0,0 +1,653 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 1, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 9, + "panels": [], + "title": "Overall info", + "type": "row" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "key" + }, + "properties": [ + { + "id": "custom.width", + "value": 199 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "description" + }, + "properties": [ + { + "id": "custom.width", + "value": 350 + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 19, + "x": 0, + "y": 1 + }, + "id": 2, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "key" + } + ] + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select s.key as 'key', s.description as 'description', s.topTypes.name as 'topTypes' array join streams() as 's'", + "refId": "A" + } + ], + "title": "Streams", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "key", + "description", + "topTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 5, + "x": 19, + "y": 1 + }, + "id": 7, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select size(streams())", + "refId": "A" + } + ], + "title": "Streams count", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 5, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "function" + } + ] + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select \nf.id as 'function', \nf.initArguments.name as 'initArgs', f.initArguments.dataType.baseName as 'initArgTypes', \nf.arguments.dataType.baseName as 'argTypes'\narray join stateful_functions() as f", + "refId": "A" + } + ], + "title": "Stateful functions", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "function", + "initArgs", + "initArgTypes", + "argTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "function" + } + ] + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select \nf.id as 'function', \nf.arguments.dataType.baseName as 'argTypes'\narray join stateless_functions() as f", + "refId": "A" + } + ], + "title": "Stateless functions", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "function", + "initArgs", + "initArgTypes", + "argTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 11, + "panels": [], + "title": "Selected stream", + "type": "row" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 21 + }, + "id": 13, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select t.name as 'typeName' array join streams()[this.key == '$stream'].topTypes as 't'", + "refId": "A" + } + ], + "title": "'$stream' types", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "typeName" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 16, + "x": 8, + "y": 21 + }, + "id": 15, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.4.0", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "SELECT\n\tfields.name,\n\tfields.\"type\".baseName AS 'fieldType',\n\tfields.\"type\".encoding AS 'encoding'\nARRAY JOIN STREAMS()[this.key == '$stream'].topTypes[this.name == '$type'].fields AS 'fields'", + "refId": "A" + } + ], + "title": "Fields from $type", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "fields.name", + "fieldType", + "encoding" + ] + } + } + } + ], + "type": "table" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 40, + "tags": [], + "templating": { + "list": [ + { + "current": { + "text": "epam-timebase-datasource-11", + "value": "efk5lfgpzvnk0c" + }, + "includeAll": false, + "name": "datasource", + "options": [], + "query": "epam-timebase-datasource", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": { + "text": "BBB", + "value": "BBB" + }, + "datasource": "${datasource}", + "definition": "select s.key as '__var' array join streams() as s", + "includeAll": false, + "name": "stream", + "options": [], + "query": "select s.key as '__var' array join streams() as s", + "refresh": 1, + "regex": "", + "sort": 1, + "type": "query" + }, + { + "current": { + "text": "USDC/USDT1", + "value": "USDC/USDT1" + }, + "datasource": "${datasource}", + "definition": "select s as '__var' array join symbols('$stream') as 's'", + "includeAll": false, + "name": "symbol", + "options": [], + "query": "select s as '__var' array join symbols('$stream') as 's'", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "deltix.timebase.api.messages.service.ConnectionStatusChangeMessage", + "value": "deltix.timebase.api.messages.service.ConnectionStatusChangeMessage" + }, + "datasource": "${datasource}", + "definition": "select t.name as '__var' array join streams()[this.key == '$stream'].topTypes as 't'", + "includeAll": false, + "name": "type", + "options": [], + "query": "select t.name as '__var' array join streams()[this.key == '$stream'].topTypes as 't'", + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TimeBase overview", + "uid": "YX4ekTnnz", + "version": 1, + "weekStart": "" +} diff --git a/dashboards/v12/MarketData.dashboard.json b/dashboards/v12/MarketData.dashboard.json new file mode 100644 index 0000000..8e6663d --- /dev/null +++ b/dashboards/v12/MarketData.dashboard.json @@ -0,0 +1,591 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.1, + "drawStyle": "bars", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 0, + "pointSize": 1, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 2, + "maxDataPoints": 40, + "maxPerRow": 2, + "options": { + "candleStyle": "candles", + "colorStrategy": "open-close", + "colors": { + "down": "red", + "up": "green" + }, + "fields": { + "close": "close", + "high": "high", + "low": "low", + "open": "open", + "volume": "Value" + }, + "includeAllFields": false, + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right", + "showLegend": false + }, + "mode": "candles", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "desc" + } + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries'\nSELECT\nfirst{}(entries[0].price) as 'open',\nlast{}(entries[-1].price) as 'close',\nmax{}(max(entries.price)) as 'high',\nmin{}(min(entries.price)) as 'low'\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A", + "requestType": "DATAFRAME" + } + ], + "title": "Bars", + "type": "candlestick" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'avgPrice',\nbollinger{}(avgPrice) as 'bollinger'\nSELECT\navgPrice,\nsma{timePeriod: 1h}(avgPrice) as 'sma-1h',\ncma{}(avgPrice) as 'cma',\nema{period: 14}(avgPrice) as 'ema-14',\nbollinger.upperBand,\nbollinger.middleBand,\nbollinger.lowerBand\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Indicators", + "type": "timeseries" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 9 + }, + "id": 5, + "maxDataPoints": 80, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "none", + "sort": "none" + } + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is TradeEntry] as 'entries'\nSELECT\nsum{}(sum(entries.size)) as 'volume'\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A", + "requestType": "DATAFRAME" + } + ], + "title": "Volume", + "type": "timeseries" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-purple", + "value": 0 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 12, + "y": 9 + }, + "id": 6, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nWITH entries[this is L2EntryNew] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'avgPrice'\nSELECT\navgPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current $symbol price", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-red", + "value": 0 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 12, + "y": 13 + }, + "id": 7, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nwith (entries[this is L2EntryNew] as array(L2EntryNew))[this.side == BID] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'bidPrice'\nSELECT\nbidPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current Bid $symbol price", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green", + "value": 0 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 6, + "x": 18, + "y": 13 + }, + "id": 8, + "maxDataPoints": 200, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "/* one-minute bars based on trades */\nwith (entries[this is L2EntryNew] as array(L2EntryNew))[this.side == ASK] as 'entries',\nsum(entries.price * entries.size) / sum(entries.size) as 'askPrice'\nSELECT\naskPrice\nFROM \"$stream\"\nOVER TIME($__interval)\nWHERE symbol == '$symbol'\nAND notEmpty(entries)\n", + "refId": "A" + } + ], + "title": "Current Ask $symbol price", + "type": "stat" + } + ], + "preload": false, + "refresh": "10s", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "TimeBase", + "value": "TimeBase" + }, + "includeAll": false, + "name": "datasource", + "options": [], + "query": "epam-timebase-datasource", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "bitfinex", + "value": "bitfinex" + }, + "datasource": "${datasource}", + "definition": "select key as '__var' array join streams().key as 'key'", + "includeAll": false, + "name": "stream", + "options": [], + "query": "select key as '__var' array join streams().key as 'key'", + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "type": "query" + }, + { + "current": { + "selected": false, + "text": "BTC/USD", + "value": "BTC/USD" + }, + "datasource": "${datasource}", + "definition": "select s as '__var' array join symbols('$stream') as 's'", + "includeAll": false, + "name": "symbol", + "options": [], + "query": "select s as '__var' array join symbols('$stream') as 's'", + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Market Data", + "uid": "29X3MTnnz", + "version": 4, + "weekStart": "" +} diff --git a/dashboards/v12/Overview.dashboard.json b/dashboards/v12/Overview.dashboard.json new file mode 100644 index 0000000..eb0bde5 --- /dev/null +++ b/dashboards/v12/Overview.dashboard.json @@ -0,0 +1,675 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 1, + "links": [], + "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 9, + "panels": [], + "title": "Overall info", + "type": "row" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "key" + }, + "properties": [ + { + "id": "custom.width", + "value": 199 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "description" + }, + "properties": [ + { + "id": "custom.width", + "value": 350 + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 19, + "x": 0, + "y": 1 + }, + "id": 2, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "key" + } + ] + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select s.key as 'key', s.description as 'description', s.topTypes.name as 'topTypes' array join streams() as 's'", + "refId": "A" + } + ], + "title": "Streams", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "key", + "description", + "topTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 5, + "x": 19, + "y": 1 + }, + "id": 7, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select size(streams())", + "refId": "A" + } + ], + "title": "Streams count", + "type": "stat" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 5, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "function" + } + ] + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select \nf.id as 'function', \nf.initArguments.name as 'initArgs', f.initArguments.dataType.baseName as 'initArgTypes', \nf.arguments.dataType.baseName as 'argTypes'\narray join stateful_functions() as f", + "refId": "A" + } + ], + "title": "Stateful functions", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "function", + "initArgs", + "initArgTypes", + "argTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "function" + } + ] + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select \nf.id as 'function', \nf.arguments.dataType.baseName as 'argTypes'\narray join stateless_functions() as f", + "refId": "A" + } + ], + "title": "Stateless functions", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "function", + "initArgs", + "initArgTypes", + "argTypes" + ] + } + } + } + ], + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 11, + "panels": [], + "title": "Selected stream", + "type": "row" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 21 + }, + "id": 13, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "select t.name as 'typeName' array join streams()[this.key == '$stream'].topTypes as 't'", + "refId": "A" + } + ], + "title": "'$stream' types", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "typeName" + ] + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 16, + "x": 8, + "y": 21 + }, + "id": 15, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "datasource": { + "uid": "${datasource}" + }, + "queryType": "randomWalk", + "raw": true, + "rawQuery": "SELECT\n\tfields.name,\n\tfields.\"type\".baseName AS 'fieldType',\n\tfields.\"type\".encoding AS 'encoding'\nARRAY JOIN STREAMS()[this.key == '$stream'].topTypes[this.name == '$type'].fields AS 'fields'", + "refId": "A" + } + ], + "title": "Fields from $type", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "fields.name", + "fieldType", + "encoding" + ] + } + } + } + ], + "type": "table" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "epam-timebase-datasource", + "value": "efk5sc9nxjbwgc" + }, + "includeAll": false, + "name": "datasource", + "options": [], + "query": "epam-timebase-datasource", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "bitfinex", + "value": "bitfinex" + }, + "datasource": "${datasource}", + "definition": "select s.key as '__var' array join streams() as s", + "includeAll": false, + "name": "stream", + "options": [], + "query": "select s.key as '__var' array join streams() as s", + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "sort": 1, + "type": "query" + }, + { + "current": { + "selected": false, + "text": "BTC/USD", + "value": "BTC/USD" + }, + "datasource": "${datasource}", + "definition": "select s as '__var' array join symbols('$stream') as 's'", + "includeAll": false, + "name": "symbol", + "options": [], + "query": "select s as '__var' array join symbols('$stream') as 's'", + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "type": "query" + }, + { + "current": { + "selected": false, + "text": "deltix.timebase.api.messages.service.ConnectionStatusChangeMessage", + "value": "deltix.timebase.api.messages.service.ConnectionStatusChangeMessage" + }, + "datasource": "${datasource}", + "definition": "select t.name as '__var' array join streams()[this.key == '$stream'].topTypes as 't'", + "includeAll": false, + "name": "type", + "options": [], + "query": "select t.name as '__var' array join streams()[this.key == '$stream'].topTypes as 't'", + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "type": "query" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "TimeBase overview", + "uid": "YX4ekTnnz", + "version": 1, + "weekStart": "" +} diff --git a/docker-compose.yaml b/docker-compose.yaml index 24ad7ae..9cd5ba9 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,9 +6,9 @@ services: build: context: ./.config args: - grafana_image: ${GRAFANA_IMAGE:-grafana-enterprise} - grafana_version: ${GRAFANA_VERSION:-11.3.0} - development: ${DEVELOPMENT:-false} + grafana_image: ${GRAFANA_IMAGE:grafana-enterprise} + grafana_version: ${GRAFANA_VERSION:12.4} + development: ${DEVELOPMENT:false} ports: - 3000:3000/tcp volumes: