From e7ee158f2ebc5a346cd1a512644ab11a9f5b0cd5 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Mon, 14 Sep 2020 12:47:07 -0600 Subject: [PATCH] hotfix: added missing download files, resolves #1437 --- deploy/edge.js | 2 + ...influxdb-enterprise-monitor-dashboard.json | 1299 +++++++++++++++++ .../influxdb-oss-monitor-dashboard.json | 1051 +++++++++++++ .../kapacitor-monitor-dashboard.json | 796 ++++++++++ static/downloads/pages.zip | Bin 0 -> 2275 bytes static/downloads/pages.zip.md5 | 1 + static/downloads/pages.zip.sha256 | 1 + static/downloads/tik-docker-tutorial.tar.gz | Bin 0 -> 34759 bytes 8 files changed, 3150 insertions(+) create mode 100644 static/downloads/influxdb-enterprise-monitor-dashboard.json create mode 100644 static/downloads/influxdb-oss-monitor-dashboard.json create mode 100644 static/downloads/kapacitor-monitor-dashboard.json create mode 100644 static/downloads/pages.zip create mode 100644 static/downloads/pages.zip.md5 create mode 100644 static/downloads/pages.zip.sha256 create mode 100644 static/downloads/tik-docker-tutorial.tar.gz diff --git a/deploy/edge.js b/deploy/edge.js index 70ecb8e90..179f98ba2 100644 --- a/deploy/edge.js +++ b/deploy/edge.js @@ -73,6 +73,8 @@ exports.handler = (event, context, callback) => { '.otf': true, '.gz': true, '.tar': true, + '.md5': true, + '.sha256': true, }; // Remove index.html from path diff --git a/static/downloads/influxdb-enterprise-monitor-dashboard.json b/static/downloads/influxdb-enterprise-monitor-dashboard.json new file mode 100644 index 000000000..e889f53b2 --- /dev/null +++ b/static/downloads/influxdb-enterprise-monitor-dashboard.json @@ -0,0 +1,1299 @@ +{ + "meta": { + "chronografVersion": "1.7.14", + "sources": { + "1": { + "name": "InfluxDB", + "link": "/chronograf/v1/sources/1" + } + } + }, + "dashboard": { + "id": 20, + "cells": [ + { + "i": "92b17d45-aad6-4750-a3a5-e159fae5a5b1", + "x": 0, + "y": 13, + "w": 12, + "h": 4, + "name": "Continuous Queries Executed Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(/.*/),60s) FROM :database:../cq/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(/.*/),60s) FROM :database:../cq/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/92b17d45-aad6-4750-a3a5-e159fae5a5b1" + } + }, + { + "i": "1a6c8d56-8d7a-4536-be2f-d31a6bf314ad", + "x": 0, + "y": 9, + "w": 6, + "h": 4, + "name": "Heap Size", + "queries": [ + { + "query": "SELECT mean(\"HeapInUse\") FROM :database:../runtime/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"HeapInUse\") FROM :database:../runtime/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "2", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/1a6c8d56-8d7a-4536-be2f-d31a6bf314ad" + } + }, + { + "i": "7bb6d7ff-ea47-4848-8623-d0ee1dcf19ea", + "x": 6, + "y": 9, + "w": 6, + "h": 4, + "name": "Shard Write Errors", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"writeError\"), 10s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"writeError\"), 10s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/7bb6d7ff-ea47-4848-8623-d0ee1dcf19ea" + } + }, + { + "i": "1101de05-f166-43c9-acd4-dec3cb005b9c", + "x": 0, + "y": 5, + "w": 6, + "h": 4, + "name": "Series Cardinality and Measurements by Database", + "queries": [ + { + "query": "SELECT max(\"numSeries\") AS \"Series Cardinality\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT max(\"numSeries\") AS \"Series Cardinality\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT max(\"numMeasurements\") AS \"Measurements\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT max(\"numMeasurements\") AS \"Measurements\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "918d1196-dcca-4a61-ba54-83cbd0929dea", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "ea81a8b6-ace5-4a73-a1e4-06c62d72e0cf", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "ebc1b6a4-5218-46b0-b1c0-89b7f1a58c9d", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": true, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [ + { + "internalName": "time", + "displayName": "", + "visible": true + }, + { + "internalName": "database", + "displayName": "", + "visible": true + }, + { + "internalName": "influxdb_database.Series Cardinality", + "displayName": "", + "visible": true + } + ], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/1101de05-f166-43c9-acd4-dec3cb005b9c" + } + }, + { + "i": "ba62dec5-f6e8-49c0-82d3-4e65828c6071", + "x": 6, + "y": 5, + "w": 6, + "h": 4, + "name": "HTTP Request Duration (99th %)", + "queries": [ + { + "query": "SELECT non_negative_derivative(percentile(\"writeReqDurationNs\", 99)) / non_negative_derivative(max(\"writeReq\")) AS \"Write Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(0)\t", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(percentile(\"writeReqDurationNs\", 99)) / non_negative_derivative(max(\"writeReq\")) AS \"Write Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(0)\t", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(percentile(\"queryReqDurationNs\", 99)) / non_negative_derivative(max(\"queryReq\")) AS \"Query Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(percentile(\"queryReqDurationNs\", 99)) / non_negative_derivative(max(\"queryReq\")) AS \"Query Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "2", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/ba62dec5-f6e8-49c0-82d3-4e65828c6071" + } + }, + { + "i": "36a0e3bf-8da1-4d81-8bbd-8621e68a3aa4", + "x": 8, + "y": 0, + "w": 4, + "h": 5, + "name": "Points Throughput Per Minute by Hostname", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"pointReq\"), 60s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"pointReq\"), 60s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/36a0e3bf-8da1-4d81-8bbd-8621e68a3aa4" + } + }, + { + "i": "4a77bc10-5b40-43e7-ad73-4162623fa618", + "x": 0, + "y": 0, + "w": 4, + "h": 5, + "name": "Queries Executed Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"queriesExecuted\"), 60s) AS \"Queries Executed\" FROM :database:../queryExecutor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"queriesExecuted\"), 60s) AS \"Queries Executed\" FROM :database:../queryExecutor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/4a77bc10-5b40-43e7-ad73-4162623fa618" + } + }, + { + "i": "58997ad9-1188-491f-b06c-1ad427d7f5cd", + "x": 4, + "y": 0, + "w": 4, + "h": 5, + "name": "HTTP Requests Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"queryReq\"), 60s) AS \"Query\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"queryReq\"), 60s) AS \"Query\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"writeReq\"), 60s) AS \"Writes\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"writeReq\"), 60s) AS \"Writes\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"serverError\"), 60s) AS \"Server Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"serverError\"), 60s) AS \"Server Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"clientError\"), 60s) AS \"Client Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"clientError\"), 60s) AS \"Client Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/58997ad9-1188-491f-b06c-1ad427d7f5cd" + } + }, + { + "i": "7561bde6-fee2-4ce9-ae85-ea905d1d7a01", + "x": 0, + "y": 17, + "w": 6, + "h": 4, + "name": "Hinted HandOff Queue Size", + "queries": [ + { + "query": "SELECT mean(\"queueBytes\") FROM :database:../hh_processor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(0)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"queueBytes\") FROM :database:../hh_processor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(0)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "2", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb) running on an **InfluxDB Enterprise** instance._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/7561bde6-fee2-4ce9-ae85-ea905d1d7a01" + } + }, + { + "i": "ae5baa5d-ac64-4337-b121-3bc05d5402ef", + "x": 6, + "y": 17, + "w": 6, + "h": 4, + "name": "Anti-Entropy Errors & Jobs", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"errors\"),5m) AS \"errors\" FROM :database:../ae/ WHERE time > :dashboardTime: GROUP BY time(:interval:) FILL(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"errors\"),5m) AS \"errors\" FROM :database:../ae/ WHERE time > :dashboardTime: GROUP BY time(:interval:) FILL(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT count(\"jobs_active\") AS \"Count of Jobs\" FROM :database:../ae/ WHERE time > :dashboardTime: GROUP BY time(:interval:) FILL(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT count(\"jobs_active\") AS \"Count of Jobs\" FROM :database:../ae/ WHERE time > :dashboardTime: GROUP BY time(:interval:) FILL(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "38e011ed-6c2e-450c-8fd5-9e092ae26e4d", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "c5c709aa-54a1-4401-9fbc-647a014d2b4d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "da6eb413-d648-4fa1-80e5-9fcbfaeabc7e", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": true, + "sortBy": { + "internalName": "time", + "displayName": "", + "visible": true + }, + "wrapping": "truncate", + "fixFirstColumn": true + }, + "fieldOptions": [ + { + "internalName": "time", + "displayName": "", + "visible": true + } + ], + "timeFormat": "MM/DD/YYYY HH:mm:ss", + "decimalPlaces": { + "isEnforced": true, + "digits": 2 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variables or choose a different time range.\n\n_This cell requires data collected by the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb) running on an **InfluxDB Enterprise** instance._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/20/cells/ae5baa5d-ac64-4337-b121-3bc05d5402ef" + } + } + ], + "templates": [ + { + "tempVar": ":database:", + "values": [ + { + "value": "_internal", + "type": "database", + "selected": true + } + ], + "id": "577605b1-1e02-4faa-9cee-9b92e477d099", + "type": "databases", + "label": "", + "query": { + "influxql": "SHOW DATABASES", + "measurement": "", + "tagKey": "", + "fieldKey": "" + }, + "links": { + "self": "/chronograf/v1/dashboards/20/templates/577605b1-1e02-4faa-9cee-9b92e477d099" + } + } + ], + "name": "InfluxDB Enterprise Monitor", + "organization": "default", + "links": { + "self": "/chronograf/v1/dashboards/20", + "cells": "/chronograf/v1/dashboards/20/cells", + "templates": "/chronograf/v1/dashboards/20/templates" + } + } +} diff --git a/static/downloads/influxdb-oss-monitor-dashboard.json b/static/downloads/influxdb-oss-monitor-dashboard.json new file mode 100644 index 000000000..6565ffa63 --- /dev/null +++ b/static/downloads/influxdb-oss-monitor-dashboard.json @@ -0,0 +1,1051 @@ +{ + "meta": { + "chronografVersion": "1.7.14", + "sources": { + "1": { + "name": "InfluxDB", + "link": "/chronograf/v1/sources/1" + } + } + }, + "dashboard": { + "id": 22, + "cells": [ + { + "i": "4f7570dc-3f58-4d0f-a911-feccde07a692", + "x": 0, + "y": 13, + "w": 12, + "h": 4, + "name": "Continuous Queries Executed Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(/.*/),60s) FROM :database:../cq/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(/.*/),60s) FROM :database:../cq/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/4f7570dc-3f58-4d0f-a911-feccde07a692" + } + }, + { + "i": "5b8effe0-a646-40e0-b45d-d696524717c5", + "x": 0, + "y": 9, + "w": 6, + "h": 4, + "name": "Heap Size", + "queries": [ + { + "query": "SELECT mean(\"HeapInUse\") FROM :database:../runtime/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"HeapInUse\") FROM :database:../runtime/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "2", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "default", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/5b8effe0-a646-40e0-b45d-d696524717c5" + } + }, + { + "i": "f392f2ee-e12b-48ce-bca4-8d70d7f59165", + "x": 6, + "y": 9, + "w": 6, + "h": 4, + "name": "Shard Write Errors", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"writeError\"), 10s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"writeError\"), 10s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/f392f2ee-e12b-48ce-bca4-8d70d7f59165" + } + }, + { + "i": "279bb92e-2d3a-4ca0-ab21-34c39321d64c", + "x": 0, + "y": 5, + "w": 6, + "h": 4, + "name": "Series Cardinality & Measurements by Database", + "queries": [ + { + "query": "SELECT max(\"numSeries\") AS \"Series Cardinality\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT max(\"numSeries\") AS \"Series Cardinality\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT max(\"numMeasurements\") AS \"Measurements\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT max(\"numMeasurements\") AS \"Measurements\" FROM :database:../database/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"database\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "918d1196-dcca-4a61-ba54-83cbd0929dea", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "ea81a8b6-ace5-4a73-a1e4-06c62d72e0cf", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "ebc1b6a4-5218-46b0-b1c0-89b7f1a58c9d", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": true, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [ + { + "internalName": "time", + "displayName": "", + "visible": true + }, + { + "internalName": "database", + "displayName": "", + "visible": true + }, + { + "internalName": "influxdb_database.Series Cardinality", + "displayName": "", + "visible": true + } + ], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/279bb92e-2d3a-4ca0-ab21-34c39321d64c" + } + }, + { + "i": "1fe19766-08b3-4c21-afaf-f31c606ddcf2", + "x": 6, + "y": 5, + "w": 6, + "h": 4, + "name": "HTTP Request Duration (99th %)", + "queries": [ + { + "query": "SELECT non_negative_derivative(percentile(\"writeReqDurationNs\", 99)) / non_negative_derivative(max(\"writeReq\")) AS \"Write Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(0)\t", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(percentile(\"writeReqDurationNs\", 99)) / non_negative_derivative(max(\"writeReq\")) AS \"Write Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:) fill(0)\t", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(percentile(\"queryReqDurationNs\", 99)) / non_negative_derivative(max(\"queryReq\")) AS \"Query Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(percentile(\"queryReqDurationNs\", 99)) / non_negative_derivative(max(\"queryReq\")) AS \"Query Request\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY hostname, time(:interval:)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "2", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/1fe19766-08b3-4c21-afaf-f31c606ddcf2" + } + }, + { + "i": "3b8c6aa4-5563-45b5-884c-1a0fa1c24d33", + "x": 8, + "y": 0, + "w": 4, + "h": 5, + "name": "Points Throughput Per Min by Hostname", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"pointReq\"), 60s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"pointReq\"), 60s) FROM :database:../write/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/3b8c6aa4-5563-45b5-884c-1a0fa1c24d33" + } + }, + { + "i": "3864d65d-b56a-4d22-8f08-299566d1b74f", + "x": 0, + "y": 0, + "w": 4, + "h": 5, + "name": "Queries Executed Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"queriesExecuted\"), 60s) AS \"Queries Executed\" FROM :database:../queryExecutor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"queriesExecuted\"), 60s) AS \"Queries Executed\" FROM :database:../queryExecutor/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\" fill(null)", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/3864d65d-b56a-4d22-8f08-299566d1b74f" + } + }, + { + "i": "99e040ba-322c-4232-b449-6c7882a15266", + "x": 4, + "y": 0, + "w": 4, + "h": 5, + "name": "HTTP Requests Per Minute", + "queries": [ + { + "query": "SELECT non_negative_derivative(max(\"queryReq\"), 60s) AS \"Query\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"queryReq\"), 60s) AS \"Query\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"writeReq\"), 60s) AS \"Writes\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"writeReq\"), 60s) AS \"Writes\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"serverError\"), 60s) AS \"Server Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"serverError\"), 60s) AS \"Server Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + }, + { + "query": "SELECT non_negative_derivative(max(\"clientError\"), 60s) AS \"Client Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(max(\"clientError\"), 60s) AS \"Client Errors\" FROM :database:../httpd/ WHERE time > :dashboardTime: GROUP BY time(:interval:), \"hostname\"", + "range": null, + "shifts": null + }, + "source": "", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "731cb197-e6ac-48d5-974f-03c32ba864de", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "a64b1fce-50e3-471c-a78b-2df4ed07798d", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "9211508a-a22c-4000-a71b-96b17c14b447", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `influxdb` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/influxdb)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/22/cells/99e040ba-322c-4232-b449-6c7882a15266" + } + } + ], + "templates": [ + { + "tempVar": ":database:", + "values": [ + { + "value": "_internal", + "type": "database", + "selected": true + } + ], + "id": "fed70906-55d4-49e3-bec0-62e3cbabc8bc", + "type": "databases", + "label": "", + "query": { + "influxql": "SHOW DATABASES", + "measurement": "", + "tagKey": "", + "fieldKey": "" + }, + "links": { + "self": "/chronograf/v1/dashboards/22/templates/fed70906-55d4-49e3-bec0-62e3cbabc8bc" + } + } + ], + "name": "InfluxDB OSS Monitor", + "organization": "default", + "links": { + "self": "/chronograf/v1/dashboards/22", + "cells": "/chronograf/v1/dashboards/22/cells", + "templates": "/chronograf/v1/dashboards/22/templates" + } + } +} diff --git a/static/downloads/kapacitor-monitor-dashboard.json b/static/downloads/kapacitor-monitor-dashboard.json new file mode 100644 index 000000000..3f9a88f24 --- /dev/null +++ b/static/downloads/kapacitor-monitor-dashboard.json @@ -0,0 +1,796 @@ +{ + "meta": { + "chronografVersion": "1.7.14", + "sources": { + "1": { + "name": "InfluxDB", + "link": "/chronograf/v1/sources/1" + } + } + }, + "dashboard": { + "id": 21, + "cells": [ + { + "i": "e448a790-3612-45cc-9d8b-037b1d280e76", + "x": 0, + "y": 8, + "w": 12, + "h": 4, + "name": "Ingest by Task", + "queries": [ + { + "query": "SELECT non_negative_derivative(\"collected\",1s) FROM :database:../kapacitor/ WHERE time > :dashboardTime: AND (\"parent\"='stream' OR \"parent\"='batch') GROUP BY task", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT non_negative_derivative(\"collected\",1s) FROM :database:../kapacitor/ WHERE time > :dashboardTime: AND (\"parent\"='stream' OR \"parent\"='batch') GROUP BY task", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": " pts/s", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "bar", + "colors": [ + { + "id": "007ac4bf-c005-4c7b-bf5f-7dbacf7d7064", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "b3c8579a-d594-4a98-bc6c-712d59021164", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "e9001346-498a-4f31-b2fd-319e4fff33c9", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `kapacitor` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/kapacitor)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/e448a790-3612-45cc-9d8b-037b1d280e76" + } + }, + { + "i": "c1f1ced8-1be2-4289-8f00-8308b18d80dc", + "x": 6, + "y": 4, + "w": 6, + "h": 4, + "name": "Data Ingest Rate", + "queries": [ + { + "query": "SELECT sum(points_received_rate) FROM (SELECT non_negative_derivative(first(\"points_received\"),1s) as \"points_received_rate\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: GROUP BY \"database\", \"retention_policy\", \"measurement\", time(1s)) WHERE time > :dashboardTime: GROUP BY time(1s) fill(previous)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT sum(points_received_rate) FROM (SELECT non_negative_derivative(first(\"points_received\"),1s) as \"points_received_rate\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: GROUP BY \"database\", \"retention_policy\", \"measurement\", time(1s)) WHERE time > :dashboardTime: GROUP BY time(1s) fill(previous)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": " pts/s", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line-plus-single-stat", + "colors": [ + { + "id": "base", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "b3c8579a-d594-4a98-bc6c-712d59021164", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "e9001346-498a-4f31-b2fd-319e4fff33c9", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": true, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `kapacitor` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/kapacitor)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/c1f1ced8-1be2-4289-8f00-8308b18d80dc" + } + }, + { + "i": "460014ac-9716-41f3-8999-0d35ff3fbf9c", + "x": 0, + "y": 4, + "w": 3, + "h": 4, + "name": "Number of Subscriptions", + "queries": [ + { + "query": "SELECT \"num_subscriptions\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: fill(0)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT \"num_subscriptions\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: fill(0)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "single-stat", + "colors": [ + { + "id": "base", + "type": "text", + "hex": "#00C9FF", + "name": "laser", + "value": "-1000000000000000000" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `kapacitor` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/kapacitor)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/460014ac-9716-41f3-8999-0d35ff3fbf9c" + } + }, + { + "i": "67cb0219-f359-4459-a815-4a38a989b9f0", + "x": 3, + "y": 4, + "w": 3, + "h": 4, + "name": "Number of Running Tasks", + "queries": [ + { + "query": "SELECT \"num_enabled_tasks\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: and time < :upperDashboardTime: fill(0)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT \"num_enabled_tasks\" FROM :database:../kapacitor/ WHERE time > :dashboardTime: and time < :upperDashboardTime: fill(0)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "single-stat", + "colors": [ + { + "id": "base", + "type": "text", + "hex": "#00C9FF", + "name": "laser", + "value": "-1000000000000000000" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `kapacitor` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/kapacitor)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/67cb0219-f359-4459-a815-4a38a989b9f0" + } + }, + { + "i": "71ffc4af-d571-4cf8-93ce-aee979abb165", + "x": 4, + "y": 0, + "w": 4, + "h": 4, + "name": "Kapacitor Host CPU Usage", + "queries": [ + { + "query": "SELECT mean(\"usage_user\") as \"Kapacitor Usage\" FROM :database:../cpu/ WHERE time > :dashboardTime: AND \"cpu\"='cpu-total' group by time(:interval:)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"usage_user\") as \"Kapacitor Usage\" FROM :database:../cpu/ WHERE time > :dashboardTime: AND \"cpu\"='cpu-total' group by time(:interval:)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "%", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "007ac4bf-c005-4c7b-bf5f-7dbacf7d7064", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "b3c8579a-d594-4a98-bc6c-712d59021164", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "e9001346-498a-4f31-b2fd-319e4fff33c9", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `cpu` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/cpu)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/71ffc4af-d571-4cf8-93ce-aee979abb165" + } + }, + { + "i": "b5287b2a-a81f-43b1-a646-3bd41d869602", + "x": 8, + "y": 0, + "w": 4, + "h": 4, + "name": "Kapacitor Host Load (1, 5, 15)", + "queries": [ + { + "query": "SELECT mean(\"load5\") as \"Kapacitor Load5\", mean(\"load15\") as \"Kapacitor Load15\", mean(\"load1\") as \"Kapacitor Load1\" FROM :database:../system/ WHERE time > :dashboardTime: group by time(:interval:)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"load5\") as \"Kapacitor Load5\", mean(\"load15\") as \"Kapacitor Load15\", mean(\"load1\") as \"Kapacitor Load1\" FROM :database:../system/ WHERE time > :dashboardTime: group by time(:interval:)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "007ac4bf-c005-4c7b-bf5f-7dbacf7d7064", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "b3c8579a-d594-4a98-bc6c-712d59021164", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "e9001346-498a-4f31-b2fd-319e4fff33c9", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `sytstem` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/system)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/b5287b2a-a81f-43b1-a646-3bd41d869602" + } + }, + { + "i": "a270623d-bcd1-421b-93ce-48e189aa808f", + "x": 0, + "y": 0, + "w": 4, + "h": 4, + "name": "Kapacitor Host RAM Usage", + "queries": [ + { + "query": "SELECT mean(\"used_percent\") AS \"Kapacitor Mean Used Percent\" FROM :database:../mem/ WHERE time > :dashboardTime: GROUP BY time(:interval:)", + "queryConfig": { + "database": "", + "measurement": "", + "retentionPolicy": "", + "fields": [], + "tags": {}, + "groupBy": { + "time": "", + "tags": [] + }, + "areTagsAccepted": false, + "rawText": "SELECT mean(\"used_percent\") AS \"Kapacitor Mean Used Percent\" FROM :database:../mem/ WHERE time > :dashboardTime: GROUP BY time(:interval:)", + "range": null, + "shifts": null + }, + "source": "/chronograf/v1/sources/1", + "type": "influxql" + } + ], + "axes": { + "x": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + }, + "y": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "%", + "base": "10", + "scale": "linear" + }, + "y2": { + "bounds": [ + "", + "" + ], + "label": "", + "prefix": "", + "suffix": "", + "base": "10", + "scale": "linear" + } + }, + "type": "line", + "colors": [ + { + "id": "007ac4bf-c005-4c7b-bf5f-7dbacf7d7064", + "type": "scale", + "hex": "#31C0F6", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "b3c8579a-d594-4a98-bc6c-712d59021164", + "type": "scale", + "hex": "#A500A5", + "name": "Nineteen Eighty Four", + "value": "0" + }, + { + "id": "e9001346-498a-4f31-b2fd-319e4fff33c9", + "type": "scale", + "hex": "#FF7E27", + "name": "Nineteen Eighty Four", + "value": "0" + } + ], + "legend": {}, + "tableOptions": { + "verticalTimeAxis": false, + "sortBy": { + "internalName": "", + "displayName": "", + "visible": false + }, + "wrapping": "", + "fixFirstColumn": false + }, + "fieldOptions": [], + "timeFormat": "", + "decimalPlaces": { + "isEnforced": false, + "digits": 3 + }, + "note": "---\n\n##### No Results?\nBe sure to select the correct database using the **:database:** template variable or choose a different time range.\n\n_This cell requires the [Telegraf `mem` input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mem)._", + "noteVisibility": "showWhenNoData", + "links": { + "self": "/chronograf/v1/dashboards/21/cells/a270623d-bcd1-421b-93ce-48e189aa808f" + } + } + ], + "templates": [ + { + "tempVar": ":database:", + "values": [ + { + "value": "_internal", + "type": "database", + "selected": true + } + ], + "id": "1c40a52e-fa26-4d4d-9f0f-9620658f355f", + "type": "databases", + "label": "", + "query": { + "influxql": "SHOW DATABASES", + "measurement": "", + "tagKey": "", + "fieldKey": "" + }, + "links": { + "self": "/chronograf/v1/dashboards/21/templates/1c40a52e-fa26-4d4d-9f0f-9620658f355f" + } + } + ], + "name": "Kapacitor Monitor", + "organization": "default", + "links": { + "self": "/chronograf/v1/dashboards/21", + "cells": "/chronograf/v1/dashboards/21/cells", + "templates": "/chronograf/v1/dashboards/21/templates" + } + } +} diff --git a/static/downloads/pages.zip b/static/downloads/pages.zip new file mode 100644 index 0000000000000000000000000000000000000000..6781c4cf99357a68826915bfe0de66d13276c5e3 GIT binary patch literal 2275 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 literal 0 HcmV?d00001