Skip to content

Instantly share code, notes, and snippets.

@atx
Last active August 29, 2023 22:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atx/f4d12616eaac919b6764109ffd470c99 to your computer and use it in GitHub Desktop.
Save atx/f4d12616eaac919b6764109ffd470c99 to your computer and use it in GitHub Desktop.
My grafana dashboard for prometheus-tor_exporter

Don't forget to modify the __inputs key to match your data source setup. You should also replace the string your.instance.here with the instance name associated with your metrics.

{
"__inputs": [
{
"name": "DS_PROMETHEUS@YOURSERVER.HERE",
"label": "prometheus@yourserver.here",
"description": "",
"type": "datasource",
"pluginId": "prometheus",
"pluginName": "Prometheus"
}
],
"__requires": [
{
"type": "panel",
"id": "alertlist",
"name": "Alert List",
"version": "5.0.0"
},
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "5.2.1"
},
{
"type": "panel",
"id": "graph",
"name": "Graph",
"version": "5.0.0"
},
{
"type": "panel",
"id": "neocat-cal-heatmap-panel",
"name": "Cal-HeatMap",
"version": "0.0.3"
},
{
"type": "datasource",
"id": "prometheus",
"name": "Prometheus",
"version": "5.0.0"
},
{
"type": "panel",
"id": "singlestat",
"name": "Singlestat",
"version": "5.0.0"
}
],
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"description": "Tor Exit Dashboard @your.instance.here",
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"alert": {
"conditions": [
{
"evaluator": {
"params": [],
"type": "no_value"
},
"operator": {
"type": "and"
},
"query": {
"params": [
"B",
"10m",
"now"
]
},
"reducer": {
"params": [],
"type": "sum"
},
"type": "query"
},
{
"evaluator": {
"params": [
100000
],
"type": "lt"
},
"operator": {
"type": "or"
},
"query": {
"params": [
"B",
"10m",
"now"
]
},
"reducer": {
"params": [],
"type": "avg"
},
"type": "query"
}
],
"executionErrorState": "alerting",
"frequency": "60s",
"handler": 1,
"name": "Tor Bandwidth Alert",
"noDataState": "no_data",
"notifications": []
},
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"description": "",
"fill": 1,
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 0
},
"id": 1,
"legend": {
"alignAsTable": false,
"avg": false,
"current": false,
"hideEmpty": false,
"hideZero": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Connection count",
"yaxis": 2
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "tor_connection_count{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "Connection count",
"metric": "tor_connection_count",
"refId": "A",
"step": 600
},
{
"expr": "rate(tor_written_bytes{instance=\"your.instance.here\"}[5m]) + rate(tor_read_bytes{instance=\"your.instance.here\"}[5m])",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "Tor RX + TX ",
"metric": "tor_read",
"refId": "B",
"step": 600
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Bandwidth",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "Bps",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"fill": 1,
"gridPos": {
"h": 5,
"w": 12,
"x": 0,
"y": 7
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "tor_accounting_left_write_bytes{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "Accounting TX",
"metric": "tor_accounting",
"refId": "A",
"step": 1200
},
{
"expr": "tor_accounting_left_read_bytes{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "Accounting RX",
"metric": "tor_accounting_read_bytes",
"refId": "B",
"step": 1200
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Accounting",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "decbytes",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"config": {
"animationDuration": 0,
"cellPadding": 2,
"cellRadius": 0,
"cellSize": 10,
"colLimit": "",
"displayLegend": true,
"domain": "auto",
"domainGutter": 2,
"hoverDecimals": 2,
"hoverUnitFormat": "none",
"itemName": [
"none",
"none"
],
"label": {
"position": "bottom",
"rotate": "null",
"width": 60
},
"legendColors": {
"base": "transparent",
"empty": "#222",
"max": "steelblue",
"min": "#666"
},
"legendStr": "0.5",
"legendTitleFormat": {
"inner": {},
"lower": {},
"upper": {}
},
"rowLimit": null,
"subDomain": "auto",
"subDomainTitleFormat": {
"empty": "{date}",
"filled": {}
},
"verticalOrientation": false
},
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"gridPos": {
"h": 5,
"w": 4,
"x": 12,
"y": 7
},
"id": 6,
"links": [],
"targets": [
{
"expr": "tor_flags{instance=\"your.instance.here\", flag=\"Stable\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
"step": 43200
}
],
"timeFrom": "3M",
"timeShift": null,
"title": "Stable",
"transparent": false,
"type": "neocat-cal-heatmap-panel"
},
{
"config": {
"animationDuration": 0,
"cellPadding": 2,
"cellRadius": 0,
"cellSize": 10,
"colLimit": "",
"displayLegend": true,
"domain": "auto",
"domainGutter": 2,
"hoverDecimals": 2,
"hoverUnitFormat": "short",
"itemName": [
"short",
"short"
],
"label": {
"position": "bottom",
"rotate": "null",
"width": 60
},
"legendColors": {
"base": "transparent",
"empty": "#222",
"max": "steelblue",
"min": "#666"
},
"legendStr": "0.5",
"legendTitleFormat": {
"inner": {},
"lower": {},
"upper": {}
},
"rowLimit": null,
"subDomain": "auto",
"subDomainTitleFormat": {
"empty": "{date}",
"filled": {}
},
"verticalOrientation": false
},
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"gridPos": {
"h": 5,
"w": 4,
"x": 16,
"y": 7
},
"id": 4,
"links": [],
"targets": [
{
"expr": "tor_flags{instance=\"your.instance.here\", flag=\"HSDir\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
"step": 43200
}
],
"timeFrom": "3M",
"timeShift": null,
"title": "HSDir",
"transparent": false,
"type": "neocat-cal-heatmap-panel"
},
{
"config": {
"animationDuration": 0,
"cellPadding": 2,
"cellRadius": 0,
"cellSize": 10,
"colLimit": "",
"displayLegend": true,
"domain": "auto",
"domainGutter": 2,
"hoverDecimals": 2,
"hoverUnitFormat": "none",
"itemName": [
"none",
"none"
],
"label": {
"position": "bottom",
"rotate": "null",
"width": 60
},
"legendColors": {
"base": "transparent",
"empty": "#222",
"max": "steelblue",
"min": "#666"
},
"legendStr": "0.5",
"legendTitleFormat": {
"inner": {},
"lower": {},
"upper": {}
},
"rowLimit": null,
"subDomain": "auto",
"subDomainTitleFormat": {
"empty": "{date}",
"filled": {}
},
"verticalOrientation": false
},
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"gridPos": {
"h": 5,
"w": 4,
"x": 20,
"y": 7
},
"id": 5,
"links": [],
"targets": [
{
"expr": "tor_flags{instance=\"your.instance.here\", flag=\"Exit\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
"step": 43200
}
],
"timeFrom": "3M",
"timeShift": null,
"title": "Exit",
"transparent": false,
"type": "neocat-cal-heatmap-panel"
},
{
"alert": {
"conditions": [
{
"evaluator": {
"params": [
2500000000
],
"type": "lt"
},
"operator": {
"type": "and"
},
"query": {
"params": [
"A",
"5m",
"now"
]
},
"reducer": {
"params": [],
"type": "last"
},
"type": "query"
}
],
"executionErrorState": "alerting",
"frequency": "60s",
"handler": 1,
"name": "File System alert",
"noDataState": "no_data",
"notifications": []
},
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"fill": 1,
"gridPos": {
"h": 5,
"w": 12,
"x": 0,
"y": 12
},
"id": 13,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"expr": "node_filesystem_avail{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "Available on {{mountpoint}}",
"metric": "node_filesystem_avail",
"refId": "A",
"step": 1200
}
],
"thresholds": [
{
"colorMode": "critical",
"fill": true,
"line": true,
"op": "lt",
"value": 2500000000
}
],
"timeFrom": null,
"timeShift": null,
"title": "File System",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "decbytes",
"label": "",
"logBase": 1,
"max": "50000000000",
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"decimals": 2,
"format": "Bps",
"gauge": {
"maxValue": 2000000,
"minValue": 0,
"show": true,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 5,
"w": 4,
"x": 12,
"y": 12
},
"id": 11,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "rate(tor_written_bytes{instance=\"your.instance.here\"}[30d]) + rate(tor_read_bytes{instance=\"your.instance.here\"}[30d])",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "30 Day RX + TX ",
"metric": "tor_written_bytes",
"refId": "A",
"step": 14400
}
],
"thresholds": "0,1000000,2000000",
"title": "30 Day RX + TX",
"type": "singlestat",
"valueFontSize": "30%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"decimals": 2,
"format": "Bps",
"gauge": {
"maxValue": 2000000,
"minValue": 0,
"show": true,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 5,
"w": 4,
"x": 16,
"y": 12
},
"id": 10,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "rate(tor_written_bytes{instance=\"your.instance.here\"}[7d]) + rate(tor_read_bytes{instance=\"your.instance.here\"}[7d])",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "7 Day RX + TX ",
"metric": "tor_written_bytes",
"refId": "A",
"step": 14400
}
],
"thresholds": "0,1000000,2000000",
"title": "7 Day RX + TX",
"type": "singlestat",
"valueFontSize": "30%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"decimals": 2,
"format": "Bps",
"gauge": {
"maxValue": 2000000,
"minValue": 0,
"show": true,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 5,
"w": 4,
"x": 20,
"y": 12
},
"id": 12,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "rate(tor_written_bytes{instance=\"your.instance.here\"}[1d]) + rate(tor_read_bytes{instance=\"your.instance.here\"}[1d])",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "1 Day RX + TX ",
"metric": "tor_written_bytes",
"refId": "A",
"step": 14400
}
],
"thresholds": "0,1000000,2000000",
"title": "1 Day RX + TX",
"type": "singlestat",
"valueFontSize": "30%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"format": "none",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 6,
"x": 0,
"y": 17
},
"id": 7,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "tor_version{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "{{version}}",
"refId": "A",
"step": 14400
}
],
"thresholds": "",
"title": "Version",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "name"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"format": "none",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 6,
"x": 6,
"y": 17
},
"id": 9,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "tor_version_status{instance=\"your.instance.here\"}",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "{{version_status}}",
"refId": "A",
"step": 14400
}
],
"thresholds": "",
"title": "Version Status",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "name"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"#299c46",
"rgba(237, 129, 40, 0.89)",
"#d44a3a"
],
"datasource": "${DS_PROMETHEUS@YOURSERVER.HERE}",
"decimals": 1,
"format": "s",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 4,
"x": 12,
"y": 17
},
"id": 14,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "",
"targets": [
{
"expr": "tor_uptime",
"format": "time_series",
"intervalFactor": 2,
"legendFormat": "",
"refId": "A"
}
],
"thresholds": "",
"title": "Uptime",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "current"
},
{
"dashboardFilter": "",
"folderId": null,
"gridPos": {
"h": 4,
"w": 8,
"x": 16,
"y": 17
},
"id": 8,
"limit": 10,
"links": [],
"nameFilter": "",
"onlyAlertsOnDashboard": true,
"show": "current",
"sortOrder": 1,
"stateFilter": [],
"title": "Alerts",
"type": "alertlist"
}
],
"refresh": false,
"schemaVersion": 16,
"style": "dark",
"tags": [
"tor"
],
"templating": {
"list": []
},
"time": {
"from": "now-30d",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "browser",
"title": "Tor Exit",
"uid": "000000004",
"version": 32
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment