diff --git a/.gitignore b/.gitignore index 3968407..e14b415 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ docker/ssl/* !docker/ssl/.gitkeep +docker/environment diff --git a/README.md b/README.md index 905a8fb..bc96af7 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ This stack is also known as the **TIG** stack. ## Quickstart +### Create infrastructure + **Testing purpose only**. This guide uses [Docker](https://www.docker.com/). Ensure you have `docker`, `docker-compose` and `openssl` binaries @@ -21,13 +23,14 @@ installed. Write your miner address, grafana and influxdb credentials: ``` +cp -p docker/environment.example docker/environment vi docker/environment ``` Generate a self-signed certificate: ``` -openssl req -x509 -nodes -newkey rsa:2048 -keyout docker/ssl/influxdb.key -out docker/ssl/influxdb.crt -days 365 +openssl req -x509 -nodes -newkey rsa:2048 -keyout docker/ssl/my.key -out docker/ssl/my.crt -days 365 ``` Press enter to every question. @@ -38,6 +41,107 @@ Then start containers: docker-compose up -d ``` +See logs with: + +``` +docker-compose logs -f +``` + +## Configure Telegraf + +Telegraf inputs configurations are stored in [telegraf](telegraf) directory. You can test them using the following +command: + +``` +docker run --rm -e "MINER_ADDRESS=${MINER_ADDRESS}" \ + -v "${PWD}/docker/telegraf.conf:/etc/telegraf/telegraf.conf:ro" -v "${PWD}/telegraf:/etc/telegraf/telegraf.d:ro" \ + telegraf:1.15.4 telegraf -test -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d +``` + +Example: + +``` +2021-02-02T14:39:57Z I! Starting Telegraf 1.15.4 +> currencies,from=ETH,host=docker,to=EUR value=1171.49 1612276798000000000 +> currencies,from=ETH,host=docker,to=USD value=1411.03 1612276798000000000 +> flexpool_balance,host=docker,miner=0x3e2251567f87E4B6a3927158AF9c678ECa87a337 result=69375170480923064 1612276798000000000 +> flexpool_workers,host=docker,miner=0x3e2251567f87E4B6a3927158AF9c678ECa87a337,name=rig1 effective_hashrate=86666666,invalid_shares=0,reported_hashrate=96304517,stale_shares=3,valid_shares=2008 1612276798000000000 +> flexpool_daily_revenue_estimation,host=docker,miner=0x3e2251567f87E4B6a3927158AF9c678ECa87a337 result=6710141993155250 1612276798000000000 +> flexpool_paid,host=docker,miner=0x3e2251567f87E4B6a3927158AF9c678ECa87a337 result=0 1612276798000000000 +> flexpool_stats,host=docker,miner=0x3e2251567f87E4B6a3927158AF9c678ECa87a337 current_effective_hashrate=86666666,current_reported_hashrate=96304517,daily_effective_hashrate=92962962.625,daily_invalid_shares=0,daily_reported_hashrate=96286435.27777778,daily_stale_shares=3,daily_valid_shares=2008 1612276798000000000 +``` + +Once you are confident with your configuration, reload the container: + +``` +docker-compose restart telegraf +``` + +## Configure Grafana + +### Login + +Go to [Grafana URL](http://localhost:3000/). Login with credentials set in the "*Create infrastructure*" section. + +![grafana login](images/grafana-001.png) + +### Add a datasource + +Go to *Configuration*, *Data Sources*: + +![grafana data sources](images/grafana-002.png) + +Select on *Add data source*: + +![grafana add data source](images/grafana-003.png) + +Search for *InfluxDB*: + +![grafana influxdb](images/grafana-004.png) + +Then add read-only credentials to access the InfluxDB data store: +- **Name**: `InfluxDB` +- **URL**: `https://influxdb:8086` +- **Basic auth**: enabled +- **Skip TLS Verify**: enabled +- **User**: defined by `INFLUXDB_READ_USER` +- **Password**: defined by `INFLUXDB_READ_USER_PASSWORD` +- **Min time interval**: `60s` (Telegraf interval) + +![grafana influxdb settings](images/grafana-005.png) + +Click on *Save & Test*: + +![grafana data source is working](images/grafana-006.png) + +### Import dashboard + +Click on *Import*: + +![grafana import](images/grafana-007.png) + +Then upload JSON file from this repository: + +![grafana import json](images/grafana-008.png) + +Select *InfluxDB* data source and click on *Import*: + +![grafana import overview](images/grafana-009.png) + +Your dashboard should be imported! + +![grafana dashboard overview](images/grafana-010.png) + +Repeat the operation for other dashboards if needed. + +## Remove infrastructure + +Use docker-compose to remove containers and their volumes: + +``` +docker-compose down -v +``` + ## Disclaimer Telegraf is able to make API call on thrid-party services. Please read terms of service before going further. The diff --git a/docker-compose.yml b/docker-compose.yml index 45dc775..e93c5f3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,6 @@ services: image: grafana/grafana:7.3.7 volumes: - grafana-storage:/var/lib/grafana - user: "472:472" ports: - "3000:3000" links: diff --git a/docker/environment.example b/docker/environment.example new file mode 100644 index 0000000..b60e813 --- /dev/null +++ b/docker/environment.example @@ -0,0 +1,14 @@ +MINER_ADDRESS= +GF_SECURITY_ADMIN_USER=admin +GF_SECURITY_ADMIN_PASSWORD= +GF_USERS_DEFAULT_THEME=light +INFLUXDB_DB=metrics +INFLUXDB_WRITE_USER=telegraf +INFLUXDB_WRITE_USER_PASSWORD= +INFLUXDB_READ_USER=grafana +INFLUXDB_READ_USER_PASSWORD= +INFLUXDB_ADMIN_USER=admin +INFLUXDB_ADMIN_USER_PASSWORD= +INFLUXDB_HTTP_HTTPS_ENABLED=true +INFLUXDB_HTTP_HTTPS_CERTIFICATE=/etc/ssl/self-signed/my.crt +INFLUXDB_HTTP_HTTPS_PRIVATE_KEY=/etc/ssl/self-signed/my.key diff --git a/grafana/README.md b/grafana/README.md deleted file mode 100644 index 5a9c8be..0000000 --- a/grafana/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Grafana dashboards - -Ensure to replace `MINER_ADDRESS` with your Ethereum wallet address. diff --git a/grafana/flexpool-overview.json b/grafana/flexpool-overview.json index 49021eb..4311eb8 100644 --- a/grafana/flexpool-overview.json +++ b/grafana/flexpool-overview.json @@ -1,4 +1,40 @@ { + "__inputs": [ + { + "name": "DS_INFLUXDB", + "label": "InfluxDB", + "description": "", + "type": "datasource", + "pluginId": "influxdb", + "pluginName": "InfluxDB" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.3.7" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + } + ], "annotations": { "list": [ { @@ -16,12 +52,12 @@ "editable": true, "gnetId": null, "graphTooltip": 0, - "id": 12, - "iteration": 1612081989074, + "id": null, + "iteration": 1612282612782, "links": [], "panels": [ { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 1, "w": 24, @@ -37,10 +73,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -67,9 +104,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -170,10 +208,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -200,9 +239,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -293,7 +333,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -329,10 +369,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "balance", @@ -386,7 +428,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -422,13 +464,15 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { - "alias": "fiat", + "alias": "balance", "groupBy": [ { "params": [ @@ -476,10 +520,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -506,9 +551,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -609,10 +655,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -639,9 +686,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -732,7 +780,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -772,10 +820,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "revenue", @@ -829,7 +879,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -864,13 +914,15 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { - "alias": "fiat", + "alias": "revenue", "groupBy": [ { "params": [ @@ -918,10 +970,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -948,9 +1001,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -1052,10 +1106,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -1082,9 +1137,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -1175,7 +1231,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -1213,10 +1269,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "paid", @@ -1270,7 +1328,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -1298,20 +1356,22 @@ "id": 52, "options": { "colorMode": "value", - "graphMode": "area", + "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { - "alias": "fiat", + "alias": "paid", "groupBy": [ { "params": [ @@ -1356,7 +1416,7 @@ }, { "collapsed": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 1, "w": 24, @@ -1373,11 +1433,12 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { "custom": {}, + "links": [], "mappings": [], "thresholds": { "mode": "absolute", @@ -1418,10 +1479,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -1526,10 +1587,11 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -1556,9 +1618,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -1659,7 +1722,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -1698,10 +1761,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "hashrate", @@ -1738,7 +1803,13 @@ } ] ], - "tags": [] + "tags": [ + { + "key": "miner", + "operator": "=~", + "value": "/^$miner$/" + } + ] } ], "timeFrom": "5m", @@ -1747,7 +1818,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -1786,12 +1857,15 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { + "alias": "hashrate", "groupBy": [ { "params": [ @@ -1844,11 +1918,12 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -1875,9 +1950,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -2015,7 +2091,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -2054,10 +2130,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "hashrate", @@ -2109,7 +2187,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -2148,10 +2226,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "hashrate", @@ -2198,7 +2278,7 @@ }, { "collapsed": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 1, "w": 24, @@ -2215,11 +2295,12 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -2246,9 +2327,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -2436,7 +2518,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { @@ -2474,10 +2556,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "valid", @@ -2529,7 +2613,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -2570,10 +2654,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "stale", @@ -2625,7 +2711,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { @@ -2667,10 +2753,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "invalid", @@ -2722,7 +2810,7 @@ "type": "stat" } ], - "schemaVersion": 25, + "schemaVersion": 26, "style": "dark", "tags": [ "flexpool", @@ -2732,27 +2820,18 @@ "list": [ { "allValue": null, - "current": { - "selected": false, - "text": "MINER_ADDRESS", - "value": "MINER_ADDRESS" - }, - "datasource": "InfluxDB", - "definition": "SHOW TAG VALUES WITH KEY = \"miner\"", + "current": {}, + "datasource": "${DS_INFLUXDB}", + "definition": "", + "error": null, "hide": 0, "includeAll": false, "label": null, "multi": false, "name": "miner", - "options": [ - { - "selected": true, - "text": "MINER_ADDRESS", - "value": "MINER_ADDRESS" - } - ], + "options": [], "query": "SHOW TAG VALUES WITH KEY = \"miner\"", - "refresh": 0, + "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 1, @@ -2764,13 +2843,10 @@ }, { "allValue": null, - "current": { - "selected": false, - "text": "EUR", - "value": "EUR" - }, - "datasource": "InfluxDB", + "current": {}, + "datasource": "${DS_INFLUXDB}", "definition": "SHOW TAG VALUES FROM currencies WITH KEY = \"to\"", + "error": null, "hide": 0, "includeAll": false, "label": null, @@ -2790,13 +2866,10 @@ }, { "allValue": null, - "current": { - "selected": false, - "text": "1110.29", - "value": "1110.29" - }, - "datasource": "InfluxDB", + "current": {}, + "datasource": "${DS_INFLUXDB}", "definition": "select value from currencies where \"to\" =~ /^$currency$/ order by desc limit 1", + "error": null, "hide": 2, "includeAll": false, "label": null, @@ -2836,5 +2909,5 @@ "timezone": "", "title": "Flexpool overview", "uid": "Q3JPASkgz", - "version": 34 -} + "version": 5 +} \ No newline at end of file diff --git a/grafana/flexpool-workers.json b/grafana/flexpool-workers.json index 19933b1..8111e1a 100644 --- a/grafana/flexpool-workers.json +++ b/grafana/flexpool-workers.json @@ -1,4 +1,40 @@ { + "__inputs": [ + { + "name": "DS_INFLUXDB", + "label": "InfluxDB", + "description": "", + "type": "datasource", + "pluginId": "influxdb", + "pluginName": "InfluxDB" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.3.7" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + } + ], "annotations": { "list": [ { @@ -16,13 +52,13 @@ "editable": true, "gnetId": null, "graphTooltip": 0, - "id": 15, - "iteration": 1612082234009, + "id": null, + "iteration": 1612282845458, "links": [], "panels": [ { "collapsed": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 1, "w": 24, @@ -39,11 +75,12 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -70,9 +107,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -106,6 +144,8 @@ "measurement": "flexpool_workers", "orderByTime": "ASC", "policy": "home", + "query": "SELECT mean(\"effective_hashrate\") FROM \"flexpool_workers\" WHERE (\"miner\" =~ /^$miner$/ AND \"name\" =~ /^$worker$/) AND $timeFilter GROUP BY time($__interval), \"miner\" fill(null)", + "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ @@ -161,6 +201,8 @@ "measurement": "flexpool_workers", "orderByTime": "ASC", "policy": "default", + "query": "SELECT mean(\"reported_hashrate\") FROM \"flexpool_workers\" WHERE (\"miner\" =~ /^$miner$/ AND \"name\" =~ /^$worker$/) AND $timeFilter GROUP BY time($__interval), \"miner\" fill(null)", + "rawQuery": true, "refId": "B", "resultFormat": "time_series", "select": [ @@ -234,7 +276,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -272,10 +314,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "hashrate", @@ -333,7 +377,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -371,10 +415,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "hashrate", @@ -433,7 +479,7 @@ }, { "collapsed": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 1, "w": 24, @@ -450,11 +496,12 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -481,9 +528,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "7.3.7", "pointradius": 2, "points": false, "renderer": "flot", @@ -695,7 +743,7 @@ } }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { @@ -732,10 +780,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "valid", @@ -793,7 +843,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "fieldConfig": { "defaults": { "custom": {}, @@ -833,10 +883,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "stale", @@ -894,7 +946,7 @@ "type": "stat" }, { - "datasource": null, + "datasource": "${DS_INFLUXDB}", "description": "", "fieldConfig": { "defaults": { @@ -935,10 +987,12 @@ "calcs": [ "mean" ], + "fields": "", "values": false - } + }, + "textMode": "auto" }, - "pluginVersion": "7.0.0", + "pluginVersion": "7.3.7", "targets": [ { "alias": "invalid", @@ -996,7 +1050,7 @@ "type": "stat" } ], - "schemaVersion": 25, + "schemaVersion": 26, "style": "dark", "tags": [ "flexpool", @@ -1006,13 +1060,10 @@ "list": [ { "allValue": null, - "current": { - "selected": false, - "text": "MINER_ADDRESS", - "value": "MINER_ADDRESS" - }, - "datasource": "InfluxDB", + "current": {}, + "datasource": "${DS_INFLUXDB}", "definition": "SHOW TAG VALUES WITH KEY = \"miner\"", + "error": null, "hide": 0, "includeAll": false, "label": null, @@ -1032,13 +1083,10 @@ }, { "allValue": null, - "current": { - "selected": false, - "text": "rig1", - "value": "rig1" - }, - "datasource": "InfluxDB", + "current": {}, + "datasource": "${DS_INFLUXDB}", "definition": "SHOW TAG VALUES WITH KEY = \"name\" WHERE miner =~ /^$miner$/", + "error": null, "hide": 0, "includeAll": false, "label": null, @@ -1078,5 +1126,5 @@ "timezone": "", "title": "Flexpool workers", "uid": "slcUBSzgz", - "version": 7 -} + "version": 2 +} \ No newline at end of file diff --git a/images/flexpool-overview.png b/images/flexpool-overview.png deleted file mode 100644 index 117c995..0000000 Binary files a/images/flexpool-overview.png and /dev/null differ diff --git a/images/flexpool-workers.png b/images/flexpool-workers.png deleted file mode 100644 index a83a941..0000000 Binary files a/images/flexpool-workers.png and /dev/null differ diff --git a/images/grafana-001.png b/images/grafana-001.png new file mode 100644 index 0000000..dd61712 Binary files /dev/null and b/images/grafana-001.png differ diff --git a/images/grafana-002.png b/images/grafana-002.png new file mode 100644 index 0000000..fb2b1a4 Binary files /dev/null and b/images/grafana-002.png differ diff --git a/images/grafana-003.png b/images/grafana-003.png new file mode 100644 index 0000000..ba27afe Binary files /dev/null and b/images/grafana-003.png differ diff --git a/images/grafana-004.png b/images/grafana-004.png new file mode 100644 index 0000000..9906bdc Binary files /dev/null and b/images/grafana-004.png differ diff --git a/images/grafana-005.png b/images/grafana-005.png new file mode 100644 index 0000000..f80a919 Binary files /dev/null and b/images/grafana-005.png differ diff --git a/images/grafana-006.png b/images/grafana-006.png new file mode 100644 index 0000000..9630fd7 Binary files /dev/null and b/images/grafana-006.png differ diff --git a/images/grafana-007.png b/images/grafana-007.png new file mode 100644 index 0000000..34ece04 Binary files /dev/null and b/images/grafana-007.png differ diff --git a/images/grafana-008.png b/images/grafana-008.png new file mode 100644 index 0000000..bcff5a4 Binary files /dev/null and b/images/grafana-008.png differ diff --git a/images/grafana-009.png b/images/grafana-009.png new file mode 100644 index 0000000..4e9d0c3 Binary files /dev/null and b/images/grafana-009.png differ diff --git a/images/grafana-010.png b/images/grafana-010.png new file mode 100644 index 0000000..48f8c40 Binary files /dev/null and b/images/grafana-010.png differ