diff --git a/CHANGELOG.md b/CHANGELOG.md index 363110b..8ccac26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 2.0.0 (2021-10-11) + +### Features / Enhancements + +- Plugins statistics updated to October, 10 2021 +- Update screenshots and dashboards for Grafana 8.2 +- Added demo on https://demo.volkovlabs.io + ## 1.5.0 (2021-07-06) ### Features / Enhancements diff --git a/README.md b/README.md index 6c47b65..ed5cc80 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,24 @@ ![Stats](https://raw.githubusercontent.com/RedisGrafana/grafana-plugin-stats/master/images/redis-datasource-stats.png) -[![Grafana 7](https://img.shields.io/badge/Grafana-7-orange)](https://www.grafana.com) +[![Grafana 8](https://img.shields.io/badge/Grafana-8-orange)](https://www.grafana.com) [![Redis Data Source](https://img.shields.io/badge/dynamic/json?color=blue&label=Redis%20Data%20Source&query=%24.version&url=https%3A%2F%2Fgrafana.com%2Fapi%2Fplugins%2Fredis-datasource)](https://grafana.com/grafana/plugins/redis-datasource) [![Downloaded](https://img.shields.io/badge/dynamic/json?color=blue&label=Downloads&query=%24.downloads&url=https%3A%2F%2Fgrafana.com%2Fapi%2Fplugins%2Fredis-datasource)](https://grafana.com/grafana/plugins/redis-datasource) ## Introduction -This project collects plugins statistics from Grafana repository as [RedisTimeSeries](https://oss.redislabs.com/redistimeseries/) and visualizes collected data using [Redis plugins for Grafana](https://redisgrafana.github.io/). +This project collects plugins statistics from Grafana repository as [RedisTimeSeries](https://oss.redis.com/redistimeseries/) and visualizes collected data using [Redis plugins for Grafana](https://redisgrafana.github.io/). ![Diagram](https://raw.githubusercontent.com/RedisGrafana/grafana-plugin-stats/master/images/redis-grafana-stats.png) -Read the full story on Redis Labs blog [How to Use the New Redis Data Source for Grafana Plugin](https://redislabs.com/blog/how-to-use-the-new-redis-data-source-for-grafana-plug-in/). +Read the full story on Redis Labs blog [How to Use the New Redis Data Source for Grafana Plugin](https://redis.com/blog/how-to-use-the-new-redis-data-source-for-grafana-plug-in/). + +## Demo + +Demo is available on [demo.volkovlabs.io](https://demo.volkovlabs.io): + +- [Redis Overview dashboard](https://demo.volkovlabs.io/d/TgibHBv7z/redis-overview?orgId=1&refresh=1h) +- [Grafana Plugins dashboard](https://demo.volkovlabs.io/d/C1NCSr3Gk/grafana-plugins?orgId=1) ## Requirements @@ -21,7 +28,7 @@ Read the full story on Redis Labs blog [How to Use the New Redis Data Source for ## Collect statistics -Collect and store statistics for all Grafana plugins using [RedisTimeSeries](https://oss.redislabs.com/redistimeseries/). +Collect and store statistics for all Grafana plugins using [RedisTimeSeries](https://oss.redis.com/redistimeseries/). ```bash node src/global-stats.ts diff --git a/data/dump.rdb b/data/dump.rdb index 4c047ef..88349da 100644 Binary files a/data/dump.rdb and b/data/dump.rdb differ diff --git a/images/grafana-plugins.png b/images/grafana-plugins.png index 2b143ea..f5dc948 100644 Binary files a/images/grafana-plugins.png and b/images/grafana-plugins.png differ diff --git a/images/redis-datasource-stats.png b/images/redis-datasource-stats.png index f896b65..73884cc 100644 Binary files a/images/redis-datasource-stats.png and b/images/redis-datasource-stats.png differ diff --git a/images/redis-plugins.png b/images/redis-plugins.png index 124b0fe..357d91e 100644 Binary files a/images/redis-plugins.png and b/images/redis-plugins.png differ diff --git a/package.json b/package.json index 303ea06..ed7c34c 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "author": "Mikhail Volkov", "dependencies": { - "axios": "^0.21.1", - "ioredis": "^4.27.6" + "axios": "^0.22.0", + "ioredis": "^4.27.10" }, "description": "How many times Redis Data Source for Grafana was downloaded?", "devDependencies": { - "@types/node": "^16.0.0" + "@types/node": "^16.10.3" }, "license": "Apache-2.0", "name": "grafana-plugin-stats", @@ -20,5 +20,5 @@ "stop:master": "docker-compose -f docker-compose/master.yml down", "upgrade": "yarn upgrade --latest" }, - "version": "1.5.0" + "version": "2.0.0" } diff --git a/provisioning/dashboards/grafana-plugins-v8.json b/provisioning/dashboards/grafana-plugins-v8.json index a12792a..20a51bb 100644 --- a/provisioning/dashboards/grafana-plugins-v8.json +++ b/provisioning/dashboards/grafana-plugins-v8.json @@ -5,7 +5,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "8.0.4" + "version": "8.2.0" }, { "type": "datasource", @@ -29,16 +29,24 @@ "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, "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1625590345885, + "iteration": 1633968644648, "links": [], + "liveNow": false, "panels": [ { "collapsed": false, @@ -51,7 +59,7 @@ }, "id": 39, "panels": [], - "title": "Volkov Labs", + "title": "Volkov Labs supported plugins", "type": "row" }, { @@ -115,215 +123,22 @@ "x": 0, "y": 1 }, - "id": 29, - "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "7.5.0-20915pre", - "targets": [ - { - "command": "ts.mrange", - "filter": "value=download type=panel plugin=volkovlabs-image-panel", - "legend": "plugin", - "query": "", - "refId": "A", - "type": "timeSeries", - "value": "plugin" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Base64 Image (total)", - "transformations": [], - "type": "timeseries" - }, - { - "datasource": "$redis", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "graph": false, - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 11, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 30, - "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "7.5.0-20915pre", - "targets": [ - { - "command": "ts.mrange", - "filter": "value=diff type=panel plugin=volkovlabs-image-panel", - "legend": "plugin", - "query": "", - "refId": "A", - "type": "timeSeries", - "value": "plugin" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Base64 Image (hourly)", - "type": "timeseries" - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 12 - }, - "id": 28, - "panels": [], - "title": "Redis plugins", - "type": "row" - }, - { - "datasource": "$redis", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 50, - "gradientMode": "opacity", - "hideFrom": { - "graph": false, - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 11, - "w": 12, - "x": 0, - "y": 13 - }, "id": 37, "options": { "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", + "calcs": ["mean", "lastNotNull"], + "displayMode": "table", "placement": "bottom" }, "tooltip": { - "mode": "single" + "mode": "multi" } }, "pluginVersion": "7.5.0-20915pre", "targets": [ { "command": "ts.mrange", - "filter": "value=download type=datasource plugin=redis-datasource", + "filter": "value=download plugin=(redis-datasource,redis-app,redis-explorer-app)", "legend": "plugin", "query": "", "refId": "A", @@ -333,7 +148,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Redis Data Source (total)", + "title": "Redis plugins (total)", "transformations": [], "type": "timeseries" }, @@ -396,204 +211,24 @@ "h": 11, "w": 12, "x": 12, - "y": 13 + "y": 1 }, "id": 40, "options": { "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "7.5.0-20915pre", - "targets": [ - { - "command": "ts.mrange", - "filter": "value=diff type=datasource plugin=redis-datasource", - "legend": "plugin", - "query": "", - "refId": "A", - "type": "timeSeries", - "value": "plugin" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Redis Data Source (hourly)", - "type": "timeseries" - }, - { - "datasource": "$redis", - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 48, - "gradientMode": "opacity", - "hideFrom": { - "graph": false, - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 11, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 31, - "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "pluginVersion": "7.5.0-20915pre", - "targets": [ - { - "command": "ts.mrange", - "filter": "value=download type=app plugin=redis-app", - "legend": "plugin", - "query": "", - "refId": "A", - "type": "timeSeries", - "value": "plugin" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Redis Application plugin (total)", - "transformations": [], - "type": "timeseries" - }, - { - "datasource": "$redis", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "bars", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "graph": false, - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": true, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 11, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 34, - "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", + "calcs": ["mean", "lastNotNull"], + "displayMode": "table", "placement": "bottom" }, "tooltip": { - "mode": "single" + "mode": "multi" } }, "pluginVersion": "7.5.0-20915pre", "targets": [ { "command": "ts.mrange", - "filter": "value=diff type=app plugin=redis-app", + "filter": "value=diff plugin=(redis-datasource,redis-app,redis-explorer-app)", "legend": "plugin", "query": "", "refId": "A", @@ -603,12 +238,11 @@ ], "timeFrom": null, "timeShift": null, - "title": "Redis Application plugin (hourly)", + "title": "Redis plugins (hourly)", "type": "timeseries" }, { "datasource": "$redis", - "description": "", "fieldConfig": { "defaults": { "color": { @@ -666,24 +300,24 @@ "h": 11, "w": 12, "x": 0, - "y": 35 + "y": 12 }, - "id": 35, + "id": 29, "options": { "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", + "calcs": ["mean", "lastNotNull"], + "displayMode": "table", "placement": "bottom" }, "tooltip": { - "mode": "single" + "mode": "multi" } }, "pluginVersion": "7.5.0-20915pre", "targets": [ { "command": "ts.mrange", - "filter": "value=download type=app plugin=redis-explorer-app", + "filter": "value=download type=panel plugin=volkovlabs-image-panel", "legend": "plugin", "query": "", "refId": "A", @@ -693,7 +327,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Redis Explorer plugin (total)", + "title": "Custom plugins (total)", "transformations": [], "type": "timeseries" }, @@ -756,24 +390,24 @@ "h": 11, "w": 12, "x": 12, - "y": 35 + "y": 12 }, - "id": 36, + "id": 30, "options": { "legend": { - "calcs": ["mean", "lastNotNull", "max", "min", "sum"], - "displayMode": "hidden", + "calcs": ["mean", "lastNotNull"], + "displayMode": "table", "placement": "bottom" }, "tooltip": { - "mode": "single" + "mode": "multi" } }, "pluginVersion": "7.5.0-20915pre", "targets": [ { "command": "ts.mrange", - "filter": "value=diff type=app plugin=redis-explorer-app", + "filter": "value=diff type=panel plugin=volkovlabs-image-panel", "legend": "plugin", "query": "", "refId": "A", @@ -783,7 +417,7 @@ ], "timeFrom": null, "timeShift": null, - "title": "Redis Explorer plugin (hourly)", + "title": "Custom plugins (hourly)", "type": "timeseries" }, { @@ -793,7 +427,7 @@ "h": 1, "w": 24, "x": 0, - "y": 46 + "y": 23 }, "id": 4, "panels": [], @@ -858,7 +492,7 @@ "h": 16, "w": 12, "x": 0, - "y": 47 + "y": 24 }, "id": 2, "options": { @@ -947,7 +581,7 @@ "h": 16, "w": 12, "x": 12, - "y": 47 + "y": 24 }, "id": 5, "options": { @@ -984,7 +618,7 @@ "h": 1, "w": 24, "x": 0, - "y": 63 + "y": 40 }, "id": 12, "panels": [], @@ -1049,7 +683,7 @@ "h": 16, "w": 12, "x": 0, - "y": 64 + "y": 41 }, "id": 13, "options": { @@ -1137,7 +771,7 @@ "h": 16, "w": 12, "x": 12, - "y": 64 + "y": 41 }, "id": 14, "options": { @@ -1174,7 +808,7 @@ "h": 1, "w": 24, "x": 0, - "y": 80 + "y": 57 }, "id": 16, "panels": [], @@ -1239,7 +873,7 @@ "h": 16, "w": 12, "x": 0, - "y": 81 + "y": 58 }, "id": 17, "options": { @@ -1327,7 +961,7 @@ "h": 16, "w": 12, "x": 12, - "y": 81 + "y": 58 }, "id": 18, "options": { @@ -1359,7 +993,7 @@ } ], "refresh": false, - "schemaVersion": 30, + "schemaVersion": 31, "style": "dark", "tags": [], "templating": { @@ -1395,7 +1029,7 @@ "refresh_intervals": ["1h"] }, "timezone": "", - "title": "Grafana Plugins v8", + "title": "Grafana Plugins", "uid": "C1NCSr3Gk", "version": 2 } diff --git a/yarn.lock b/yarn.lock index ca45971..b020635 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,17 @@ # yarn lockfile v1 -"@types/node@^16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.0.tgz#067a6c49dc7a5c2412a505628e26902ae967bf6f" - integrity sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg== - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +"@types/node@^16.10.3": + version "16.10.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5" + integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ== + +axios@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.22.0.tgz#bf702c41fb50fbca4539589d839a077117b79b25" + integrity sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.4" cluster-key-slot@^1.1.0: version "1.1.0" @@ -27,25 +27,26 @@ debug@^4.3.1: ms "2.1.2" denque@^1.1.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" - integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== - -follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -ioredis@^4.27.6: - version "4.27.6" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.6.tgz#a53d427d3fe75fbd10ed7ad150ce00559df8dcf8" - integrity sha512-6W3ZHMbpCa8ByMyC1LJGOi7P2WiOKP9B3resoZOVLDhi+6dDBOW+KNsRq3yI36Hmnb2sifCxHX+YSarTeXh48A== + version "1.5.1" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== + +follow-redirects@^1.14.4: + version "1.14.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" + integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + +ioredis@^4.27.10: + version "4.27.10" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.10.tgz#3da6c1d2eab440f94c52d6fcd9b91127d7e07470" + integrity sha512-BtV2mEoZlhnW0EyxuK49V5iutLeZeJAYi/+Fuc4Q6DpDjq0cGMLODdS/+Kb5CHpT7v3YT6SK0vgJF6y0Ls4+Bg== dependencies: cluster-key-slot "^1.1.0" debug "^4.3.1" denque "^1.1.0" lodash.defaults "^4.2.0" lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" p-map "^2.1.0" redis-commands "1.7.0" redis-errors "^1.2.0" @@ -62,6 +63,11 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"