diff --git a/README.md b/README.md index d2c93be..23ab28a 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ stock_fw_scrape_timeout = "5s" # maximal number of parallel scrape requests for stock FW devices stock_fw_scrape_max_concurrency = 40000 ``` -### Braiins Farm Monitor Configutation +### Braiins Farm Proxy Configutation Since Braiins Farm Proxy version 23.01, telemetry data are collected in order to be able to track technical issues, errors and future improvements of the application. In case the user doesn't want to send telemetry data to Braiins, he can opt out. Just add to the proxy configuration file following rows: ``` diff --git a/config/sample.toml b/config/sample.toml index 03e7f8c..0f4ceb1 100644 --- a/config/sample.toml +++ b/config/sample.toml @@ -6,8 +6,6 @@ name = "S1" port = 3336 # Bonus related to devfee #slushpool_bos_bonus = "bosBonusUserName" -# BOS referral code -#bos_referral_code = "referralCode" [[target]] # Name of this target diff --git a/docker-compose.yml b/docker-compose.yml index 60b43ba..c14483b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ volumes: scanner_data: {} services: farm-proxy: - image: braiinssystems/farm-proxy:23.01 # Will be replaced with braiinssystems/farm-proxy:TAG upon public release + image: braiinssystems/farm-proxy:23.05 # Will be replaced with braiinssystems/farm-proxy:TAG upon public release container_name: farm-proxy network_mode: "host" volumes: @@ -21,6 +21,10 @@ services: max-size: "100m" max-file: "50" compress: "true" + ulimits: + nofile: + hard: "1048576" + soft: "262144" # metrics-exporter is a program, which performs device discovery on the defined network and pulls data from miners running a Stock FW. As a result, those data can be digested by Prometheus and visualized in Grafana dashboard, see dashboard "Farm Dashboard" metrics-exporter: image: braiinssystems/farm-monitor:23.01 @@ -57,31 +61,8 @@ services: compress: "true" labels: org.label-schema.group: "monitoring" - # nodeexporter is a container designed to monitor the host system, more info in https://github.com/prometheus/node_exporter - # nodeexporter: - # image: prom/node-exporter:latest - # container_name: nodeexporter - # network_mode: "host" - # volumes: - # - /proc:/host/proc:ro - # - /sys:/host/sys:ro - # - /:/rootfs:ro - # command: - # - '--path.procfs=/host/proc' - # - '--path.rootfs=/rootfs' - # - '--path.sysfs=/host/sys' - # - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' - # restart: unless-stopped - # logging: - # driver: "json-file" - # options: - # max-size: "10m" - # max-file: "5" - # compress: "true" - # labels: - # org.label-schema.group: "monitoring" grafana: - image: grafana/grafana:8.4.0 + image: grafana/grafana:9.5.1 container_name: grafana network_mode: "host" depends_on: diff --git a/monitoring/grafana/provisioning/alerting/alerts.yml b/monitoring/grafana/provisioning/alerting/alerts.yml new file mode 100644 index 0000000..639f92a --- /dev/null +++ b/monitoring/grafana/provisioning/alerting/alerts.yml @@ -0,0 +1,274 @@ +apiVersion: 1 +groups: + - orgId: 1 + name: invalid-license + folder: Alerts + interval: 1m + rules: + - uid: LTLa_oaVz + title: Invalid Braiins OS+ Licences + condition: Condition + data: + - refId: A + relativeTimeRange: + from: 86400 + to: 0 + datasourceUid: PABF2E7BD7AE7B0F4 + model: + editorMode: code + exemplar: false + expr: count(license_state{job="braiinsos-data"} > 1) > 0 + hide: false + instant: false + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: true + refId: A + - refId: Number of affected miners + relativeTimeRange: + from: 86400 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: Number of affected miners + type: reduce + - refId: Condition + relativeTimeRange: + from: 86400 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: Number of affected miners + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Condition + type: threshold + dashboardUid: syQG2Ha4z + panelId: 2 + noDataState: OK + execErrState: Error + for: 5m + annotations: + __dashboardUid__: syQG2Ha4z + __panelId__: "2" + description: Invalid Licenses + summary: Invalid Licenses + labels: + severity: critical + type: license + isPaused: false + - uid: AhDpvAa4z + title: No Braiins OS+ Licences + condition: Condition + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: PABF2E7BD7AE7B0F4 + model: + editorMode: code + expr: count(license_state{job="braiinsos-data"} == 0 and license_time_to_restricted_seconds < 55 * 60) > 0 + hide: false + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: true + refId: A + - refId: Number of affected miners + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: Number of affected miners + type: reduce + - refId: Condition + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: Number of affected miners + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Condition + type: threshold + dashboardUid: Kzx8BHa4k + panelId: 2 + noDataState: OK + execErrState: Error + for: 5m + annotations: + __dashboardUid__: Kzx8BHa4k + __panelId__: "2" + description: No Braiins OS+ License + summary: No Braiins OS+ License + labels: + severity: warning + type: license + isPaused: false + - uid: GnxL0AaVz + title: Soon Expired Braiins OS+ Licences + condition: Condition + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: PABF2E7BD7AE7B0F4 + model: + editorMode: code + expr: count(license_state{job="braiinsos-data",label=~"$label"} == 1 and license_time_to_restricted_seconds < 150 * 60) > 0 + hide: false + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: true + refId: A + - refId: Number of affected miners + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: Number of affected miners + type: reduce + - refId: Condition + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: Number of affected miners + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Condition + type: threshold + noDataState: OK + execErrState: Alerting + for: 5m + annotations: + summary: Soon Expired Braiins OS+ Licences + labels: + severity: warning + type: license + isPaused: false diff --git a/monitoring/grafana/provisioning/alerting/contact-points.yml b/monitoring/grafana/provisioning/alerting/contact-points.yml new file mode 100644 index 0000000..ff7ca69 --- /dev/null +++ b/monitoring/grafana/provisioning/alerting/contact-points.yml @@ -0,0 +1,21 @@ +apiVersion: 1 +# more info here https://grafana.com/docs/grafana/latest/alerting/set-up/provision-alerting-resources/file-provisioning/ +contactPoints: + - orgId: 1 + # in the file ./monitoring/grafana/provisioning/grafana.ini you need to define your [smtp] to be able to get email alerts + name: Email + receivers: + - uid: HNEU8Ta4zz + type: email + settings: + addresses: your_name@your_domain.cz + singleEmail: false + disableResolveMessage: true + # to be able to use Telegram, it is needed to generate BOT token. Here you can read how to do it https://medium.com/geekculture/generate-telegram-token-for-bot-api-d26faf9bf064 + - uid: mOVzlTaVk + type: telegram + settings: + bottoken: "token" #Telegram bottoken in "" + chatid: "chat_id" #Telegram bottoken in "" + disable_notification: false + disableResolveMessage: true diff --git a/monitoring/grafana/provisioning/alerting/mute-timings.yml b/monitoring/grafana/provisioning/alerting/mute-timings.yml new file mode 100644 index 0000000..20fc149 --- /dev/null +++ b/monitoring/grafana/provisioning/alerting/mute-timings.yml @@ -0,0 +1,17 @@ +apiVersion: 1 + +# A mute timing is a recurring interval of time when no new notifications for a policy are generated or sent. +# Use them to prevent alerts from firing a specific and reoccurring period, for example, a regular maintenance period. +# Read more at https://grafana.com/docs/grafana/latest/alerting/manage-notifications/mute-timings/ + +# To allow mute timings, uncomment time_intervals section with prepared simple config. User can modify it to meet his needs. +# Read more about time interval at at https://prometheus.io/docs/alerting/latest/configuration/#time_interval-0 +muteTimes: + - orgId: 1 + name: mti_1 + #time_intervals: + # - times: + # - start_time: '09:00' + # end_time: '17:00' + # weekdays: ['monday:friday'] + diff --git a/monitoring/grafana/provisioning/alerting/policy.yml b/monitoring/grafana/provisioning/alerting/policy.yml new file mode 100644 index 0000000..342cab4 --- /dev/null +++ b/monitoring/grafana/provisioning/alerting/policy.yml @@ -0,0 +1,11 @@ +apiVersion: 1 + +policies: + - orgId: 1 + receiver: Email + group_by: ['grafana_folder','alertname'] + object_matchers: + - ['type', '=', 'license'] + group_wait: 1m + group_interval: 5m + repeat_interval: 1h diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/farm-dashboard.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/farm-dashboard.json index 2f96bea..b697f9d 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/farm-dashboard.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/farm-dashboard.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -21,13 +24,16 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 13, - "iteration": 1669988558738, + "id": 14, "links": [], "liveNow": false, "panels": [ { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, @@ -36,15 +42,29 @@ }, "id": 20, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Overview", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "**Nominal hashrate**: based on manufacturer data \\\n**Real hashrate**: measured hashrate based on 1m average \\\n*Click on the graph to see list of all devices* \\\nnote: nominal hashrate is not available for Antminers S9 with BOS+", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "fixedColor": "#8b7cff", + "mode": "thresholds" }, "displayName": "${__series.name}", "links": [ @@ -57,15 +77,19 @@ "mappings": [], "min": 0, "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "green", + "color": "#f95355", "value": null }, { - "color": "red", - "value": 80 + "color": "#cfdb5c", + "value": 30 + }, + { + "color": "#34c06a", + "value": 60 } ] }, @@ -93,7 +117,9 @@ }, "id": 4, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -104,7 +130,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -149,11 +175,16 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "**Discovered**: No. of discovered devices by the scanning procedure \\\n**Monitored**: No. of devices, which are *up* (~ miner is exposing any metric)\\\n**Mining**: No. of devices, which produced *some* hashrate in the last 5 minutes\\\n**Not Mining**: No. of devices, which produced *no* hashrate in the last 5 minutes \\\n**Offline**: No. of devices, which are *down* (~ miner is **not** exposing any metric)", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-BlPu" + "fixedColor": "#8b7cff", + "mode": "fixed" }, "links": [ { @@ -200,7 +231,7 @@ { "id": "color", "value": { - "fixedColor": "red", + "fixedColor": "#f95355", "mode": "fixed" } } @@ -215,6 +246,37 @@ { "id": "color", "value": { + "fixedColor": "#434343", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Discovered" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#39238f", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Monitored" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#5432cd", "mode": "fixed" } } @@ -243,7 +305,7 @@ }, "textMode": "value_and_name" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -315,6 +377,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Links to the *Braiins* product webpages", "gridPos": { "h": 5, @@ -324,30 +390,57 @@ }, "id": 6, "options": { - "content": "\n\n\n\n\n\n\n\n\n\n\n\n
", + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, + "content": "\n\n\n\n\n\n\n\n\n\n\n\n
", "mode": "html" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Braiins Products", "type": "text" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "**Measured to calculated ratio**: real hashrate / nominal hashrate \\\nnote: MCR not available for Antminers S9 with BOS+", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "fixedColor": "#f2f2f2", + "mode": "thresholds" }, "links": [], "mappings": [], "max": 1, "min": 0, "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "green", + "color": "#f95355", "value": null + }, + { + "color": "#c063f9", + "value": 50 + }, + { + "color": "#8b7cff", + "value": 80 } ] }, @@ -363,7 +456,9 @@ }, "id": 150, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -374,7 +469,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -420,6 +515,10 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 5, "w": 8, @@ -428,19 +527,37 @@ }, "id": 131, "options": { + "code": { + "language": "plaintext", + "showLineNumbers": false, + "showMiniMap": false + }, "content": "Farm Monitor guideline: [documentation](https://academy.braiins.com/en/farm-monitor/about)\n\n[Get support](https://help.braiins.com/en/support/tickets/new) from the Braiins team\n\n*Dashboard is interactive, most of the graphs redirect user to a detail after a click on the statistic/graph.*\n\nFarm Monitor displays only data from devices running on **BOS+** or **stock firmware** (Antminers X17 and X19). BOS+ exposes it's metrics on `ip-address:8081/metrics` and provides many more data then the stock firmware. Data from stock are pulled from cgminer API by **metrics-exporter** and then exposed on `host:8081/metrics` to be digested by Prometheus.", "mode": "markdown" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "TL;DR", "type": "text" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Hashrate by FW Type: BOS+ vs. Stock FW", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, "displayName": "${__series.name}", "mappings": [ @@ -457,11 +574,15 @@ ], "min": 0, "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "semi-dark-purple", + "color": "#170d3a", "value": null + }, + { + "color": "#8b7cff", + "value": 0 } ] }, @@ -477,7 +598,9 @@ }, "id": 133, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -488,7 +611,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -523,11 +646,16 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Discovered miners by FW type: *BOS+* vs. *Stock FW*", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-BlPu" + "fixedColor": "yellow", + "mode": "thresholds" }, "links": [ { @@ -552,7 +680,7 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#f4f4f4", "value": null } ] @@ -569,7 +697,7 @@ }, "id": 12, "options": { - "colorMode": "background", + "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "vertical", @@ -582,7 +710,7 @@ }, "textMode": "value_and_name" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -617,6 +745,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Maximal temperature from the monitored miners (chip/hashboard sensor measure) \\\n\\\n*note: temperatures > 200 C are filtered out because such values are nonsense (but they can appear in Stock FW when the miner has problems with fan detection)*", "fieldConfig": { "defaults": { @@ -629,6 +761,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -640,15 +773,15 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#13a454", "value": null }, { - "color": "orange", + "color": "#fe8431", "value": 80 }, { - "color": "dark-red", + "color": "#d9222c", "value": 90 } ] @@ -659,16 +792,16 @@ }, "gridPos": { "h": 4, - "w": 4, + "w": 3, "x": 0, "y": 11 }, "id": 10, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "area", "justifyMode": "auto", - "orientation": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" @@ -676,9 +809,12 @@ "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -696,6 +832,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Average fan speed, available only for BOS+ devices.", "fieldConfig": { "defaults": { @@ -708,6 +848,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -719,15 +860,15 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#00bac5", "value": null }, { - "color": "orange", + "color": "#fe8431", "value": 80 }, { - "color": "dark-red", + "color": "#d9222c", "value": 90 } ] @@ -738,13 +879,13 @@ }, "gridPos": { "h": 4, - "w": 4, - "x": 4, + "w": 3, + "x": 3, "y": 11 }, "id": 14, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -755,9 +896,12 @@ "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -775,6 +919,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Targeted power consumption of the farm (only BOS+)", "fieldConfig": { "defaults": { @@ -786,6 +934,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -797,7 +946,7 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#ee5884", "value": null } ] @@ -808,13 +957,13 @@ }, "gridPos": { "h": 4, - "w": 4, - "x": 8, + "w": 3, + "x": 6, "y": 11 }, "id": 17, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -825,10 +974,12 @@ "fields": "", "values": false }, - "text": {}, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -846,6 +997,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Estimated power consumption of the farm (only for BOS+ devices)", "fieldConfig": { "defaults": { @@ -857,6 +1012,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -868,7 +1024,7 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#fe8431", "value": null } ] @@ -880,12 +1036,12 @@ "gridPos": { "h": 4, "w": 3, - "x": 12, + "x": 9, "y": 11 }, "id": 18, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -896,9 +1052,12 @@ "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -917,17 +1076,23 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Average efficiency as *Watt / THs* (only for BOS+ devices)", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "fixedColor": "#4b8aff", + "mode": "fixed" }, "mappings": [ { "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -939,7 +1104,7 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#6f6f6f", "value": null } ] @@ -951,12 +1116,12 @@ "gridPos": { "h": 4, "w": 3, - "x": 15, + "x": 12, "y": 11 }, "id": 167, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", @@ -967,18 +1132,21 @@ "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, - "exemplar": true, + "exemplar": false, "expr": "avg\n((((sum by (instance) (miner_power_target_w{type=\"current\",job=\"braiinsos-data\",label=~\"$label\"}) or sum by (instance) (miner_power{type=\"estimated\",job=\"braiinsos-data\",label=~\"$label\"})) / on (instance) group_left(model) (sum by (instance) (rate(hashboard_shares{job=\"braiinsos-data\",label=~\"$label\"}[$interval])) * 2^32 / 1e12)) + on (instance) group_left(model) (miner_metadata{job=\"braiinsos-data\",label=~\"$label\"})) < 1e12 or\n(((sum by (instance) (miner_power_target_w{type=\"current\",job=\"braiinsos-data\",label=~\"$label\"}) or sum by (instance) (miner_power{type=\"estimated\",job=\"braiinsos-data\",label=~\"$label\"})) / on (instance) group_left(model) (sum by (instance) (rate(stratum_accepted_shares_counter{job=\"braiinsos-data\",label=~\"$label\"}[$interval])) * 2^32 / 1e12)) + on (instance) group_left(model) (miner_metadata{job=\"braiinsos-data\",label=~\"$label\"})) < 1e12)", - "instant": false, + "instant": true, "interval": "", "legendFormat": "Estimated Power", "refId": "A" @@ -988,10 +1156,15 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Number of currently tuning devices (only for BOS+ devices)", "fieldConfig": { "defaults": { "color": { + "fixedColor": "#F2CC0C", "mode": "thresholds" }, "links": [ @@ -1006,6 +1179,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -1017,7 +1191,7 @@ "mode": "absolute", "steps": [ { - "color": "semi-dark-purple", + "color": "#ed9419", "value": null } ] @@ -1029,7 +1203,7 @@ "gridPos": { "h": 4, "w": 3, - "x": 18, + "x": 15, "y": 11 }, "id": 153, @@ -1040,23 +1214,26 @@ "orientation": "auto", "reduceOptions": { "calcs": [ - "lastNotNull" + "last" ], "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, - "exemplar": true, + "exemplar": false, "expr": "count(max by(instance) (tuner_stage{job=\"braiinsos-data\",label=~\"$label\"} == 2 or tuner_stage{job=\"braiinsos-data\",label=~\"$label\"} == 3))", - "instant": false, + "instant": true, "interval": "", "legendFormat": "Estimated Power", "refId": "A" @@ -1066,6 +1243,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Number of devices with less than 3 hasboards hashing.", "fieldConfig": { "defaults": { @@ -1084,6 +1265,7 @@ "options": { "match": "null+nan", "result": { + "color": "#525252", "index": 0, "text": "N/A" } @@ -1095,7 +1277,7 @@ "mode": "absolute", "steps": [ { - "color": "dark-red", + "color": "#f95355", "value": null } ] @@ -1106,7 +1288,7 @@ "gridPos": { "h": 4, "w": 3, - "x": 21, + "x": 18, "y": 11 }, "id": 53, @@ -1122,9 +1304,12 @@ "fields": "", "values": false }, + "text": { + "valueSize": 34 + }, "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -1142,8 +1327,97 @@ "title": "Less Than 3 HBs (only BOS+)", "type": "stat" }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "Number of miners with invalid Braiins OS+ license. Reasons could be: \n\n* expired license\n* limited license \n\n*Click on the graph to see list of all devices with invalid license* ", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "links": [ + { + "targetBlank": true, + "title": "", + "url": "d/syQG2Ha4z/drill-down-invalid-license-instance" + } + ], + "mappings": [ + { + "options": { + "match": "null+nan", + "result": { + "color": "#13a454", + "index": 0, + "text": "0" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 11 + }, + "id": 170, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 34 + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} > 1)\n# 0: None\n# 1: Valid\n# 2: Expired\n# 3: Limited", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "License Not Available", + "type": "stat" + }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, @@ -1152,10 +1426,23 @@ }, "id": 139, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Hashrate", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Real (valid) and nominal hashrate over time", "fieldConfig": { "defaults": { @@ -1163,6 +1450,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -1226,7 +1515,8 @@ "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -1262,6 +1552,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Hashrate by type (segmentation only for BOS+): \\\n*duplicate*: duplicate shares which are producing duplicate hashrate \\\n*invalid*: stales and other rejects are producing invalid hashrate \\\n*valid*: accepted shares producing valid hashrate", "fieldConfig": { "defaults": { @@ -1269,6 +1563,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -1333,7 +1629,7 @@ { "id": "color", "value": { - "fixedColor": "dark-green", + "fixedColor": "#4b8aff", "mode": "fixed" } } @@ -1348,7 +1644,7 @@ { "id": "color", "value": { - "fixedColor": "dark-orange", + "fixedColor": "#c063f9", "mode": "fixed" } } @@ -1363,7 +1659,7 @@ { "id": "color", "value": { - "fixedColor": "dark-red", + "fixedColor": "#f95355", "mode": "fixed" } } @@ -1382,7 +1678,8 @@ "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -1406,28 +1703,395 @@ "type": "timeseries" }, { - "description": "Miners with lowest MCR \\\nClick to the column to get redirected to the miner \\\n**Measured to calculated ratio**: real hashrate / nominal hashrate \\\nnote: MCR not available for Antminers S9 with BOS+", + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "Miners with lowest MCR \\\nClick to the column to get redirected to the miner \\\n**Measured to calculated ratio**: real hashrate / nominal hashrate \\\nnote: MCR not available for Antminers S9 with BOS+", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "#6f6f6f", + "mode": "thresholds" + }, + "decimals": 0, + "displayName": "${__series.name}", + "links": [ + { + "targetBlank": true, + "title": "Go to the miner", + "url": "http://${__field.labels.instance}\n\n" + } + ], + "mappings": [ + { + "options": { + "match": "null+nan", + "result": { + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "#f95355", + "value": null + }, + { + "color": "#c063f9", + "value": 50 + }, + { + "color": "#8b7cff", + "value": 80 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 25 + }, + "id": 30, + "options": { + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "bottomk(10, \n sort(\n sum by (label,instance) (rate(hashboard_shares{job=~\"$OS\",label=~\"$label\"}[$interval]) * 2^32 / 1e9 or average_hashrate_last_5_sec_ghs{job=~\"$OS\",label=~\"$label\"})\n /\n sum by (label,instance) (hashboard_nominal_hashrate_ghs{job=~\"$OS\",label=~\"$label\"})\n )\n)", + "instant": true, + "interval": "", + "legendFormat": " {{label}}, {{instance}}", + "refId": "A" + } + ], + "title": "10 Miners with lowest MCR", + "type": "bargauge" + }, + { + "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 34 + }, + "id": 172, + "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], + "title": "Braiins OS+ License", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "Number of Braiins OS+ devices per contract", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "Contract: ${__field.labels.contract_name}", + "mappings": [ + { + "options": { + "match": "null+nan", + "result": { + "color": "#525252", + "index": 0, + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#ffffff", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 12, + "x": 0, + "y": 35 + }, + "id": 174, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 34 + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count by (contract_name,license_type) (license_details{job=~\"$OS\",label=~\"$label\"})", + "instant": true, + "interval": "", + "legendFormat": "License Details", + "refId": "A" + } + ], + "title": "License Details", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "List of currently fired or pending alerts", + "gridPos": { + "h": 5, + "w": 12, + "x": 12, + "y": 35 + }, + "id": 180, + "options": { + "alertInstanceLabelFilter": "", + "alertName": "", + "dashboardAlerts": false, + "groupBy": [], + "groupMode": "default", + "maxItems": 20, + "sortOrder": 1, + "stateFilter": { + "error": true, + "firing": true, + "noData": false, + "normal": false, + "pending": true + }, + "viewMode": "list" + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], + "title": "Braiins OS+ License Alert List", + "type": "alertlist" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "Overview of Braiins OS+ licenses\n* None - no license yet, device in initialization period\n* Valid - valid license\n* Limited - no license, initialization period passed, 15% of hashrate is drained\n* Expired - expired licence, 15% of hashrate is drained\n* Legacy BOS+ - legacy BOS+ not supporting licenses", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "displayName": "${__field.displayName}", + "links": [ + { + "targetBlank": true, + "title": "", + "url": "d/kznoUNa4k/drill-down-license-instance?orgId=1" + } + ], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#f4f4f4", + "value": null + }, + { + "color": "#f95355", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 178, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 34 + }, + "textMode": "auto" + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 0)", + "instant": true, + "interval": "", + "legendFormat": "None", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 1)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Active", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 2)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Expired", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 3)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Limited", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count((license_state or on (instance, job) miner_metadata{job=\"braiinsos-data\"} -10) < 0)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Legacy BOS+", + "refId": "E" + } + ], + "title": "License States", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "description": "Red: **Limited** and **Expired** licenses \\\nYellow: **Valid** licenses with less then 2.5 hours till expiration or **uninitialized** device for more than 5 minutes", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, - "decimals": 0, - "displayName": "${__series.name}", - "links": [ - { - "targetBlank": true, - "title": "Go to the miner", - "url": "http://${__field.labels.instance}\n\n" - } - ], + "displayName": "${__field.displayName}", "mappings": [ { "options": { "match": "null+nan", "result": { + "color": "#13a454", "index": 0, - "text": "N/A" + "text": "0" } }, "type": "special" @@ -1437,83 +2101,206 @@ "mode": "absolute", "steps": [ { - "color": "green", + "color": "#8b7cff", "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Not Available Licenses" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#f95355", + "mode": "fixed" + } }, { - "color": "red", - "value": 80 + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/syQG2Ha4z/drill-down-invalid-license-instance?orgId=1" + } + ] } ] }, - "unit": "percentunit" - }, - "overrides": [] + { + "matcher": { + "id": "byName", + "options": "No License (Initialization)" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ed9419", + "mode": "fixed" + } + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/Kzx8BHa4k/drill-down-no-license-instance?orgId=1" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Soon Expired Licenses" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#ed9419", + "mode": "fixed" + } + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/S-TbaN-Vz/drill-down-soon-expired-license-instance?orgId=1" + } + ] + } + ] + } + ] }, "gridPos": { - "h": 9, + "h": 4, "w": 12, "x": 12, - "y": 25 + "y": 40 }, - "id": 30, + "id": 176, "options": { - "displayMode": "gradient", - "orientation": "horizontal", + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "vertical", "reduceOptions": { "calcs": [ - "lastNotNull" + "last" ], "fields": "", "values": false }, - "showUnfilled": true + "text": { + "valueSize": 34 + }, + "textMode": "auto" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, + "editorMode": "code", "exemplar": false, - "expr": "bottomk(10, \n sort(\n sum by (label,instance) (rate(hashboard_shares{job=~\"$OS\",label=~\"$label\"}[$interval]) * 2^32 / 1e9 or average_hashrate_last_5_sec_ghs{job=~\"$OS\",label=~\"$label\"})\n /\n sum by (label,instance) (hashboard_nominal_hashrate_ghs{job=~\"$OS\",label=~\"$label\"})\n )\n)", + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} > 1)\n# 0: None\n# 1: Valid\n# 2: Expired\n# 3: Limited", "instant": true, "interval": "", - "legendFormat": " {{label}}, {{instance}}", - "refId": "A" + "legendFormat": "Not Available Licenses", + "refId": "Not Available" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 0 and license_time_to_limited < 55 * 60)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "No License (Initialization)", + "refId": "NoLicense" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "count(license_state{job=\"braiinsos-data\",label=~\"$label\"} == 1 and license_time_to_restricted_seconds < 150 * 60)", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "Soon Expired Licenses", + "refId": "SoonExpired" } ], - "title": "10 Miners with lowest MCR", - "type": "bargauge" + "title": "License Alerts", + "type": "stat" }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 34 + "y": 44 }, "id": 152, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Miner Count", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Number of miners sending data.", "fieldConfig": { "defaults": { "color": { - "mode": "palette-classic" + "fixedColor": "#2460ff", + "mode": "fixed" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "axisSoftMin": 0, "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 21, + "fillOpacity": 22, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1521,7 +2308,7 @@ "viz": false }, "lineInterpolation": "linear", - "lineWidth": 3, + "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" @@ -1566,14 +2353,15 @@ "h": 8, "w": 12, "x": 0, - "y": 35 + "y": 45 }, "id": 29, "options": { "legend": { "calcs": [], - "displayMode": "hidden", - "placement": "bottom" + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, "tooltip": { "mode": "single", @@ -1597,6 +2385,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Number of instances that are monitored (scraped by Prometheus) successfully (Up) or not (Down).", "fieldConfig": { "defaults": { @@ -1604,11 +2396,13 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 21, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1616,7 +2410,7 @@ "viz": false }, "lineInterpolation": "linear", - "lineWidth": 3, + "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" @@ -1652,7 +2446,7 @@ { "id": "color", "value": { - "fixedColor": "red", + "fixedColor": "#f95355", "mode": "fixed" } } @@ -1667,7 +2461,7 @@ { "id": "color", "value": { - "fixedColor": "green", + "fixedColor": "#13a454", "mode": "fixed" } } @@ -1679,21 +2473,22 @@ "h": 8, "w": 12, "x": 12, - "y": 35 + "y": 45 }, "id": 38, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -1728,18 +2523,35 @@ }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 43 + "y": 53 }, "id": 135, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Temperature Control", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "At first, Maximum temperature is taken from each instance (miner). Then Minimum, Average, and Maximum is calculated. \\\n\\\n*note: temperatures > 200 C are filtered out because such values are nonsense (but they can appear in Stock FW when the miner has problems with fan detection)*", "fieldConfig": { "defaults": { @@ -1747,6 +2559,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -1811,7 +2625,7 @@ { "id": "color", "value": { - "fixedColor": "dark-red", + "fixedColor": "#d9222c", "mode": "fixed" } } @@ -1826,7 +2640,7 @@ { "id": "color", "value": { - "fixedColor": "dark-green", + "fixedColor": "#13a454", "mode": "fixed" } } @@ -1841,7 +2655,7 @@ { "id": "color", "value": { - "fixedColor": "dark-blue", + "fixedColor": "#fe8431", "mode": "fixed" } } @@ -1853,14 +2667,15 @@ "h": 9, "w": 12, "x": 0, - "y": 44 + "y": 54 }, "id": 36, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -1908,11 +2723,15 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Top 10 instances by highest temperature. \\\n\\\n*note: temperatures > 200 C are filtered out because such values are nonsense (but they can appear in Stock FW when the miner has problems with fan detection)*", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-GrYlRd" + "mode": "thresholds" }, "decimals": 0, "displayName": "${__series.name}", @@ -1936,12 +2755,16 @@ } ], "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "green", + "color": "#2460ff", "value": null }, + { + "color": "#4b8aff", + "value": 30 + }, { "color": "red", "value": 80 @@ -1956,11 +2779,13 @@ "h": 9, "w": 12, "x": 12, - "y": 44 + "y": 54 }, "id": 27, "options": { "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -1971,7 +2796,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -1990,6 +2815,10 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Maximum fan speed is taken from each instance (miner). Minimum, Average, and Maximum is then calculated.", "fieldConfig": { "defaults": { @@ -1997,6 +2826,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -2061,7 +2892,7 @@ { "id": "color", "value": { - "fixedColor": "dark-red", + "fixedColor": "#2460ff", "mode": "fixed" } } @@ -2076,7 +2907,7 @@ { "id": "color", "value": { - "fixedColor": "dark-green", + "fixedColor": "#a72dea", "mode": "fixed" } } @@ -2091,7 +2922,7 @@ { "id": "color", "value": { - "fixedColor": "dark-blue", + "fixedColor": "#56d8e0", "mode": "fixed" } } @@ -2103,14 +2934,15 @@ "h": 8, "w": 12, "x": 0, - "y": 53 + "y": 63 }, "id": 40, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -2158,6 +2990,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Maximum RPM is taken from each instance (miner). Minimum, Average, and Maximum is then calculated per each miner model.", "fieldConfig": { "defaults": { @@ -2166,7 +3002,10 @@ }, "custom": { "align": "auto", - "displayMode": "auto" + "cellOptions": { + "type": "auto" + }, + "inspect": false }, "decimals": 0, "mappings": [], @@ -2187,11 +3026,12 @@ "h": 8, "w": 12, "x": 12, - "y": 53 + "y": 63 }, "id": 169, "options": { "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -2201,7 +3041,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2286,22 +3126,40 @@ }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 61 + "y": 71 }, "id": 141, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Mining Pools", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Active pool connections calculated as count over all miners", "fieldConfig": { "defaults": { "color": { + "fixedColor": "#009da7", "mode": "continuous-BlPu" }, "displayName": "${__series.name}", @@ -2325,15 +3183,15 @@ } ], "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "green", + "color": "#005e5e", "value": null }, { - "color": "red", - "value": 80 + "color": "#13a454", + "value": 50 } ] } @@ -2344,11 +3202,13 @@ "h": 7, "w": 12, "x": 0, - "y": 62 + "y": 72 }, "id": 25, "options": { "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -2359,7 +3219,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2378,11 +3238,16 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Dead pool connections calculated as count over all miners", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-BlPu" + "fixedColor": "#f95355", + "mode": "fixed" }, "displayName": "${__series.name}", "links": [ @@ -2424,11 +3289,13 @@ "h": 7, "w": 12, "x": 12, - "y": 62 + "y": 72 }, "id": 24, "options": { "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -2439,7 +3306,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2458,6 +3325,10 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Pools URLs defined in the configuration of the individual miners, where no mining activity is detected.", "fieldConfig": { "defaults": { @@ -2465,6 +3336,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -2524,14 +3397,15 @@ "h": 8, "w": 12, "x": 0, - "y": 69 + "y": 79 }, "id": 49, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -2555,6 +3429,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Number of active connections per mining protocol ~ SV1 vs. SV2.", "fieldConfig": { "defaults": { @@ -2597,12 +3475,14 @@ "h": 8, "w": 12, "x": 12, - "y": 69 + "y": 79 }, "id": 149, "options": { - "displayMode": "lcd", - "orientation": "horizontal", + "displayMode": "basic", + "minVizHeight": 10, + "minVizWidth": 0, + "orientation": "vertical", "reduceOptions": { "calcs": [ "lastNotNull" @@ -2610,9 +3490,12 @@ "fields": "", "values": false }, - "showUnfilled": true + "showUnfilled": true, + "text": { + "titleSize": 24 + } }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2621,8 +3504,10 @@ }, "exemplar": false, "expr": "count by (protocol) (client_status{job=~\"$OS\",label=~\"$label\",connection_type=\"user\"} == 1)", + "format": "time_series", "instant": true, "interval": "", + "intervalFactor": 1, "legendFormat": "{{protocol}}", "refId": "A" } @@ -2641,22 +3526,40 @@ }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 77 + "y": 87 }, "id": 145, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Miners", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Model types of the miners", "fieldConfig": { "defaults": { "color": { + "fixedColor": "#8d8d8d", "mode": "continuous-BlPu" }, "displayName": "${__series.name}", @@ -2695,11 +3598,13 @@ "h": 8, "w": 12, "x": 0, - "y": 78 + "y": 88 }, "id": 57, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -2710,7 +3615,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2729,10 +3634,15 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Version of the firmware \\\n*BOS+*: bos:{version} \\\n*Stock FW*: stock:{version}", "fieldConfig": { "defaults": { "color": { + "fixedColor": "#8d8d8d", "mode": "continuous-BlPu" }, "displayName": "${__series.name}", @@ -2772,11 +3682,13 @@ "h": 8, "w": 12, "x": 12, - "y": 78 + "y": 88 }, "id": 55, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -2787,7 +3699,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2822,20 +3734,32 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Average hashrate by miner model", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, "displayName": "${__series.name}", "mappings": [], "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "green", + "color": "#f95355", "value": null + }, + { + "color": "#cfdb5c", + "value": 30 + }, + { + "color": "#34c06a", + "value": 60 } ] }, @@ -2847,11 +3771,13 @@ "h": 8, "w": 12, "x": 0, - "y": 86 + "y": 96 }, "id": 164, "options": { - "displayMode": "basic", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -2862,7 +3788,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2881,6 +3807,10 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Average, min and max efficiency by each miner model. Available only for *BOS+*", "fieldConfig": { "defaults": { @@ -2889,8 +3819,11 @@ }, "custom": { "align": "auto", - "displayMode": "auto", - "filterable": false + "cellOptions": { + "type": "auto" + }, + "filterable": false, + "inspect": false }, "links": [ { @@ -2918,11 +3851,12 @@ "h": 8, "w": 12, "x": 12, - "y": 86 + "y": 96 }, "id": 166, "options": { "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -2937,7 +3871,7 @@ } ] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -2950,7 +3884,7 @@ "instant": true, "interval": "", "legendFormat": "{{model}}", - "refId": "MinEff" + "refId": "MaxEff" }, { "datasource": { @@ -2964,7 +3898,7 @@ "instant": true, "interval": "", "legendFormat": "{{model}}", - "refId": "MaxEff" + "refId": "MinEff" }, { "datasource": { @@ -3051,18 +3985,35 @@ }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 94 + "y": 104 }, "id": 32, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Power Target (only BOS+)", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Power target is taken from each instance (miner). Minimum, Average, and Maximum is then calculated (BOS+ only)", "fieldConfig": { "defaults": { @@ -3070,6 +4021,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3176,7 +4129,7 @@ "h": 7, "w": 12, "x": 0, - "y": 95 + "y": 105 }, "id": 45, "links": [], @@ -3184,7 +4137,8 @@ "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -3232,6 +4186,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Estimated power consumption in Watts and power target (only BOS+).", "fieldConfig": { "defaults": { @@ -3239,6 +4197,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3299,14 +4259,15 @@ "h": 7, "w": 12, "x": 12, - "y": 95 + "y": 105 }, "id": 43, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -3343,23 +4304,40 @@ }, { "collapsed": false, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 102 + "y": 112 }, "id": 159, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "refId": "A" + } + ], "title": "Users", "type": "row" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Hashrate by pool user", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, "displayName": "${__series.name}", "links": [ @@ -3383,11 +4361,19 @@ ], "min": 0, "thresholds": { - "mode": "absolute", + "mode": "percentage", "steps": [ { - "color": "semi-dark-purple", + "color": "#f95355", "value": null + }, + { + "color": "#cfdb5c", + "value": 30 + }, + { + "color": "#34c06a", + "value": 60 } ] }, @@ -3399,11 +4385,13 @@ "h": 5, "w": 12, "x": 0, - "y": 103 + "y": 113 }, "id": 161, "options": { - "displayMode": "lcd", + "displayMode": "gradient", + "minVizHeight": 10, + "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -3414,7 +4402,7 @@ }, "showUnfilled": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -3449,11 +4437,16 @@ "type": "bargauge" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Actual no. of devices per user. *BOS+* has a feature to \"slice\" a miner into pool groups, so that it is possible to mine on multiple users in the same time. The miner has to mining.", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-BlPu" + "fixedColor": "#262626", + "mode": "fixed" }, "mappings": [], "thresholds": { @@ -3477,14 +4470,14 @@ "h": 5, "w": 12, "x": 12, - "y": 103 + "y": 113 }, "id": 162, "options": { - "colorMode": "background", + "colorMode": "none", "graphMode": "none", "justifyMode": "auto", - "orientation": "auto", + "orientation": "vertical", "reduceOptions": { "calcs": [ "lastNotNull" @@ -3492,9 +4485,13 @@ "fields": "", "values": false }, + "text": { + "titleSize": 16, + "valueSize": 34 + }, "textMode": "value_and_name" }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -3513,6 +4510,10 @@ "type": "stat" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "Hashrate per user, *BOS+* devices are taking into account only accpeted shares. *Stock FW* devices are taking in to account all shares since cgminer API doesn't provide invalid/rejected shares. ", "fieldConfig": { "defaults": { @@ -3520,6 +4521,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3569,14 +4572,15 @@ "h": 8, "w": 12, "x": 0, - "y": 108 + "y": 118 }, "id": 157, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -3600,6 +4604,10 @@ "type": "timeseries" }, { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "description": "No. of devices per user. *BOS+* has a feature to \"slice\" a miner into pool groups, so that it is possible to mine on multiple users at the same time.", "fieldConfig": { "defaults": { @@ -3607,6 +4615,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3652,14 +4662,15 @@ "h": 8, "w": 12, "x": 12, - "y": 108 + "y": 118 }, "id": 160, "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { "mode": "single", @@ -3684,7 +4695,8 @@ } ], "refresh": "1m", - "schemaVersion": 35, + "revision": 1, + "schemaVersion": 38, "style": "dark", "tags": [], "templating": { @@ -3696,6 +4708,10 @@ "text": "All", "value": "$__all" }, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "definition": "label_values(job)", "description": "Firmware - braiinsos-data stands for the BOS+ and metrics-exporter stands for the stock FW", "hide": 0, @@ -3720,6 +4736,10 @@ "text": "All", "value": "$__all" }, + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, "definition": "label_values(client_status, label)", "description": "Name of the IP range. In this example case, the IP range represents building.", "hide": 0, @@ -3751,7 +4771,7 @@ "name": "interval", "options": [ { - "selected": false, + "selected": true, "text": "5m", "value": "5m" }, @@ -3781,6 +4801,6 @@ "timezone": "", "title": "Farm Dashboard", "uid": "X5qFFjI4z", - "version": 40, + "version": 7, "weekStart": "" } diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-active-pool-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-active-pool-instance.json index 5c98ea5..69be84c 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-active-pool-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-active-pool-instance.json @@ -92,7 +92,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -199,3 +199,4 @@ "version": 5, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-dead-pool-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-dead-pool-instance.json index 76d46b3..0c6fe96 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-dead-pool-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-dead-pool-instance.json @@ -88,7 +88,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-invalid-license-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-invalid-license-instance.json new file mode 100644 index 0000000..e58dd71 --- /dev/null +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-invalid-license-instance.json @@ -0,0 +1,201 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- 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": 19, + "links": [], + "liveNow": false, + "panels": [ + { + "description": "Table covering devices with invalid Braiins OS+ license. Those devices have either **expired** license or **none** (not initialized) license.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "color-text", + "filterable": true + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "License State" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-yellow", + "index": 0, + "text": "None" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Valid" + }, + "2": { + "color": "dark-red", + "index": 2, + "text": "Expired" + }, + "3": { + "color": "dark-red", + "index": 3, + "text": "Limited" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Miner" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "Go to the miner GUI", + "url": "http://${__data.fields.Miner}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 27, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "((min by (instance) (license_state) \n+ on (instance) group_left(device_id, os_version) (miner_metadata))\n#+ on (instance) group_left(contract_name, license_type, devfee) (license_details))\nor\n(min by (instance) (license_state) \n+ on (instance) group_left(device_id, os_version) (miner_metadata))) > 1", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "title": "Invalid Licenses", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": false, + "host_id": true, + "job": true, + "site_id": true, + "subnet_id": true + }, + "indexByName": { + "Time": 0, + "Value": 3, + "contract_name": 4, + "devfee": 5, + "device_id": 1, + "instance": 2, + "license_type": 6, + "os_version": 7 + }, + "renameByName": { + "Value": "License State", + "Value #A": "License State", + "contract_name": "Contract Name", + "devfee": "Devfee", + "device_id": "Device ID", + "instance": "Miner", + "license_type": "License Type", + "os_version": "BOS+ Version" + } + } + } + ], + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 35, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Drill-Down (Invalid License --> Instance)", + "uid": "syQG2Ha4z", + "version": 9, + "weekStart": "" +} diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-less-than-3-hbs-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-less-than-3-hbs-instance.json index d6320f2..a53b154 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-less-than-3-hbs-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-less-than-3-hbs-instance.json @@ -21,7 +21,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 7, + "id": 13, "links": [], "liveNow": false, "panels": [ @@ -71,8 +71,8 @@ ] }, "gridPos": { - "h": 21, - "w": 20, + "h": 25, + "w": 24, "x": 0, "y": 0 }, @@ -88,7 +88,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -109,7 +109,7 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": false, - "expr": "count by (instance) (rate(hashboard_shares{type=\"valid\"}[20s]) > 0) < 3", + "expr": "count by (instance) (rate(hashboard_shares{type=\"valid\"}[5m]) > 0) < 3", "format": "table", "hide": false, "instant": true, diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-license-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-license-instance.json new file mode 100644 index 0000000..343d878 --- /dev/null +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-license-instance.json @@ -0,0 +1,201 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- 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": 20, + "links": [], + "liveNow": false, + "panels": [ + { + "description": "Table of Braiins OS+ devices with the state of the License. *Legacy BOS+* standas for older version of the firmware which doesn't support licenses, only standard devfee.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "color-text" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "License State" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-yellow", + "index": 0, + "text": "None" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Valid" + }, + "2": { + "color": "dark-red", + "index": 2, + "text": "Expired" + }, + "3": { + "color": "dark-red", + "index": 3, + "text": "Limited" + }, + "-1": { + "color": "dark-purple", + "index": 4, + "text": "Legacy BOS+" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Miner" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "Go to the miner GUI", + "url": "http://${__data.fields.Miner}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 26, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "(((license_state + on(instance) group_left(contract_name,license_type) license_details) or on (instance) license_state) or on (instance, job) miner_metadata-1) + on (instance) group_left(device_id,os_version)(miner_metadata)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Braiins OS+ Devices & Licenses", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "host_id": true, + "job": true, + "label": true, + "model": true, + "subnet_id": true + }, + "indexByName": { + "Time": 0, + "Value": 3, + "contract_name": 4, + "devfee": 5, + "device_id": 1, + "instance": 2, + "license_type": 6, + "os_version": 7 + }, + "renameByName": { + "Value": "License State", + "contract_name": "Contract Name", + "devfee": "Devfee", + "device_id": "Device ID", + "instance": "Miner", + "license_type": "License Type", + "os_version": "BOS+ Version" + } + } + } + ], + "type": "table" + } + ], + "schemaVersion": 35, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Drill-Down (License --> Instance)", + "uid": "kznoUNa4k", + "version": 8, + "weekStart": "" +} diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-efficiency-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-efficiency-instance.json index 7400fa1..85a7f0c 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-efficiency-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-efficiency-instance.json @@ -122,7 +122,7 @@ } ] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -270,3 +270,4 @@ "version": 6, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-model-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-model-instance.json index a680050..b6c8b86 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-model-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-miner-model-instance.json @@ -122,7 +122,7 @@ }, "showHeader": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -239,3 +239,4 @@ "version": 2, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-no-license-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-no-license-instance.json new file mode 100644 index 0000000..83c128c --- /dev/null +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-no-license-instance.json @@ -0,0 +1,191 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- 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": 21, + "links": [], + "liveNow": false, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "color-text", + "filterable": true + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "License State" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-yellow", + "index": 0, + "text": "None" + }, + "1": { + "color": "dark-green", + "index": 1, + "text": "Valid" + }, + "2": { + "color": "dark-red", + "index": 2, + "text": "Expired" + }, + "3": { + "color": "dark-red", + "index": 3, + "text": "Limited" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Miner" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "Go to the miner GUI", + "url": "http://${__data.fields.Miner}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 27, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "min by (instance) (license_state{job=\"braiinsos-data\"} == 0 and license_time_to_restricted_seconds < 55 * 60)\n+ on (instance) group_left(device_id, os_version) (miner_metadata) \n#+ on (instance) group_left(contract_name, license_type, devfee) (license_details)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "No License Yet", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Time": 0, + "Value": 3, + "contract_name": 4, + "devfee": 5, + "device_id": 1, + "instance": 2, + "license_type": 6, + "os_version": 7 + }, + "renameByName": { + "Value": "License State", + "contract_name": "Contract Name", + "devfee": "Devfee", + "device_id": "Device ID", + "instance": "Miner", + "license_type": "License Type", + "os_version": "BOS+ Version" + } + } + } + ], + "type": "table" + } + ], + "schemaVersion": 35, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Drill-Down (No License --> Instance)", + "uid": "Kzx8BHa4k", + "version": 6, + "weekStart": "" +} diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-not-mining-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-not-mining-instance.json index ea31cc9..a1c6a70 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-not-mining-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-not-mining-instance.json @@ -120,7 +120,7 @@ } ] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-offline-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-offline-instance.json index 2bee8cc..1955962 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-offline-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-offline-instance.json @@ -124,7 +124,7 @@ } ] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -236,3 +236,4 @@ "version": 2, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-instance.json index 3406888..1df69d3 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-instance.json @@ -122,7 +122,7 @@ }, "showHeader": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -232,3 +232,4 @@ "version": 2, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-version-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-version-instance.json index 91a6b00..bf90017 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-version-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-os-version-instance.json @@ -125,7 +125,7 @@ }, "showHeader": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -233,3 +233,4 @@ "version": 6, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-protocol-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-protocol-instance.json index 93c8f42..a2c3b8e 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-protocol-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-protocol-instance.json @@ -69,7 +69,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -176,3 +176,4 @@ "version": 3, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-soon-expired-license-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-soon-expired-license-instance.json new file mode 100644 index 0000000..c140e3c --- /dev/null +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-soon-expired-license-instance.json @@ -0,0 +1,191 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- 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": 22, + "links": [], + "liveNow": false, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "color-text", + "filterable": true + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "text", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "License State" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "0": { + "color": "dark-yellow", + "index": 0, + "text": "None" + }, + "1": { + "color": "dark-yellow", + "index": 1, + "text": "Valid" + }, + "2": { + "color": "dark-red", + "index": 2, + "text": "Expired" + }, + "3": { + "color": "dark-red", + "index": 3, + "text": "Limited" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Miner" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "Go to the miner GUI", + "url": "http://${__data.fields.Miner}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 27, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "9.5.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "(min by (instance) (license_state{job=\"braiinsos-data\"} == 1 and license_time_to_restricted_seconds < 150 * 60) \n+ on (instance) group_left(device_id, os_version) (miner_metadata) \n+ on (instance) group_left(contract_name, license_type) (license_details))\nor\n(min by (instance) (license_state{job=\"braiinsos-data\"} == 1 and license_time_to_restricted_seconds < 150 * 60) \n+ on (instance) group_left(device_id, os_version) (miner_metadata))", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "{instance}", + "refId": "A" + } + ], + "title": "Soon Expired Licenses", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": { + "Time": 0, + "Value": 3, + "contract_name": 4, + "devfee": 5, + "device_id": 1, + "instance": 2, + "license_type": 6, + "os_version": 7 + }, + "renameByName": { + "Value": "License State", + "contract_name": "Contract Name", + "devfee": "Devfee", + "device_id": "Device ID", + "instance": "Miner", + "license_type": "License Type", + "os_version": "BOS+ Version" + } + } + } + ], + "type": "table" + } + ], + "schemaVersion": 35, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Drill-Down (Soon Expired License --> Instance)", + "uid": "S-TbaN-Vz", + "version": 6, + "weekStart": "" +} diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-tuning-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-tuning-instance.json index fca7b39..038404f 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-tuning-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-tuning-instance.json @@ -88,7 +88,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -171,3 +171,4 @@ "version": 2, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-user-instance.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-user-instance.json index 4e57961..92a4a4f 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-user-instance.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/drill-down-user-instance.json @@ -130,7 +130,7 @@ "frameIndex": 0, "showHeader": true }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -276,3 +276,4 @@ "version": 3, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/list-of-miners.json b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/list-of-miners.json index acd6e15..4af311a 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/list-of-miners.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-monitor/sub-dashboards/list-of-miners.json @@ -255,7 +255,7 @@ } ] }, - "pluginVersion": "8.4.0", + "pluginVersion": "9.5.1", "targets": [ { "datasource": { @@ -487,3 +487,4 @@ "version": 4, "weekStart": "" } + diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-proxy/client_dashboard.json b/monitoring/grafana/provisioning/default_dashboards/farm-proxy/client_dashboard.json index cd7e6dc..80e2462 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-proxy/client_dashboard.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-proxy/client_dashboard.json @@ -24,8 +24,8 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, - "id": 19, - "iteration": 1674831221174, + "id": 16, + "iteration": 1683900037909, "links": [], "liveNow": false, "panels": [ @@ -593,7 +593,7 @@ }, "id": 64, "options": { - "content": "Full documentatin is available in the [Braiins Academy](https://academy.braiins.com/en/farm-proxy/about) website", + "content": "Full documentation is available in the [Braiins Academy](https://academy.braiins.com/en/farm-proxy/about) website", "mode": "markdown" }, "pluginVersion": "8.4.0", @@ -1117,6 +1117,105 @@ "x": 0, "y": 21 }, + "id": 68, + "panels": [ + { + "description": "Overview of Brains OS+ licenses on devices connected to the Farm Proxy.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 70, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "right" + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "FP_license_prov_license_counts_by_state>0", + "interval": "", + "legendFormat": "{{contract_name}} ({{license_state}})", + "refId": "A" + } + ], + "type": "timeseries" + } + ], + "title": "BOS+ licenses", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, "id": 57, "panels": [ { @@ -1191,7 +1290,7 @@ "type": "row" } ], - "refresh": "5s", + "refresh": "30s", "schemaVersion": 35, "style": "dark", "tags": [], @@ -1240,6 +1339,6 @@ "timezone": "", "title": "Client Dashboard", "uid": "9UtNFCgVz", - "version": 3, + "version": 7, "weekStart": "" } diff --git a/monitoring/grafana/provisioning/default_dashboards/farm-proxy/debug_dashboard.json b/monitoring/grafana/provisioning/default_dashboards/farm-proxy/debug_dashboard.json index 93a8ac4..7efd7ea 100644 --- a/monitoring/grafana/provisioning/default_dashboards/farm-proxy/debug_dashboard.json +++ b/monitoring/grafana/provisioning/default_dashboards/farm-proxy/debug_dashboard.json @@ -24,8 +24,8 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, - "id": null, - "iteration": 1659687486099, + "id": 20, + "iteration": 1684179293575, "links": [], "liveNow": false, "panels": [ @@ -42,6 +42,7 @@ "type": "row" }, { + "description": "Version of Farm Proxy", "fieldConfig": { "defaults": { "color": { @@ -54,33 +55,40 @@ { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] - }, - "unit": "dateTimeAsIso" + } }, "overrides": [] }, "gridPos": { - "h": 4, + "h": 2, "w": 12, "x": 0, "y": 1 }, - "id": 53, + "id": 92, "options": { - "colorMode": "value", + "colorMode": "none", "graphMode": "none", - "justifyMode": "center", - "orientation": "auto", + "justifyMode": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": [ - "lastNotNull" + "last" ], "fields": "", "values": false }, - "textMode": "value_and_name" + "text": { + "titleSize": 1, + "valueSize": 24 + }, + "textMode": "name" }, "pluginVersion": "8.4.0", "targets": [ @@ -90,17 +98,15 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "FP_start_time_ms", + "expr": "FP_application_version_details", "interval": "", - "legendFormat": "Router start time - {{instance}}:", + "legendFormat": "Version: {{version_full}}", "refId": "A" } ], - "title": "Router start time", "type": "stat" }, { - "description": "", "fieldConfig": { "defaults": { "color": { @@ -111,7 +117,7 @@ "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 10, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -124,8 +130,8 @@ "scaleDistribution": { "type": "linear" }, - "showPoints": "never", - "spanNulls": true, + "showPoints": "auto", + "spanNulls": false, "stacking": { "group": "A", "mode": "none" @@ -147,8 +153,7 @@ "value": 80 } ] - }, - "unit": "GHs" + } }, "overrides": [] }, @@ -158,13 +163,13 @@ "x": 12, "y": 1 }, - "id": 2, + "id": 23, "options": { "legend": { "calcs": [ - "lastNotNull", "min", - "max" + "max", + "lastNotNull" ], "displayMode": "table", "placement": "bottom", @@ -172,7 +177,7 @@ "sortDesc": true }, "tooltip": { - "mode": "single", + "mode": "multi", "sort": "none" } }, @@ -184,15 +189,88 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(rate(FP_shares_total{direction=~\"$direction\",status=~\"$status\", type=~\"$type\"}[5m]) * 4.294967296) by (server, direction, status, type)", + "expr": "100* sum(FP_shares_total{direction=\"upstream\",server=~\"$target\", type=\"standard\"}) by (server) / ignoring(server) group_left sum(FP_shares_total{direction=\"upstream\", type=\"standard\"})", "interval": "", - "legendFormat": "{{server}} {{status}} {{direction}} {{type}} hashrate", + "legendFormat": "standard {{server}}", "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "100* sum(FP_shares_total{direction=\"upstream\",server=~\"$target\", type=\"devfee\"}) by (server) / ignoring(server) group_left sum(FP_shares_total{direction=\"upstream\", type=\"devfee\"})", + "hide": false, + "interval": "", + "legendFormat": "devfee {{server}}", + "refId": "B" } ], - "title": "Hashrate", + "title": "Hashrate Split", "type": "timeseries" }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "dateTimeAsLocal" + }, + "overrides": [] + }, + "gridPos": { + "h": 1, + "w": 12, + "x": 0, + "y": 3 + }, + "id": 53, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "titleSize": 18, + "valueSize": 18 + }, + "textMode": "value_and_name" + }, + "pluginVersion": "8.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "FP_start_time_ms", + "interval": "", + "legendFormat": "Router start time ({{instance}}):", + "refId": "A" + } + ], + "type": "stat" + }, { "fieldConfig": { "defaults": { @@ -224,16 +302,16 @@ "overrides": [] }, "gridPos": { - "h": 3, + "h": 1, "w": 12, "x": 0, - "y": 5 + "y": 4 }, "id": 43, "options": { "colorMode": "value", "graphMode": "none", - "justifyMode": "center", + "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -242,7 +320,10 @@ "fields": "", "values": false }, - "text": {}, + "text": { + "titleSize": 18, + "valueSize": 18 + }, "textMode": "value_and_name" }, "pluginVersion": "8.4.0", @@ -257,19 +338,21 @@ "format": "time_series", "instant": false, "interval": "", - "legendFormat": "instance: {{instance}} ", + "legendFormat": "Certificate validity:", "refId": "A" } ], - "title": "Certificate validity", "type": "stat" }, { + "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "fixedColor": "green", + "mode": "fixed" }, + "displayName": "Active connections", "mappings": [], "thresholds": { "mode": "absolute", @@ -284,14 +367,17 @@ "overrides": [] }, "gridPos": { - "h": 9, + "h": 2, "w": 12, "x": 0, - "y": 8 + "y": 5 }, "id": 8, "options": { - "orientation": "auto", + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" @@ -299,12 +385,10 @@ "fields": "", "values": false }, - "showThresholdLabels": false, - "showThresholdMarkers": true, "text": { - "titleSize": 13, - "valueSize": 30 - } + "valueSize": 32 + }, + "textMode": "auto" }, "pluginVersion": "8.4.0", "targets": [ @@ -316,20 +400,72 @@ "exemplar": true, "expr": "sum(FP_connections_by_target{target=~\"$target\"}) + sum(FP_subscription_size_to_target_total{target=~\"$target\"})", "interval": "", - "legendFormat": "#active connections", + "legendFormat": "Active connections", "refId": "A" + } + ], + "title": "Connections", + "transformations": [], + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 6, + "x": 0, + "y": 7 + }, + "id": 89, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 }, + "textMode": "auto" + }, + "pluginVersion": "8.4.0", + "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_connections_by_target{goal!=\"#!!ii-DevFee\",target=~\"$target\"})", + "expr": "sum(FP_subscription_size_to_target_total{goal!=\"#!!ii-DevFee\",target=~\"$target\"})", + "format": "time_series", "hide": false, "interval": "", - "legendFormat": "upstream standard open connection", - "refId": "B" + "legendFormat": "downstream standard open connection {{goal}}", + "refId": "C" }, { "datasource": { @@ -337,23 +473,73 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_subscription_size_to_target_total{goal!=\"#!!ii-DevFee\",target=~\"$target\"})", + "expr": "sum(FP_subscription_size_to_target_total{goal=\"#!!ii-DevFee\",target=~\"$target\"})", + "format": "time_series", "hide": false, "interval": "", - "legendFormat": "downstream standard open connection", - "refId": "C" + "legendFormat": "downstream devfee open connection", + "refId": "E" + } + ], + "type": "stat" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "purple", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 2, + "w": 6, + "x": 6, + "y": 7 + }, + "id": 90, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": { + "valueSize": 24 }, + "textMode": "auto" + }, + "pluginVersion": "8.4.0", + "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_connections_by_target{goal=\"#!!ii-DevFee\",target=~\"$target\"})", + "expr": "sum(FP_connections_by_target{goal!=\"#!!ii-DevFee\",target=~\"$target\"})", "hide": false, "interval": "", - "legendFormat": "upstream devfee open connection", - "refId": "D" + "legendFormat": "upstream standard open connection", + "refId": "B" }, { "datasource": { @@ -361,15 +547,14 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_subscription_size_to_target_total{goal=\"#!!ii-DevFee\",target=~\"$target\"})", + "expr": "sum(FP_connections_by_target{goal=\"#!!ii-DevFee\",target=~\"$target\"})", "hide": false, "interval": "", - "legendFormat": "downstream devfee open connection", - "refId": "E" + "legendFormat": "upstream devfee open connection", + "refId": "D" } ], - "title": "Connection", - "type": "gauge" + "type": "stat" }, { "description": "", @@ -379,7 +564,7 @@ "mode": "palette-classic" }, "custom": { - "axisLabel": "submit/s", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", @@ -420,29 +605,29 @@ } ] }, - "unit": "none" + "unit": "GHs" }, "overrides": [] }, "gridPos": { - "h": 9, - "w": 12, - "x": 12, + "h": 6, + "w": 24, + "x": 0, "y": 10 }, - "id": 9, + "id": 2, "options": { "legend": { "calcs": [ "lastNotNull" ], "displayMode": "table", - "placement": "bottom", + "placement": "right", "sortBy": "Last *", "sortDesc": true }, "tooltip": { - "mode": "single", + "mode": "multi", "sort": "none" } }, @@ -454,27 +639,28 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(rate(FP_submits_total{direction=~\"$direction\",status=~\"$status\", type=~\"$type\"}[1m])) by (server, direction, status, type)", + "expr": "sum(rate(FP_shares_total{direction=~\"$direction\",status=~\"$status\", type=~\"$type\"}[5m]) * 4.294967296) by (server, direction, status, type)", "interval": "", - "legendFormat": "{{server}} {{status}} {{direction}} {{type}} submits", + "legendFormat": "{{server}} {{status}} {{direction}} {{type}} hashrate", "refId": "A" } ], - "title": "Submission Rate", + "title": "Hashrate", "type": "timeseries" }, { + "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { - "axisLabel": "", + "axisLabel": "submit/s", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 0, + "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, @@ -487,8 +673,8 @@ "scaleDistribution": { "type": "linear" }, - "showPoints": "auto", - "spanNulls": false, + "showPoints": "never", + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -510,31 +696,30 @@ "value": 80 } ] - } + }, + "unit": "none" }, "overrides": [] }, "gridPos": { - "h": 9, - "w": 12, + "h": 6, + "w": 24, "x": 0, - "y": 17 + "y": 16 }, - "id": 23, + "id": 9, "options": { "legend": { "calcs": [ - "min", - "max", "lastNotNull" ], "displayMode": "table", - "placement": "bottom", + "placement": "right", "sortBy": "Last *", "sortDesc": true }, "tooltip": { - "mode": "single", + "mode": "multi", "sort": "none" } }, @@ -546,412 +731,169 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "100* sum(FP_shares_total{direction=\"upstream\",server=~\"$target\", type=\"standard\"}) by (server) / ignoring(server) group_left sum(FP_shares_total{direction=\"upstream\", type=\"standard\"})", + "expr": "sum(rate(FP_submits_total{direction=~\"$direction\",status=~\"$status\", type=~\"$type\"}[1m])) by (server, direction, status, type)", "interval": "", - "legendFormat": "standard {{server}}", + "legendFormat": "{{server}} {{status}} {{direction}} {{type}} submits", "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "exemplar": true, - "expr": "100* sum(FP_shares_total{direction=\"upstream\",server=~\"$target\", type=\"devfee\"}) by (server) / ignoring(server) group_left sum(FP_shares_total{direction=\"upstream\", type=\"devfee\"})", - "hide": false, - "interval": "", - "legendFormat": "devfee {{server}}", - "refId": "B" } ], - "title": "Hashrate Split", + "title": "Submission Rate", "type": "timeseries" }, { - "collapsed": true, + "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 26 + "y": 22 }, - "id": 41, - "panels": [ - { - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "THs" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 27 + "id": 79, + "panels": [], + "title": "Connection metrics - Standard", + "type": "row" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "id": 15, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "showThresholdLabels": false, - "showThresholdMarkers": true + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } }, - "pluginVersion": "8.4.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "exemplar": true, - "expr": "sum(rate(FP_allocated_hash_rate_by_providers[1m]) * 4.294967296) by (target)", - "interval": "", - "legendFormat": "{{target}}", - "refId": "A" - } - ], - "title": "Allocated HR", - "type": "gauge" + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 94, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ { - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [], - "unit": "percent" - }, - "overrides": [] + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 27 + "exemplar": true, + "expr": "sum(FP_subscription_size_to_target_total{goal!=\"#!!ii-DevFee\"})", + "interval": "", + "legendFormat": "Downstream connections", + "refId": "A" + } + ], + "title": "Downstream connections", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "id": 22, - "options": { - "displayLabels": [ - "name", - "value" - ], - "legend": { - "displayMode": "list", - "placement": "right", - "values": [ - "percent" - ] + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" }, - "tooltip": { - "mode": "single", - "sort": "none" + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" } }, - "pluginVersion": "8.4.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "exemplar": true, - "expr": "100* sum(FP_hash_rate_by_providers{goal!=\"#!!ii-DevFee\"}) by (goal) / ignoring(goal) group_left sum(FP_hash_rate_by_providers{goal!=\"#!!ii-DevFee\"})", - "interval": "", - "legendFormat": "{{goal}}", - "refId": "A" - } - ], - "title": "Hashrate Split", - "type": "piechart" - }, - { - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "THs" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 35 - }, - "id": 17, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true, - "text": { - "titleSize": 2 - } - }, - "pluginVersion": "8.4.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "exemplar": true, - "expr": "sum(rate(FP_hash_rate_by_receivers[1m])* 4.294967296)", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "HashRate from Receivers", - "type": "gauge" - }, - { - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green" - } - ] - }, - "unit": "THs" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 35 - }, - "id": 13, - "options": { - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true - }, - "pluginVersion": "8.4.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "exemplar": true, - "expr": "sum(rate(FP_hash_rate_by_providers[1m])* 4.294967296) by (target)", - "interval": "", - "legendFormat": "{{target}}", - "refId": "A" - } - ], - "title": "Measured HR on targets", - "type": "gauge" - }, - { - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [], - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 43 - }, - "id": 33, - "options": { - "displayLabels": [ - "name", - "value" - ], - "legend": { - "displayMode": "list", - "placement": "right", - "values": [ - "percent" - ] - }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "8.4.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "exemplar": true, - "expr": "100* sum(FP_hash_rate_by_providers{goal=\"#!!ii-DevFee\"}) by (goal) / ignoring(goal) group_left sum(FP_hash_rate_by_providers{goal=\"#!!ii-DevFee\"})", - "interval": "", - "legendFormat": "{{goal}}", - "refId": "A" - } - ], - "title": "Hashrate Split - devfee", - "type": "piechart" - } - ], - "title": "HR split - detail", - "type": "row" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 27 - }, - "id": 39, - "panels": [], - "title": "Connection metrics", - "type": "row" - }, - { - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, "gridPos": { - "h": 11, + "h": 8, "w": 24, "x": 0, - "y": 28 + "y": 29 }, "id": 31, "options": { @@ -962,13 +904,13 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom", + "placement": "right", "sortBy": "Last *", "sortDesc": true }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, "pluginVersion": "8.4.0", @@ -979,7 +921,7 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_connections_by_target{target=~\"$target\"}) by (target, goal)", + "expr": "sum(FP_connections_by_target{target=~\"$target\", goal!=\"#!!ii-DevFee\"}) by (target, goal)", "interval": "", "legendFormat": "{{goal}} {{target}}", "refId": "A" @@ -1041,11 +983,11 @@ }, "gridPos": { "h": 8, - "w": 12, + "w": 24, "x": 0, - "y": 39 + "y": 37 }, - "id": 32, + "id": 25, "options": { "legend": { "calcs": [ @@ -1054,13 +996,13 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom", + "placement": "right", "sortBy": "Last *", "sortDesc": true }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, "pluginVersion": "8.4.0", @@ -1071,13 +1013,13 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_subscription_size_to_target_total{goal=\"#!!ii-DevFee\",target=~\"$target\"}) by (goal, target)", + "expr": "sum(FP_subscription_size_to_target_total{goal!=\"#!!ii-DevFee\",target=~\"$target\"}) by (goal, target)", "interval": "", "legendFormat": "{{goal}} - {{target}}", "refId": "A" } ], - "title": "Subscription by target - devfee", + "title": "Subscription by target", "type": "timeseries" }, { @@ -1127,17 +1069,18 @@ "value": 80 } ] - } + }, + "unit": "s" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 39 + "x": 0, + "y": 45 }, - "id": 25, + "id": 81, "options": { "legend": { "calcs": [ @@ -1146,16 +1089,15 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom", + "placement": "right", "sortBy": "Last *", "sortDesc": true }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, - "pluginVersion": "8.4.0", "targets": [ { "datasource": { @@ -1163,13 +1105,13 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_subscription_size_to_target_total{goal!=\"#!!ii-DevFee\",target=~\"$target\"}) by (goal, target)", + "expr": "sum(FP_mean_latency_s{target!~\".*Devfee.*\"}) by (target)", "interval": "", - "legendFormat": "{{goal}} - {{target}}", + "legendFormat": "{{target}}", "refId": "A" } ], - "title": "Subscription by target", + "title": "Mean latency", "type": "timeseries" }, { @@ -1227,10 +1169,10 @@ "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 47 + "x": 12, + "y": 45 }, - "id": 19, + "id": 82, "options": { "legend": { "calcs": [ @@ -1239,13 +1181,11 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom", - "sortBy": "Last *", - "sortDesc": true + "placement": "right" }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, "targets": [ @@ -1255,13 +1195,13 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_mean_latency_s{target=~\"$target\"}) by (target)", + "expr": "sum(FP_std_dev_latency_s{target!~\".*Devfee.*\"}) by (target)", "interval": "", "legendFormat": "{{target}}", "refId": "A" } ], - "title": "Mean latency", + "title": "Std dev latency", "type": "timeseries" }, { @@ -1312,17 +1252,17 @@ } ] }, - "unit": "s" + "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 47 + "x": 0, + "y": 53 }, - "id": 20, + "id": 83, "options": { "legend": { "calcs": [ @@ -1331,11 +1271,11 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom" + "placement": "right" }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, "targets": [ @@ -1345,13 +1285,13 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_std_dev_latency_s{target=~\"$target\"}) by (target)", + "expr": "sum(FP_rejection_rate{target!~\".*Devfee.*\"}) by (target)", "interval": "", "legendFormat": "{{target}}", "refId": "A" } ], - "title": "Std dev latency", + "title": "Rejection rate", "type": "timeseries" }, { @@ -1409,10 +1349,10 @@ "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 55 + "x": 12, + "y": 53 }, - "id": 47, + "id": 84, "options": { "legend": { "calcs": [ @@ -1421,11 +1361,11 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom" + "placement": "right" }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" } }, "targets": [ @@ -1435,13 +1375,13 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_rejection_rate{target=~\"$target\"}) by (target)", + "expr": "sum(FP_error_rate{target!~\".*Devfee.*\"}) by (target)", "interval": "", "legendFormat": "{{target}}", "refId": "A" } ], - "title": "Rejection rate", + "title": "Error rate", "type": "timeseries" }, { @@ -1485,32 +1425,48 @@ { "color": "green", "value": null - }, - { - "color": "red", - "value": 80 } ] - }, - "unit": "percent" + } }, - "overrides": [] + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + " ConnectionError" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 55 + "x": 0, + "y": 61 }, - "id": 49, + "id": 87, "options": { "legend": { - "calcs": [ - "min", - "max", - "lastNotNull" - ], - "displayMode": "table", + "calcs": [], + "displayMode": "list", "placement": "bottom" }, "tooltip": { @@ -1518,6 +1474,7 @@ "sort": "none" } }, + "pluginVersion": "8.3.3", "targets": [ { "datasource": { @@ -1525,174 +1482,885 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_error_rate{target=~\"$target\"}) by (target)", + "expr": "sum(FP_target_down_reason_total) by (reason, target)", + "format": "time_series", + "instant": false, "interval": "", - "legendFormat": "{{target}}", + "legendFormat": "{{target}} {{reason}}", "refId": "A" } ], - "title": "Error rate", + "title": "Reason for Target Down", "type": "timeseries" }, { "fieldConfig": { "defaults": { "color": { - "mode": "palette-classic" + "mode": "fixed" }, "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } + "align": "left", + "displayMode": "color-text", + "filterable": false }, - "mappings": [], + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1 + }, + "1": { + "color": "green", + "index": 0 + } + }, + "type": "value" + } + ], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] - } + }, + "unit": "bool_on_off" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 63 + "x": 12, + "y": 61 }, - "id": 60, + "id": 85, "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showHeader": true }, - "pluginVersion": "8.3.3", + "pluginVersion": "8.4.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, - "exemplar": true, - "expr": "sum(FP_target_down_reason_total) by (reason, target)", + "exemplar": false, + "expr": "sum(FP_target_status{target!~\".*Devfee.*\"}) by (target)", + "format": "table", + "instant": true, "interval": "", - "legendFormat": "{{target}} {{reason}}", + "legendFormat": "{{target}}", "refId": "A" } ], - "title": "Reason for Target Down", - "type": "timeseries" + "title": "Target Status", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "target": "Target" + } + } + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "field": "Value" + } + ] + } + } + ], + "type": "table" }, { - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 39, + "panels": [ + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] }, - "mappings": [ + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 80, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "8.4.0", + "targets": [ { - "options": { - "0": { - "color": "red", - "index": 1, - "text": "Down" + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_connections_by_target{target=~\"$target\", goal=\"#!!ii-DevFee\"}) by (target, goal)", + "interval": "", + "legendFormat": "{{goal}} {{target}}", + "refId": "A" + } + ], + "title": "Connection to upstream", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 32, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "8.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_subscription_size_to_target_total{goal=\"#!!ii-DevFee\",target=~\"$target\"}) by (goal, target)", + "interval": "", + "legendFormat": "{{goal}} - {{target}}", + "refId": "A" + } + ], + "title": "Subscription by target - devfee", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 16 + }, + "id": 19, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last *", + "sortDesc": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_mean_latency_s{target=~\".*Devfee.*\"}) by (target)", + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Mean latency", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 20, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_std_dev_latency_s{target=~\".*Devfee.*\"}) by (target)", + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Std dev latency", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 0, + "y": 22 + }, + "id": 47, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_rejection_rate{target=~\".*Devfee.*\"}) by (target)", + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Rejection rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 22 + }, + "id": 49, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_error_rate{target=~\".*Devfee.*\"}) by (target)", + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Error rate", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "1": { - "color": "green", - "index": 2, - "text": "Up" + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" }, - "-1": { - "color": "light-blue", - "index": 0, - "text": "Unknown" + "thresholdsStyle": { + "mode": "off" } }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + } + }, + "overrides": [ { - "color": "green", - "value": null + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + " ConnectionError" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] } ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 63 - }, - "id": 51, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 28 + }, + "id": 60, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.3.3", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_target_down_reason_total) by (reason, target)", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "{{target}} {{reason}}", + "refId": "A" + } ], - "fields": "", - "values": false + "title": "Reason for Target Down", + "type": "timeseries" }, - "textMode": "auto" - }, - "pluginVersion": "8.4.0", - "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" + "fieldConfig": { + "defaults": { + "color": { + "mode": "fixed" + }, + "custom": { + "align": "left", + "displayMode": "color-text", + "filterable": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1 + }, + "1": { + "color": "green", + "index": 0 + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bool_on_off" + }, + "overrides": [] }, - "exemplar": true, - "expr": "sum(FP_target_status) by (target)", - "interval": "", - "legendFormat": "{{target}}", - "refId": "A" + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 28 + }, + "id": 86, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "8.4.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": false, + "expr": "sum(FP_target_status{target=~\".*Devfee.*\"}) by (target)", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Target Status", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true + }, + "indexByName": {}, + "renameByName": { + "target": "Target" + } + } + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "field": "Value" + } + ] + } + } + ], + "type": "table" } ], - "title": "Target Status", - "type": "stat" + "title": "Connection metrics - Devfee", + "type": "row" }, { "collapsed": true, @@ -1700,7 +2368,7 @@ "h": 1, "w": 24, "x": 0, - "y": 71 + "y": 70 }, "id": 11, "panels": [ @@ -1756,9 +2424,9 @@ }, "gridPos": { "h": 10, - "w": 24, + "w": 12, "x": 0, - "y": 4 + "y": 63 }, "id": 45, "options": { @@ -1769,11 +2437,99 @@ "lastNotNull" ], "displayMode": "table", - "placement": "bottom" + "placement": "right" }, "tooltip": { - "mode": "single", - "sort": "none" + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "exemplar": true, + "expr": "sum(FP_score_by_target{target!~\".*Devfee.*\"}) by (target)", + "interval": "", + "legendFormat": "{{target}}", + "refId": "A" + } + ], + "title": "Score by target - standard", + "type": "timeseries" + }, + { + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 63 + }, + "id": 88, + "options": { + "legend": { + "calcs": [ + "min", + "max", + "lastNotNull" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "multi", + "sort": "desc" } }, "targets": [ @@ -1783,7 +2539,7 @@ "uid": "PABF2E7BD7AE7B0F4" }, "exemplar": true, - "expr": "sum(FP_score_by_target{target=~\"$target\"}) by (target)", + "expr": "sum(FP_score_by_target{target=~\".*Devfee.*\"}) by (target)", "interval": "", "legendFormat": "{{target}}", "refId": "A" @@ -1846,7 +2602,7 @@ "h": 8, "w": 12, "x": 0, - "y": 14 + "y": 73 }, "id": 37, "options": { @@ -1930,7 +2686,7 @@ "h": 8, "w": 12, "x": 12, - "y": 14 + "y": 73 }, "id": 35, "options": { @@ -1998,7 +2754,7 @@ "h": 8, "w": 12, "x": 0, - "y": 22 + "y": 81 }, "id": 29, "options": { @@ -2058,7 +2814,7 @@ "h": 8, "w": 12, "x": 12, - "y": 22 + "y": 81 }, "id": 27, "options": { @@ -2148,7 +2904,7 @@ "h": 8, "w": 12, "x": 0, - "y": 30 + "y": 89 }, "id": 55, "options": { @@ -2232,7 +2988,7 @@ "h": 8, "w": 12, "x": 12, - "y": 30 + "y": 89 }, "id": 57, "options": { @@ -2316,7 +3072,7 @@ "h": 8, "w": 12, "x": 0, - "y": 38 + "y": 97 }, "id": 59, "options": { @@ -2356,7 +3112,7 @@ "h": 1, "w": 24, "x": 0, - "y": 72 + "y": 71 }, "id": 64, "panels": [ @@ -2386,7 +3142,7 @@ "h": 8, "w": 12, "x": 0, - "y": 30 + "y": 67 }, "id": 76, "options": { @@ -2444,7 +3200,7 @@ "h": 8, "w": 12, "x": 12, - "y": 30 + "y": 67 }, "id": 72, "options": { @@ -2530,7 +3286,7 @@ "h": 8, "w": 12, "x": 0, - "y": 38 + "y": 75 }, "id": 70, "options": { @@ -2648,7 +3404,7 @@ "h": 8, "w": 12, "x": 12, - "y": 38 + "y": 75 }, "id": 77, "options": { @@ -2724,7 +3480,7 @@ "h": 8, "w": 12, "x": 0, - "y": 46 + "y": 83 }, "id": 66, "options": { @@ -2773,14 +3529,18 @@ "type": "row" } ], - "refresh": "1m", + "refresh": "30s", "schemaVersion": 35, "style": "dark", "tags": [], "templating": { "list": [ { - "current": {}, + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" @@ -2838,7 +3598,11 @@ "type": "custom" }, { - "current": {}, + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" @@ -2896,7 +3660,11 @@ "type": "custom" }, { - "current": {}, + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, "datasource": { "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" @@ -2926,7 +3694,7 @@ "timepicker": {}, "timezone": "", "title": "Debug Dashboard FP", - "uid": "6JZhw2H7z9", - "version": 4, + "uid": "7JZhw2H7z9", + "version": 3, "weekStart": "" -} \ No newline at end of file +} diff --git a/monitoring/grafana/provisioning/grafana.ini b/monitoring/grafana/provisioning/grafana.ini index 256888f..f562c91 100644 --- a/monitoring/grafana/provisioning/grafana.ini +++ b/monitoring/grafana/provisioning/grafana.ini @@ -1,3 +1,14 @@ [auth.anonymous] # enable anonymous access enabled = true +#################################### SMTP / Emailing ##################### +[smtp] +enabled = true +host = smtp.gmail.com:587 +# fill in you email address +user = name@gmail.com +# fill in your password, if you use gmail with 2 factor authentication then you should generate app password here https://support.google.com/accounts/answer/185833?hl=en +password = your_password +# fill in email which should be a sender of the firing alert +from_address = sender@gmail.com +from_name = BraiinsOsPlusLicenseAlerts