Diff

misc/grafana/prosody-dashboard.json @ 5761:06ecadfe95e8

misc: Add a Grafana dashboard
author Kim Alvefur <zash@zash.se>
date Mon, 27 Nov 2023 17:14:36 +0100
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/grafana/prosody-dashboard.json	Mon Nov 27 17:14:36 2023 +0100
@@ -0,0 +1,1261 @@
+{
+   "description" : "",
+   "editable" : true,
+   "fiscalYearStartMonth" : 0,
+   "graphTooltip" : 1,
+   "id" : 1,
+   "links" : [],
+   "liveNow" : false,
+   "panels" : [
+      {
+         "collapsed" : false,
+         "gridPos" : {
+            "h" : 1,
+            "w" : 24,
+            "x" : 0,
+            "y" : 0
+         },
+         "id" : 26,
+         "panels" : [],
+         "title" : "Core",
+         "type" : "row"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "continuous-GrYlRd",
+                  "seriesBy" : "last"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "right",
+                  "barAlignment" : 0,
+                  "drawStyle" : "line",
+                  "fillOpacity" : 10,
+                  "gradientMode" : "scheme",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "smooth",
+                  "lineStyle" : {
+                     "fill" : "solid"
+                  },
+                  "lineWidth" : 1,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : 300000,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "none"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "min" : 0,
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green",
+                        "value" : null
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "percentunit"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 0,
+            "y" : 1
+         },
+         "id" : 6,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "pluginVersion" : "8.2.5",
+         "targets" : [
+            {
+               "exemplar" : true,
+               "expr" : "rate(process_cpu_seconds_total{job=\"prosody\"}[$__interval])",
+               "instant" : false,
+               "interval" : "",
+               "intervalFactor" : 2,
+               "legendFormat" : "usage",
+               "refId" : "A"
+            }
+         ],
+         "title" : "CPU",
+         "type" : "timeseries"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "right",
+                  "barAlignment" : 0,
+                  "drawStyle" : "line",
+                  "fillOpacity" : 10,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "smooth",
+                  "lineStyle" : {
+                     "fill" : "solid"
+                  },
+                  "lineWidth" : 1,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "log" : 2,
+                     "type" : "log"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : 300000,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "none"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "thresholds" : {
+                  "mode" : "percentage",
+                  "steps" : [
+                     {
+                        "color" : "green",
+                        "value" : null
+                     }
+                  ]
+               },
+               "unit" : "bytes"
+            },
+            "overrides" : [
+               {
+                  "__systemRef" : "hideSeriesFrom",
+                  "matcher" : {
+                     "id" : "byNames",
+                     "options" : {
+                        "mode" : "exclude",
+                        "names" : [
+                           "RSS",
+                           "Used",
+                           "Lua"
+                        ],
+                        "prefix" : "All except:",
+                        "readOnly" : true
+                     }
+                  },
+                  "properties" : [
+                     {
+                        "id" : "custom.hideFrom",
+                        "value" : {
+                           "legend" : false,
+                           "tooltip" : false,
+                           "viz" : true
+                        }
+                     }
+                  ]
+               }
+            ]
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 12,
+            "y" : 1
+         },
+         "id" : 4,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "pluginVersion" : "8.2.5",
+         "targets" : [
+            {
+               "exemplar" : true,
+               "expr" : "max_over_time(process_virtual_memory_bytes{job=\"prosody\"}[$__interval])",
+               "fullMetaSearch" : false,
+               "hide" : false,
+               "interval" : "",
+               "intervalFactor" : 1,
+               "legendFormat" : "Virtual",
+               "refId" : "VIRT"
+            },
+            {
+               "exemplar" : false,
+               "expr" : "max_over_time(process_resident_memory_bytes{job=\"prosody\"}[$__interval])",
+               "interval" : "",
+               "legendFormat" : "RSS",
+               "refId" : "RSS"
+            },
+            {
+               "exemplar" : false,
+               "expr" : "max_over_time(malloc_heap_allocated_bytes{job=\"prosody\"}[$__interval])",
+               "hide" : false,
+               "interval" : "",
+               "legendFormat" : "Allocated ({{mode}})",
+               "refId" : "Malloc allocated"
+            },
+            {
+               "exemplar" : false,
+               "expr" : "max_over_time(malloc_heap_used_bytes{job=\"prosody\"}[$__interval])",
+               "hide" : false,
+               "interval" : "",
+               "legendFormat" : "Used",
+               "refId" : "Malloc Used"
+            },
+            {
+               "exemplar" : false,
+               "expr" : "max_over_time(lua_heap_bytes{job=\"prosody\"}[$__interval])",
+               "hide" : false,
+               "interval" : "",
+               "legendFormat" : "Lua",
+               "refId" : "Lua"
+            },
+            {
+               "exemplar" : false,
+               "expr" : "sum(lua_heap_bytes{job=\"prosody\"}) / (sum(prosody_mod_c2s__connections{job=\"prosody\"})+sum(prosody_mod_s2s__connections_inbound{job=\"prosody\"})+sum(prosody_mod_s2s__connections_outbound{job=\"prosody\"}))",
+               "hide" : false,
+               "interval" : "",
+               "legendFormat" : "Lua (per connection)",
+               "refId" : "LuaPerConn"
+            }
+         ],
+         "title" : "Memory",
+         "type" : "timeseries"
+      },
+      {
+         "collapsed" : false,
+         "gridPos" : {
+            "h" : 1,
+            "w" : 24,
+            "x" : 0,
+            "y" : 9
+         },
+         "id" : 31,
+         "panels" : [],
+         "title" : "Connections",
+         "type" : "row"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "right",
+                  "barAlignment" : 0,
+                  "drawStyle" : "line",
+                  "fillOpacity" : 100,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "stepAfter",
+                  "lineWidth" : 0,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : false,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "normal"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "min" : 0,
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green",
+                        "value" : null
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "none"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 0,
+            "y" : 10
+         },
+         "id" : 13,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "targets" : [
+            {
+               "exemplar" : true,
+               "expr" : "prosody_mod_c2s__connections{type=\"c2s\"}",
+               "interval" : "",
+               "legendFormat" : "{{ip_family}} {{type}}",
+               "refId" : "c2s"
+            }
+         ],
+         "title" : "Client-to-Server Connections",
+         "type" : "timeseries"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "right",
+                  "barAlignment" : 0,
+                  "drawStyle" : "line",
+                  "fillOpacity" : 100,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "stepAfter",
+                  "lineWidth" : 0,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : false,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "normal"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "min" : 0,
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green",
+                        "value" : null
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "none"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 12,
+            "y" : 10
+         },
+         "id" : 12,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "targets" : [
+            {
+               "exemplar" : true,
+               "expr" : "sum(prosody_mod_s2s__connections_inbound{type=\"s2sin\"}) by (ip_family)",
+               "interval" : "",
+               "legendFormat" : "{{ip_family}} s2sin",
+               "refId" : "s2sin"
+            },
+            {
+               "exemplar" : true,
+               "expr" : "sum(prosody_mod_s2s__connections_outbound{type=\"s2sout\"}) by (ip_family)",
+               "hide" : false,
+               "interval" : "",
+               "legendFormat" : "{{ip_family}} s2sout",
+               "refId" : "s2sout"
+            }
+         ],
+         "title" : "Server-to-Server Connections",
+         "type" : "timeseries"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "custom" : {
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  }
+               }
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 0,
+            "y" : 18
+         },
+         "id" : 29,
+         "options" : {
+            "calculate" : false,
+            "cellGap" : 1,
+            "color" : {
+               "exponent" : 0.5,
+               "fill" : "dark-orange",
+               "mode" : "scheme",
+               "reverse" : false,
+               "scale" : "exponential",
+               "scheme" : "Spectral",
+               "steps" : 64
+            },
+            "exemplars" : {
+               "color" : "rgba(255,0,255,0.7)"
+            },
+            "filterValues" : {
+               "le" : 1e-09
+            },
+            "legend" : {
+               "show" : true
+            },
+            "rowsFrame" : {
+               "layout" : "auto"
+            },
+            "tooltip" : {
+               "show" : true,
+               "yHistogram" : false
+            },
+            "yAxis" : {
+               "axisPlacement" : "left",
+               "reverse" : false
+            }
+         },
+         "pluginVersion" : "10.2.2",
+         "targets" : [
+            {
+               "disableTextWrap" : false,
+               "editorMode" : "builder",
+               "exemplar" : false,
+               "expr" : "changes(prosody_mod_c2s__encrypted_total[$__interval])",
+               "fullMetaSearch" : false,
+               "includeNullMetadata" : true,
+               "interval" : "10m",
+               "legendFormat" : "{{protocol}} {{cipher}}",
+               "range" : true,
+               "refId" : "c2s",
+               "useBackend" : false
+            }
+         ],
+         "title" : "Client-to-Server Connections Encrypted",
+         "type" : "heatmap"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "custom" : {
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  }
+               }
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 12,
+            "y" : 18
+         },
+         "id" : 30,
+         "options" : {
+            "calculate" : false,
+            "cellGap" : 1,
+            "color" : {
+               "exponent" : 0.5,
+               "fill" : "dark-orange",
+               "mode" : "scheme",
+               "reverse" : false,
+               "scale" : "exponential",
+               "scheme" : "Spectral",
+               "steps" : 64
+            },
+            "exemplars" : {
+               "color" : "rgba(255,0,255,0.7)"
+            },
+            "filterValues" : {
+               "le" : 1e-09
+            },
+            "legend" : {
+               "show" : true
+            },
+            "rowsFrame" : {
+               "layout" : "auto"
+            },
+            "tooltip" : {
+               "show" : true,
+               "yHistogram" : false
+            },
+            "yAxis" : {
+               "axisPlacement" : "left",
+               "reverse" : false
+            }
+         },
+         "pluginVersion" : "10.2.2",
+         "targets" : [
+            {
+               "disableTextWrap" : false,
+               "editorMode" : "builder",
+               "exemplar" : false,
+               "expr" : "changes(prosody_mod_s2s__encrypted_total[$__interval])",
+               "format" : "time_series",
+               "fullMetaSearch" : false,
+               "includeNullMetadata" : true,
+               "instant" : false,
+               "interval" : "10m",
+               "legendFormat" : "{{protocol}} {{cipher}}",
+               "range" : true,
+               "refId" : "s2sin",
+               "useBackend" : false
+            }
+         ],
+         "title" : "Server-to-Server Connections Encrypted",
+         "type" : "heatmap"
+      },
+      {
+         "collapsed" : false,
+         "gridPos" : {
+            "h" : 1,
+            "w" : 24,
+            "x" : 0,
+            "y" : 26
+         },
+         "id" : 24,
+         "panels" : [],
+         "title" : "Stream Management",
+         "type" : "row"
+      },
+      {
+         "cards" : {},
+         "color" : {
+            "cardColor" : "#b4ff00",
+            "colorScale" : "sqrt",
+            "colorScheme" : "interpolateRdYlGn",
+            "exponent" : 0.5,
+            "mode" : "spectrum"
+         },
+         "dataFormat" : "tsbuckets",
+         "description" : "How long a session has been hibernating when a client resumes it",
+         "fieldConfig" : {
+            "defaults" : {
+               "custom" : {
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  }
+               }
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 0,
+            "y" : 27
+         },
+         "heatmap" : {},
+         "hideZeroBuckets" : true,
+         "highlightCards" : true,
+         "id" : 14,
+         "legend" : {
+            "show" : true
+         },
+         "options" : {
+            "calculate" : false,
+            "calculation" : {},
+            "cellGap" : 2,
+            "cellValues" : {},
+            "color" : {
+               "exponent" : 0.5,
+               "fill" : "#b4ff00",
+               "mode" : "scheme",
+               "reverse" : false,
+               "scale" : "exponential",
+               "scheme" : "RdYlGn",
+               "steps" : 128
+            },
+            "exemplars" : {
+               "color" : "rgba(255,0,255,0.7)"
+            },
+            "filterValues" : {
+               "le" : 1e-09
+            },
+            "legend" : {
+               "show" : true
+            },
+            "rowsFrame" : {
+               "layout" : "ge"
+            },
+            "showValue" : "never",
+            "tooltip" : {
+               "show" : true,
+               "yHistogram" : false
+            },
+            "yAxis" : {
+               "axisPlacement" : "left",
+               "decimals" : 0,
+               "reverse" : false,
+               "unit" : "clocks"
+            }
+         },
+         "pluginVersion" : "10.2.2",
+         "reverseYBuckets" : false,
+         "targets" : [
+            {
+               "disableTextWrap" : false,
+               "editorMode" : "builder",
+               "exemplar" : true,
+               "expr" : "sum by(le) (changes(prosody_mod_smacks__resumption_age_seconds_bucket{host=\"$virtualhost\"}[$__interval]))",
+               "format" : "heatmap",
+               "fullMetaSearch" : false,
+               "includeNullMetadata" : true,
+               "interval" : "600",
+               "legendFormat" : "{{le}}",
+               "range" : true,
+               "refId" : "A",
+               "useBackend" : false
+            }
+         ],
+         "title" : "Resumption Age",
+         "tooltip" : {
+            "show" : true,
+            "showHistogram" : false
+         },
+         "type" : "heatmap",
+         "xAxis" : {
+            "show" : true
+         },
+         "yAxis" : {
+            "format" : "clocks",
+            "logBase" : 1,
+            "show" : true
+         },
+         "yBucketBound" : "upper"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "auto",
+                  "barAlignment" : 0,
+                  "drawStyle" : "line",
+                  "fillOpacity" : 0,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "linear",
+                  "lineWidth" : 1,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : false,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "none"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green",
+                        "value" : null
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "pps"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 12,
+            "y" : 27
+         },
+         "id" : 16,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "targets" : [
+            {
+               "editorMode" : "code",
+               "exemplar" : true,
+               "expr" : "rate(prosody_mod_smacks__tx_queued_stanzas_total{host=\"$virtualhost\"}[$__interval])",
+               "interval" : "600",
+               "legendFormat" : "queued on {{host}}",
+               "range" : true,
+               "refId" : "A"
+            },
+            {
+               "editorMode" : "builder",
+               "exemplar" : true,
+               "expr" : "rate(prosody_mod_smacks__tx_acked_stanzas_count{host=\"$virtualhost\"}[$__interval])",
+               "hide" : false,
+               "interval" : "600",
+               "legendFormat" : "acked on {{host}}",
+               "range" : true,
+               "refId" : "B"
+            }
+         ],
+         "title" : "Stanzas",
+         "type" : "timeseries"
+      },
+      {
+         "collapsed" : false,
+         "gridPos" : {
+            "h" : 1,
+            "w" : 24,
+            "x" : 0,
+            "y" : 35
+         },
+         "id" : 28,
+         "panels" : [],
+         "title" : "Mobile optimizations",
+         "type" : "row"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "auto",
+                  "barAlignment" : 0,
+                  "drawStyle" : "points",
+                  "fillOpacity" : 0,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "linear",
+                  "lineWidth" : 1,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : false,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "none"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green"
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "s"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 0,
+            "y" : 36
+         },
+         "id" : 18,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "targets" : [
+            {
+               "editorMode" : "builder",
+               "exemplar" : false,
+               "expr" : "histogram_quantile(0.95, sum by(le) (rate(prosody_mod_csi_simple__buffer_hold_seconds_bucket{host=\"$virtualhost\"}[$__rate_interval])))",
+               "format" : "time_series",
+               "instant" : false,
+               "interval" : "",
+               "legendFormat" : "CSI hold seconds",
+               "range" : true,
+               "refId" : "A"
+            }
+         ],
+         "title" : "Hold time",
+         "type" : "timeseries"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "palette-classic"
+               },
+               "custom" : {
+                  "axisBorderShow" : false,
+                  "axisCenteredZero" : false,
+                  "axisColorMode" : "text",
+                  "axisLabel" : "",
+                  "axisPlacement" : "auto",
+                  "barAlignment" : 0,
+                  "drawStyle" : "points",
+                  "fillOpacity" : 0,
+                  "gradientMode" : "none",
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "insertNulls" : false,
+                  "lineInterpolation" : "linear",
+                  "lineWidth" : 1,
+                  "pointSize" : 5,
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  },
+                  "showPoints" : "auto",
+                  "spanNulls" : false,
+                  "stacking" : {
+                     "group" : "A",
+                     "mode" : "none"
+                  },
+                  "thresholdsStyle" : {
+                     "mode" : "off"
+                  }
+               },
+               "mappings" : [],
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green"
+                     },
+                     {
+                        "color" : "red",
+                        "value" : 80
+                     }
+                  ]
+               },
+               "unit" : "none"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 12,
+            "x" : 12,
+            "y" : 36
+         },
+         "id" : 20,
+         "options" : {
+            "legend" : {
+               "calcs" : [],
+               "displayMode" : "list",
+               "placement" : "bottom",
+               "showLegend" : true
+            },
+            "tooltip" : {
+               "mode" : "single",
+               "sort" : "none"
+            }
+         },
+         "targets" : [
+            {
+               "editorMode" : "builder",
+               "expr" : "histogram_quantile(0.95, sum by(le) (rate(prosody_mod_csi_simple__flush_stanza_count_bucket{host=\"$virtualhost\"}[$__rate_interval])))",
+               "format" : "time_series",
+               "legendFormat" : "Stanzas flushed",
+               "range" : true,
+               "refId" : "A"
+            }
+         ],
+         "title" : "Flush sizes",
+         "type" : "timeseries"
+      },
+      {
+         "collapsed" : false,
+         "gridPos" : {
+            "h" : 1,
+            "w" : 24,
+            "x" : 0,
+            "y" : 44
+         },
+         "id" : 22,
+         "panels" : [],
+         "title" : "HTTP Upload",
+         "type" : "row"
+      },
+      {
+         "cards" : {},
+         "color" : {
+            "cardColor" : "#b4ff00",
+            "colorScale" : "sqrt",
+            "colorScheme" : "interpolateRdYlGn",
+            "exponent" : 0.5,
+            "max" : 5,
+            "min" : 0,
+            "mode" : "opacity"
+         },
+         "dataFormat" : "tsbuckets",
+         "fieldConfig" : {
+            "defaults" : {
+               "custom" : {
+                  "hideFrom" : {
+                     "legend" : false,
+                     "tooltip" : false,
+                     "viz" : false
+                  },
+                  "scaleDistribution" : {
+                     "type" : "linear"
+                  }
+               }
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 18,
+            "x" : 0,
+            "y" : 45
+         },
+         "heatmap" : {},
+         "hideZeroBuckets" : false,
+         "highlightCards" : true,
+         "id" : 8,
+         "legend" : {
+            "show" : false
+         },
+         "options" : {
+            "calculate" : false,
+            "calculation" : {},
+            "cellGap" : 2,
+            "cellValues" : {},
+            "color" : {
+               "exponent" : 0.5,
+               "fill" : "#b4ff00",
+               "max" : 5,
+               "min" : 0,
+               "mode" : "opacity",
+               "reverse" : false,
+               "scale" : "exponential",
+               "scheme" : "Oranges",
+               "steps" : 128
+            },
+            "exemplars" : {
+               "color" : "rgba(255,0,255,0.7)"
+            },
+            "filterValues" : {
+               "le" : 1e-09
+            },
+            "legend" : {
+               "show" : false
+            },
+            "rowsFrame" : {
+               "layout" : "ge"
+            },
+            "showValue" : "never",
+            "tooltip" : {
+               "show" : true,
+               "yHistogram" : false
+            },
+            "yAxis" : {
+               "axisPlacement" : "left",
+               "reverse" : false,
+               "unit" : "bytes"
+            }
+         },
+         "pluginVersion" : "10.2.0",
+         "reverseYBuckets" : false,
+         "targets" : [
+            {
+               "disableTextWrap" : false,
+               "editorMode" : "builder",
+               "exemplar" : true,
+               "expr" : "sum by(le) (changes(prosody_mod_http_file_share__upload_bytes_bucket{host=\"$virtualhost\"}[$__interval]))",
+               "format" : "heatmap",
+               "fullMetaSearch" : false,
+               "includeNullMetadata" : true,
+               "interval" : "3600s",
+               "intervalFactor" : 1,
+               "legendFormat" : "{{le}}",
+               "range" : true,
+               "refId" : "A",
+               "useBackend" : false
+            }
+         ],
+         "title" : "Upload sizes",
+         "tooltip" : {
+            "show" : true,
+            "showHistogram" : false
+         },
+         "type" : "heatmap",
+         "xAxis" : {
+            "show" : true
+         },
+         "yAxis" : {
+            "format" : "bytes",
+            "logBase" : 1,
+            "show" : true
+         },
+         "yBucketBound" : "upper"
+      },
+      {
+         "fieldConfig" : {
+            "defaults" : {
+               "color" : {
+                  "mode" : "continuous-GrYlRd"
+               },
+               "mappings" : [],
+               "max" : 10737418240,
+               "min" : 0,
+               "thresholds" : {
+                  "mode" : "absolute",
+                  "steps" : [
+                     {
+                        "color" : "green"
+                     }
+                  ]
+               },
+               "unit" : "bytes"
+            },
+            "overrides" : []
+         },
+         "gridPos" : {
+            "h" : 8,
+            "w" : 6,
+            "x" : 18,
+            "y" : 45
+         },
+         "id" : 10,
+         "options" : {
+            "minVizHeight" : 75,
+            "minVizWidth" : 75,
+            "orientation" : "auto",
+            "reduceOptions" : {
+               "calcs" : [
+                  "lastNotNull"
+               ],
+               "fields" : "",
+               "values" : false
+            },
+            "showThresholdLabels" : false,
+            "showThresholdMarkers" : false,
+            "text" : {}
+         },
+         "pluginVersion" : "10.2.0",
+         "targets" : [
+            {
+               "editorMode" : "builder",
+               "exemplar" : true,
+               "expr" : "prosody_mod_http_file_share__total_storage_bytes{host=\"$virtualhost\"}",
+               "instant" : false,
+               "interval" : "",
+               "legendFormat" : "",
+               "refId" : "A"
+            }
+         ],
+         "title" : "Total uploads",
+         "type" : "gauge"
+      }
+   ],
+   "refresh" : "5m",
+   "schemaVersion" : 38,
+   "tags" : [
+      "prosody",
+      "xmpp"
+   ],
+   "templating" : {
+      "list" : [
+         {
+            "definition" : "label_values(host)",
+            "hide" : 0,
+            "includeAll" : false,
+            "label" : "VirtualHost",
+            "multi" : false,
+            "name" : "virtualhost",
+            "options" : [],
+            "query" : {
+               "query" : "label_values(host)",
+               "refId" : "PrometheusVariableQueryEditor-VariableQuery"
+            },
+            "refresh" : 1,
+            "regex" : "",
+            "skipUrlSync" : false,
+            "sort" : 0,
+            "type" : "query"
+         }
+      ]
+   },
+   "time" : {
+      "from" : "now-2d",
+      "to" : "now"
+   },
+   "timepicker" : {},
+   "timezone" : "",
+   "title" : "Prosody",
+   "uid" : "y1Onovt7z",
+   "version" : 91,
+   "weekStart" : ""
+}