diff --git a/ops/monitoring/lib/grafonnet/DOCS.md b/ops/monitoring/lib/grafonnet/DOCS.md
new file mode 100644
index 0000000..0c78596
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/DOCS.md
@@ -0,0 +1,846 @@
+# Docs
+
+* [dashboard](#dashboard)
+* [panel](#panel)
+  * [gauge.new](#panelGaugenew)
+  * [graph.new](#panelGraphnew)
+  * [row.new](#panelRownew)
+  * [stat.new](#panelStatnew)
+  * [table.new](#panelTablenew)
+  * [text.new](#panelTextnew)
+* [target](#target)
+  * [prometheus.new](#targetPrometheusnew)
+* [template](#template)
+  * [datasource.new](#templateDatasourcenew)
+  * [query.new](#templateQuerynew)
+
+## dashboard
+
+
+
+### dashboard.new
+
+Instantiate a dashboard.
+
+* **description**: (type: string, default: `null`)
+  
+* **editable**: (type: boolean, default: `true`)
+  
+* **graphTooltip**: (type: integer, default: `0`)
+  
+* **refresh**: (type: string, default: `null`)
+  
+* **schemaVersion**: (type: integer, default: `25`)
+  
+* **style**: (type: string, default: `"dark"`)
+  
+* **tags**: (type: array, default: `[]`)
+  
+* **timezone**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **uid**: (type: string, default: `null`)
+  
+
+#### #setTime
+
+* **from**: (type: string, default: `"now-6h"`)
+  
+* **to**: (type: string, default: `"now"`)
+  
+#### #setTimepicker
+
+* **refreshIntervals**: (type: array, default: `["5s","10s","30s","1m","5m","15m","30m","1h","2h","1d"]`)
+  
+
+#### #addAnnotation
+
+* **builtIn**: (type: integer, default: `0`)
+  
+* **datasource**: (type: string, default: `"default"`)
+  
+* **enable**: (type: boolean, default: `true`)
+  
+* **hide**: (type: boolean, default: `false`)
+  
+* **iconColor**: (type: string, default: `null`)
+  
+* **name**: (type: string, default: `null`)
+  
+* **rawQuery**: (type: string, default: `null`)
+  
+* **showIn**: (type: integer, default: `0`)
+  
+#### #addTemplate
+
+* **template**: (type: object)
+  
+
+
+## panel
+
+
+
+### panel.gauge.new
+
+
+
+* **datasource**: (type: string, default: `"default"`)
+  
+* **description**: (type: string, default: `null`)
+  
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatDirection**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **transparent**: (type: boolean, default: `false`)
+  
+
+#### #setFieldConfig
+
+* **max**: (type: integer, default: `null`)
+  
+* **min**: (type: integer, default: `null`)
+  
+* **thresholdMode**: (type: string, default: `"absolute"`)
+  
+* **unit**: (type: string, default: `null`)
+  
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+#### #setOptions
+
+* **calcs**: (type: array, default: `["mean"]`)
+  
+* **fields**: (type: string, default: `null`)
+  
+* **orientation**: (type: string, default: `"auto"`)
+  
+* **showThresholdLabels**: (type: boolean, default: `false`)
+  
+* **showThresholdMarkers**: (type: boolean, default: `true`)
+  
+* **values**: (type: boolean, default: `false`)
+  
+
+#### #addPanelLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addDataLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addMapping
+
+* **from**: (type: string, default: `null`)
+  
+* **id**: (type: integer, default: `null`)
+  
+* **operator**: (type: string, default: `null`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **to**: (type: string, default: `null`)
+  
+* **type**: (type: integer, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+#### #addOverride
+
+* **matcher**: (type: oject, default: `null`)
+  
+* **properties**: (type: array, default: `null`)
+  
+#### #addThresholdStep
+
+* **color**: (type: string, default: `null`)
+  
+* **value**: (type: integer, default: `null`)
+  
+#### #addTarget
+
+* **target**: (type: object)
+  
+
+
+### panel.graph.new
+
+
+
+* **bars**: (type: boolean, default: `false`)
+  Display values as a bar chart.
+* **dashLength**: (type: integer, default: `10`)
+  Dashed line length.
+* **dashes**: (type: boolean, default: `false`)
+  Show line with dashes.
+* **datasource**: (type: string, default: `"default"`)
+  
+* **decimals**: (type: integer, default: `null`)
+  Controls how many decimals are displayed for legend values and
+  graph hover tooltips.
+* **description**: (type: string, default: `null`)
+  
+* **fill**: (type: integer, default: `1`)
+  Amount of color fill for a series. Expects a value between 0 and 1.
+* **fillGradient**: (type: integer, default: `0`)
+  Degree of gradient on the area fill. 0 is no gradient, 10 is a
+  steep gradient.
+* **hiddenSeries**: (type: boolean, default: `false`)
+  Hide the series.
+* **lines**: (type: boolean, default: `true`)
+  Display values as a line graph.
+* **linewidth**: (type: integer, default: `1`)
+  The width of the line for a series.
+* **nullPointMode**: (type: string, default: `"null"`)
+  How null values are displayed.
+  * 'null' - If there is a gap in the series, meaning a null value,
+    then the line in the graph will be broken and show the gap.
+  * 'null as zero' - If there is a gap in the series, meaning a null
+    value, then it will be displayed as a zero value in the graph
+    panel.
+  * 'connected' - If there is a gap in the series, meaning a null
+    value or values, then the line will skip the gap and connect to the
+    next non-null value.
+* **percentage**: (type: boolean, default: `false`)
+  Available when `stack` is true. Each series is drawn as a percentage
+  of the total of all series.
+* **pointradius**: (type: integer, default: `null`)
+  Controls how large the points are.
+* **points**: (type: boolean, default: `false`)
+  Display points for values.
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatDirection**: (type: string, default: `null`)
+  
+* **spaceLength**: (type: integer, default: `10`)
+  Dashed line spacing when `dashes` is true.
+* **stack**: (type: boolean, default: `false`)
+  Each series is stacked on top of another.
+* **steppedLine**: (type: boolean, default: `false`)
+  Draws adjacent points as staircase.
+* **timeFrom**: (type: string, default: `null`)
+  
+* **timeShift**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **transparent**: (type: boolean, default: `false`)
+  
+
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+#### #setLegend
+
+* **alignAsTable**: (type: boolean, default: `null`)
+  Whether to display legend in table.
+* **avg**: (type: boolean, default: `false`)
+  Average of all values returned from the metric query.
+* **current**: (type: boolean, default: `false`)
+  Last value returned from the metric query.
+* **max**: (type: boolean, default: `false`)
+  Maximum of all values returned from the metric query.
+* **min**: (type: boolean, default: `false`)
+  Minimum of all values returned from the metric query.
+* **rightSide**: (type: boolean, default: `false`)
+  Display legend to the right.
+* **show**: (type: boolean, default: `true`)
+  Show or hide the legend.
+* **sideWidth**: (type: integer, default: `null`)
+  Available when `rightSide` is true. The minimum width for the legend in
+  pixels.
+* **total**: (type: boolean, default: `false`)
+  Sum of all values returned from the metric query.
+* **values**: (type: boolean, default: `true`)
+  
+#### #setThresholds
+
+* **thresholdMode**: (type: string, default: `"absolute"`)
+  
+#### #setTooltip
+
+* **shared**: (type: boolean, default: `true`)
+  * true - The hover tooltip shows all series in the graph.
+    Grafana highlights the series that you are hovering over in
+    bold in the series list in the tooltip.
+  * false - The hover tooltip shows only a single series, the one
+    that you are hovering over on the graph.
+* **sort**: (type: integer, default: `2`)
+  * 0 (none) - The order of the series in the tooltip is
+    determined by the sort order in your query. For example, they
+    could be alphabetically sorted by series name.
+  * 1 (increasing) - The series in the hover tooltip are sorted
+    by value and in increasing order, with the lowest value at the
+    top of the list.
+  * 2 (decreasing) - The series in the hover tooltip are sorted
+    by value and in decreasing order, with the highest value at the
+    top of the list.
+#### #setXaxis
+
+* **buckets**: (type: string, default: `null`)
+  
+* **mode**: (type: string, default: `"time"`)
+  The display mode completely changes the visualization of the
+  graph panel. It’s like three panels in one. The main mode is
+  the time series mode with time on the X-axis. The other two
+  modes are a basic bar chart mode with series on the X-axis
+  instead of time and a histogram mode.
+  * 'time' - The X-axis represents time and that the data is
+    grouped by time (for example, by hour, or by minute).
+  * 'series' - The data is grouped by series and not by time. The
+    Y-axis still represents the value.
+  * 'histogram' - Converts the graph into a histogram. A histogram
+    is a kind of bar chart that groups numbers into ranges, often
+    called buckets or bins. Taller bars show that more data falls
+    in that range.
+* **name**: (type: string, default: `null`)
+  
+* **show**: (type: boolean, default: `true`)
+  Show or hide the axis.
+#### #setYaxis
+
+* **align**: (type: boolean, default: `false`)
+  Align left and right Y-axes by value.
+* **alignLevel**: (type: integer, default: `0`)
+  Available when align is true. Value to use for alignment of
+  left and right Y-axes, starting from Y=0.
+
+#### #addDataLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addPanelLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addOverride
+
+* **matcher**: (type: oject, default: `null`)
+  
+* **properties**: (type: array, default: `null`)
+  
+#### #addSeriesOverride
+
+* **alias**: (type: string, default: `null`)
+  Alias or regex matching the series you'd like to target.
+* **bars**: (type: boolean, default: `null`)
+  
+* **color**: (type: string, default: `null`)
+  
+* **dashLength**: (type: integer, default: `null`)
+  
+* **dashes**: (type: boolean, default: `null`)
+  
+* **fill**: (type: integer, default: `null`)
+  
+* **fillBelowTo**: (type: string, default: `null`)
+  
+* **fillGradient**: (type: integer, default: `null`)
+  
+* **hiddenSeries**: (type: boolean, default: `null`)
+  
+* **hideTooltip**: (type: boolean, default: `null`)
+  
+* **legend**: (type: boolean, default: `null`)
+  
+* **lines**: (type: boolean, default: `null`)
+  
+* **linewidth**: (type: integer, default: `null`)
+  
+* **nullPointMode**: (type: string, default: `null`)
+  
+* **pointradius**: (type: integer, default: `null`)
+  
+* **points**: (type: boolean, default: `null`)
+  
+* **spaceLength**: (type: integer, default: `null`)
+  
+* **stack**: (type: integer, default: `null`)
+  
+* **steppedLine**: (type: boolean, default: `null`)
+  
+* **transform**: (type: string, default: `null`)
+  
+* **yaxis**: (type: integer, default: `null`)
+  
+* **zindex**: (type: integer, default: `null`)
+  
+#### #addThresholdStep
+
+* **color**: (type: string, default: `null`)
+  
+* **value**: (type: integer, default: `null`)
+  
+#### #addTarget
+
+* **target**: (type: object)
+  
+#### #addYaxis
+
+* **decimals**: (type: integer, default: `null`)
+  Defines how many decimals are displayed for Y value.
+* **format**: (type: string, default: `"short"`)
+  The display unit for the Y value.
+* **label**: (type: string, default: `null`)
+  The Y axis label.
+* **logBase**: (type: integer, default: `1`)
+  The scale to use for the Y value - linear, or logarithmic.
+  * 1 - linear
+  * 2 - log (base 2)
+  * 10 - log (base 10)
+  * 32 - log (base 32)
+  * 1024 - log (base 1024)
+* **max**: (type: integer, default: `null`)
+  The maximum Y value.
+* **min**: (type: integer, default: `null`)
+  The minimum Y value.
+* **show**: (type: boolean, default: `true`)
+  Show or hide the axis.
+
+
+### panel.row.new
+
+
+
+* **collapse**: (type: boolean, default: `true`)
+  
+* **collapsed**: (type: boolean, default: `true`)
+  
+* **datasource**: (type: string, default: `null`)
+  
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatIteration**: (type: string, default: `null`)
+  
+* **showTitle**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **titleSize**: (type: string, default: `"h6"`)
+  
+
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+
+#### #addPanel
+
+* **panel**: (type: object)
+  
+
+
+### panel.stat.new
+
+
+
+* **datasource**: (type: string, default: `"default"`)
+  
+* **description**: (type: string, default: `null`)
+  
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatDirection**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **transparent**: (type: boolean, default: `false`)
+  
+
+#### #setFieldConfig
+
+* **max**: (type: integer, default: `null`)
+  
+* **min**: (type: integer, default: `null`)
+  
+* **thresholdMode**: (type: string, default: `"absolute"`)
+  
+* **unit**: (type: string, default: `null`)
+  
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+#### #setOptions
+
+* **calcs**: (type: array, default: `["mean"]`)
+  
+* **colorMode**: (type: string, default: `"value"`)
+  
+* **fields**: (type: string, default: `null`)
+  
+* **graphMode**: (type: string, default: `"none"`)
+  
+* **justifyMode**: (type: string, default: `"auto"`)
+  
+* **orientation**: (type: string, default: `"auto"`)
+  
+* **textMode**: (type: string, default: `"auto"`)
+  
+* **values**: (type: boolean, default: `false`)
+  
+
+#### #addDataLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addPanelLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addMapping
+
+* **from**: (type: string, default: `null`)
+  
+* **id**: (type: integer, default: `null`)
+  
+* **operator**: (type: string, default: `null`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **to**: (type: string, default: `null`)
+  
+* **type**: (type: integer, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+#### #addOverride
+
+* **matcher**: (type: oject, default: `null`)
+  
+* **properties**: (type: array, default: `null`)
+  
+#### #addThresholdStep
+
+* **color**: (type: string, default: `null`)
+  
+* **value**: (type: integer, default: `null`)
+  
+#### #addTarget
+
+* **target**: (type: object)
+  
+
+
+### panel.table.new
+
+
+
+* **datasource**: (type: string, default: `"default"`)
+  
+* **description**: (type: string, default: `null`)
+  
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatDirection**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **transparent**: (type: boolean, default: `false`)
+  
+
+#### #setFieldConfig
+
+* **displayName**: (type: string, default: `null`)
+  
+* **max**: (type: integer, default: `0`)
+  
+* **min**: (type: integer, default: `0`)
+  
+* **thresholdMode**: (type: string, default: `"absolute"`)
+  
+* **noValue**: (type: string, default: `null`)
+  
+* **unit**: (type: string, default: `"short"`)
+  
+* **width**: (type: integer, default: `null`)
+  
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+#### #setOptions
+
+* **showHeader**: (type: boolean, default: `true`)
+  
+
+#### #addPanelLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addDataLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addMapping
+
+* **from**: (type: string, default: `null`)
+  
+* **id**: (type: integer, default: `null`)
+  
+* **operator**: (type: string, default: `null`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **to**: (type: string, default: `null`)
+  
+* **type**: (type: integer, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+#### #addOverride
+
+* **matcher**: (type: oject, default: `null`)
+  
+* **properties**: (type: array, default: `null`)
+  
+#### #addThresholdStep
+
+* **color**: (type: string, default: `null`)
+  
+* **value**: (type: integer, default: `null`)
+  
+#### #addTarget
+
+* **target**: (type: object)
+  
+
+
+### panel.text.new
+
+
+
+* **content**: (type: string, default: `null`)
+  
+* **datasource**: (type: string, default: `"default"`)
+  
+* **description**: (type: string, default: `null`)
+  
+* **mode**: (type: string, default: `"markdown"`)
+  
+* **repeat**: (type: string, default: `null`)
+  
+* **repeatDirection**: (type: string, default: `null`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **transparent**: (type: boolean, default: `false`)
+  
+
+#### #setGridPos
+
+* **h**: (type: integer, default: `8`)
+  Panel height.
+* **w**: (type: integer, default: `12`)
+  Panel width.
+* **x**: (type: integer, default: `null`)
+  Panel x position.
+* **y**: (type: integer, default: `null`)
+  Panel y position.
+
+#### #addPanelLink
+
+* **targetBlank**: (type: boolean, default: `true`)
+  
+* **title**: (type: string, default: `null`)
+  
+* **url**: (type: string, default: `null`)
+  
+#### #addTarget
+
+* **target**: (type: object)
+  
+
+
+
+## target
+
+
+
+### target.prometheus.new
+
+
+
+* **datasource**: (type: string, default: `"default"`)
+  
+* **expr**: (type: string, default: `null`)
+  
+* **format**: (type: string, default: `"time_series"`)
+  
+* **interval**: (type: string, default: `null`)
+  
+* **intervalFactor**: (type: integer, default: `null`)
+  
+* **legendFormat**: (type: string, default: `null`)
+  
+
+
+
+
+
+## template
+
+
+
+### tamplate.datasource.new
+
+
+
+* **hide**: (type: integer, default: `0`)
+  
+* **includeAll**: (type: boolean, default: `false`)
+  
+* **label**: (type: string, default: `null`)
+  
+* **multi**: (type: boolean, default: `false`)
+  
+* **name**: (type: string, default: `null`)
+  
+* **query**: (type: string, default: `null`)
+  
+* **refresh**: (type: integer, default: `1`)
+  
+* **regex**: (type: string, default: `null`)
+  
+* **skipUrlSync**: (type: string, default: `false`)
+  
+
+#### #setCurrent
+
+* **selected**: (type: boolean, default: `false`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+
+
+
+### tamplate.query.new
+
+
+
+* **allValue**: (type: string, default: `null`)
+  
+* **datasource**: (type: string, default: `null`)
+  
+* **definition**: (type: string, default: `null`)
+  
+* **hide**: (type: integer, default: `0`)
+  
+* **includeAll**: (type: boolean, default: `false`)
+  
+* **label**: (type: string, default: `null`)
+  
+* **multi**: (type: boolean, default: `false`)
+  
+* **name**: (type: string, default: `null`)
+  
+* **query**: (type: string, default: `null`)
+  
+* **refresh**: (type: integer, default: `0`)
+  
+* **regex**: (type: string, default: `null`)
+  
+* **skipUrlSync**: (type: string, default: `false`)
+  
+* **sort**: (type: integer, default: `0`)
+  
+* **tagValuesQuery**: (type: string, default: `null`)
+  
+* **tags**: (type: array, default: `null`)
+  
+* **tagsQuery**: (type: string, default: `null`)
+  
+* **useTags**: (type: boolean, default: `false`)
+  
+
+#### #setCurrent
+
+* **selected**: (type: boolean, default: `null`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+
+#### #addOption
+
+* **selected**: (type: boolean, default: `true`)
+  
+* **text**: (type: string, default: `null`)
+  
+* **value**: (type: string, default: `null`)
+  
+
+
diff --git a/ops/monitoring/lib/grafonnet/README.hscloud b/ops/monitoring/lib/grafonnet/README.hscloud
new file mode 100644
index 0000000..5b86f96
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/README.hscloud
@@ -0,0 +1,7 @@
+This subpath (//ops/monitoring/lib/grafonnet) comes from the following Git repository:
+
+    repository: https://github.com/grafana/grafonnet-lib.git
+    revision: ff69572caf78c3163980d0d723c85a722eab73d9
+    subpath: grafonnet-7.0
+
+The files contained in this subdirectory are license under the Apache 2.0 License (see //third_party/licenses/Apache-2.0.txt).
diff --git a/ops/monitoring/lib/grafonnet/dashboard.libsonnet b/ops/monitoring/lib/grafonnet/dashboard.libsonnet
new file mode 100644
index 0000000..28dc13a
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/dashboard.libsonnet
@@ -0,0 +1,85 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    description=null,
+    editable=true,
+    graphTooltip=0,
+    refresh=null,
+    schemaVersion=25,
+    style='dark',
+    tags=[],
+    timezone=null,
+    title=null,
+    uid=null,
+  ):: {
+    [if description != null then 'description']: description,
+    [if editable != null then 'editable']: editable,
+    [if graphTooltip != null then 'graphTooltip']: graphTooltip,
+    [if refresh != null then 'refresh']: refresh,
+    [if schemaVersion != null then 'schemaVersion']: schemaVersion,
+    [if style != null then 'style']: style,
+    [if tags != null then 'tags']: tags,
+    [if timezone != null then 'timezone']: timezone,
+    [if title != null then 'title']: title,
+    [if uid != null then 'uid']: uid,
+
+    setTime(
+      from='now-6h',
+      to='now',
+    ):: self {}
+        + { time+: { [if from != null then 'from']: from } }
+        + { time+: { [if to != null then 'to']: to } }
+    ,
+
+    setTimepicker(
+      refreshIntervals=['5s', '10s', '30s', '1m', '5m', '15m', '30m', '1h', '2h', '1d'],
+    ):: self {}
+        + { timepicker+: { [if refreshIntervals != null then 'refresh_intervals']: refreshIntervals } }
+    ,
+
+
+    addTemplate(
+      template
+    ):: self {}
+        + { templating+: { list+: [
+          template,
+        ] } },
+
+    addAnnotation(
+      builtIn=0,
+      datasource='default',
+      enable=true,
+      hide=false,
+      iconColor=null,
+      name=null,
+      rawQuery=null,
+      showIn=0,
+    ):: self {}
+        + { annotations+: { list+: [
+          {
+            [if builtIn != null then 'builtIn']: builtIn,
+            [if datasource != null then 'datasource']: datasource,
+            [if enable != null then 'enable']: enable,
+            [if hide != null then 'hide']: hide,
+            [if iconColor != null then 'iconColor']: iconColor,
+            [if name != null then 'name']: name,
+            [if rawQuery != null then 'rawQuery']: rawQuery,
+            [if showIn != null then 'showIn']: showIn,
+          },
+        ] } },
+
+
+    panels: [],
+    _nextPanelID:: 2,
+    addPanel(panel):: self {
+      local nextPanelID = super._nextPanelID,
+      panels+: [
+        panel { id: nextPanelID } +
+        if 'panels' in panel then { panels: std.mapWithIndex(function(i, p) p { id: nextPanelID + i + 1 }, panel.panels) } else {},
+      ],
+      _nextPanelID:: nextPanelID + 1 + (if 'panels' in panel then std.length(panel.panels) else 0),
+    },
+    addPanels(panels):: std.foldl(function(d, p) d.addPanel(p), panels, self),
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/grafana.libsonnet b/ops/monitoring/lib/grafonnet/grafana.libsonnet
new file mode 100644
index 0000000..738a051
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/grafana.libsonnet
@@ -0,0 +1,20 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  dashboard:: import 'dashboard.libsonnet',
+  panel:: {
+    gauge:: import 'panel/gauge.libsonnet',
+    graph:: import 'panel/graph.libsonnet',
+    row:: import 'panel/row.libsonnet',
+    stat:: import 'panel/stat.libsonnet',
+    table:: import 'panel/table.libsonnet',
+    text:: import 'panel/text.libsonnet',
+  },
+  target:: {
+    prometheus:: import 'target/prometheus.libsonnet',
+  },
+  template:: {
+    datasource:: import 'template/datasource.libsonnet',
+    query:: import 'template/query.libsonnet',
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/gauge.libsonnet b/ops/monitoring/lib/grafonnet/panel/gauge.libsonnet
new file mode 100644
index 0000000..4520444
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/gauge.libsonnet
@@ -0,0 +1,138 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    datasource='default',
+    description=null,
+    repeat=null,
+    repeatDirection=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if datasource != null then 'datasource']: datasource,
+    [if description != null then 'description']: description,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    type: 'gauge',
+
+    setFieldConfig(
+      max=null,
+      min=null,
+      thresholdMode='absolute',
+      unit=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { [if max != null then 'max']: max } } }
+        + { fieldConfig+: { defaults+: { [if min != null then 'min']: min } } }
+        + { fieldConfig+: { defaults+: { thresholds+: { [if thresholdMode != null then 'mode']: thresholdMode } } } }
+        + { fieldConfig+: { defaults+: { [if unit != null then 'unit']: unit } } }
+    ,
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+    setOptions(
+      calcs=['mean'],
+      fields=null,
+      orientation='auto',
+      showThresholdLabels=false,
+      showThresholdMarkers=true,
+      values=false,
+    ):: self {}
+        + { options+: { reduceOptions+: { [if calcs != null then 'calcs']: calcs } } }
+        + { options+: { reduceOptions+: { [if fields != null then 'fields']: fields } } }
+        + { options+: { [if orientation != null then 'orientation']: orientation } }
+        + { options+: { [if showThresholdLabels != null then 'showThresholdLabels']: showThresholdLabels } }
+        + { options+: { [if showThresholdMarkers != null then 'showThresholdMarkers']: showThresholdMarkers } }
+        + { options+: { reduceOptions+: { [if values != null then 'values']: values } } }
+    ,
+
+
+    addDataLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] } } },
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addMapping(
+      from=null,
+      id=null,
+      operator=null,
+      text=null,
+      to=null,
+      type=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { mappings+: [
+          {
+            [if from != null then 'from']: from,
+            [if id != null then 'id']: id,
+            [if operator != null then 'operator']: operator,
+            [if text != null then 'text']: text,
+            [if to != null then 'to']: to,
+            [if type != null then 'type']: type,
+            [if value != null then 'value']: value,
+          },
+        ] } } },
+
+    addOverride(
+      matcher=null,
+      properties=null,
+    ):: self {}
+        + { fieldConfig+: { overrides+: [
+          {
+            [if matcher != null then 'matcher']: matcher,
+            [if properties != null then 'properties']: properties,
+          },
+        ] } },
+
+    addThresholdStep(
+      color=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { thresholds+: { steps+: [
+          {
+            [if color != null then 'color']: color,
+            [if value != null then 'value']: value,
+          },
+        ] } } } },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/graph.libsonnet b/ops/monitoring/lib/grafonnet/panel/graph.libsonnet
new file mode 100644
index 0000000..34985a1
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/graph.libsonnet
@@ -0,0 +1,257 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    bars=false,
+    dashLength=10,
+    dashes=false,
+    datasource='default',
+    decimals=null,
+    description=null,
+    fill=1,
+    fillGradient=0,
+    hiddenSeries=false,
+    lines=true,
+    linewidth=1,
+    nullPointMode='null',
+    percentage=false,
+    pointradius=null,
+    points=false,
+    repeat=null,
+    repeatDirection=null,
+    spaceLength=10,
+    stack=false,
+    steppedLine=false,
+    timeFrom=null,
+    timeShift=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if bars != null then 'bars']: bars,
+    [if dashLength != null then 'dashLength']: dashLength,
+    [if dashes != null then 'dashes']: dashes,
+    [if datasource != null then 'datasource']: datasource,
+    [if decimals != null then 'decimals']: decimals,
+    [if description != null then 'description']: description,
+    [if fill != null then 'fill']: fill,
+    [if fillGradient != null then 'fillGradient']: fillGradient,
+    [if hiddenSeries != null then 'hiddenSeries']: hiddenSeries,
+    [if lines != null then 'lines']: lines,
+    [if linewidth != null then 'linewidth']: linewidth,
+    [if nullPointMode != null then 'nullPointMode']: nullPointMode,
+    [if percentage != null then 'percentage']: percentage,
+    [if pointradius != null then 'pointradius']: pointradius,
+    [if points != null then 'points']: points,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if spaceLength != null then 'spaceLength']: spaceLength,
+    [if stack != null then 'stack']: stack,
+    [if steppedLine != null then 'steppedLine']: steppedLine,
+    [if timeFrom != null then 'timeFrom']: timeFrom,
+    [if timeShift != null then 'timeShift']: timeShift,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    renderer: 'flot',
+    type: 'graph',
+    tooltip+: { value_type: 'individual' },
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+    setLegend(
+      alignAsTable=null,
+      avg=false,
+      current=false,
+      max=false,
+      min=false,
+      rightSide=false,
+      show=true,
+      sideWidth=null,
+      total=false,
+      values=true,
+    ):: self {}
+        + { legend+: { [if alignAsTable != null then 'alignAsTable']: alignAsTable } }
+        + { legend+: { [if avg != null then 'avg']: avg } }
+        + { legend+: { [if current != null then 'current']: current } }
+        + { legend+: { [if max != null then 'max']: max } }
+        + { legend+: { [if min != null then 'min']: min } }
+        + { legend+: { [if rightSide != null then 'rightSide']: rightSide } }
+        + { legend+: { [if show != null then 'show']: show } }
+        + { legend+: { [if sideWidth != null then 'sideWidth']: sideWidth } }
+        + { legend+: { [if total != null then 'total']: total } }
+        + { legend+: { [if values != null then 'values']: values } }
+    ,
+
+    setThresholds(
+      thresholdMode='absolute',
+    ):: self {}
+        + { thresholds+: { [if thresholdMode != null then 'mode']: thresholdMode } }
+    ,
+
+    setTooltip(
+      shared=true,
+      sort=2,
+    ):: self {}
+        + { tooltip+: { [if shared != null then 'shared']: shared } }
+        + { tooltip+: { [if sort != null then 'sort']: sort } }
+    ,
+
+    setXaxis(
+      buckets=null,
+      mode='time',
+      name=null,
+      show=true,
+    ):: self {}
+        + { xaxis+: { [if buckets != null then 'buckets']: buckets } }
+        + { xaxis+: { [if mode != null then 'mode']: mode } }
+        + { xaxis+: { [if name != null then 'name']: name } }
+        + { xaxis+: { [if show != null then 'show']: show } }
+    ,
+
+    setYaxis(
+      align=false,
+      alignLevel=0,
+    ):: self {}
+        + { yaxis+: { [if align != null then 'align']: align } }
+        + { yaxis+: { [if alignLevel != null then 'alignLevel']: alignLevel } }
+    ,
+
+
+    addDataLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { options+: { dataLinks+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] } },
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addOverride(
+      matcher=null,
+      properties=null,
+    ):: self {}
+        + { fieldConfig+: { overrides+: [
+          {
+            [if matcher != null then 'matcher']: matcher,
+            [if properties != null then 'properties']: properties,
+          },
+        ] } },
+
+    addSeriesOverride(
+      alias=null,
+      bars=null,
+      color=null,
+      dashLength=null,
+      dashes=null,
+      fill=null,
+      fillBelowTo=null,
+      fillGradient=null,
+      hiddenSeries=null,
+      hideTooltip=null,
+      legend=null,
+      lines=null,
+      linewidth=null,
+      nullPointMode=null,
+      pointradius=null,
+      points=null,
+      spaceLength=null,
+      stack=null,
+      steppedLine=null,
+      transform=null,
+      yaxis=null,
+      zindex=null,
+    ):: self {}
+        + { seriesOverrides+: [
+          {
+            [if alias != null then 'alias']: alias,
+            [if bars != null then 'bars']: bars,
+            [if color != null then 'color']: color,
+            [if dashLength != null then 'dashLength']: dashLength,
+            [if dashes != null then 'dashes']: dashes,
+            [if fill != null then 'fill']: fill,
+            [if fillBelowTo != null then 'fillBelowTo']: fillBelowTo,
+            [if fillGradient != null then 'fillGradient']: fillGradient,
+            [if hiddenSeries != null then 'hiddenSeries']: hiddenSeries,
+            [if hideTooltip != null then 'hideTooltip']: hideTooltip,
+            [if legend != null then 'legend']: legend,
+            [if lines != null then 'lines']: lines,
+            [if linewidth != null then 'linewidth']: linewidth,
+            [if nullPointMode != null then 'nullPointMode']: nullPointMode,
+            [if pointradius != null then 'pointradius']: pointradius,
+            [if points != null then 'points']: points,
+            [if spaceLength != null then 'spaceLength']: spaceLength,
+            [if stack != null then 'stack']: stack,
+            [if steppedLine != null then 'steppedLine']: steppedLine,
+            [if transform != null then 'transform']: transform,
+            [if yaxis != null then 'yaxis']: yaxis,
+            [if zindex != null then 'zindex']: zindex,
+          },
+        ] },
+
+    addThresholdStep(
+      color=null,
+      value=null,
+    ):: self {}
+        + { thresholds+: { steps+: [
+          {
+            [if color != null then 'color']: color,
+            [if value != null then 'value']: value,
+          },
+        ] } },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+    addYaxis(
+      decimals=null,
+      format='short',
+      label=null,
+      logBase=1,
+      max=null,
+      min=null,
+      show=true,
+    ):: self {}
+        + { yaxes+: [
+          {
+            [if decimals != null then 'decimals']: decimals,
+            [if format != null then 'format']: format,
+            [if label != null then 'label']: label,
+            [if logBase != null then 'logBase']: logBase,
+            [if max != null then 'max']: max,
+            [if min != null then 'min']: min,
+            [if show != null then 'show']: show,
+          },
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/row.libsonnet b/ops/monitoring/lib/grafonnet/panel/row.libsonnet
new file mode 100644
index 0000000..e8a21d3
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/row.libsonnet
@@ -0,0 +1,45 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    collapse=true,
+    collapsed=true,
+    datasource=null,
+    repeat=null,
+    repeatIteration=null,
+    showTitle=true,
+    title=null,
+    titleSize='h6',
+  ):: {
+    [if collapse != null then 'collapse']: collapse,
+    [if collapsed != null then 'collapsed']: collapsed,
+    [if datasource != null then 'datasource']: datasource,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatIteration != null then 'repeatIteration']: repeatIteration,
+    [if showTitle != null then 'showTitle']: showTitle,
+    [if title != null then 'title']: title,
+    [if titleSize != null then 'titleSize']: titleSize,
+    type: 'row',
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+
+    addPanel(
+      panel
+    ):: self {}
+        + { panels+: [
+          panel,
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/stat.libsonnet b/ops/monitoring/lib/grafonnet/panel/stat.libsonnet
new file mode 100644
index 0000000..a14c938
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/stat.libsonnet
@@ -0,0 +1,142 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    datasource='default',
+    description=null,
+    repeat=null,
+    repeatDirection=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if datasource != null then 'datasource']: datasource,
+    [if description != null then 'description']: description,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    type: 'stat',
+
+    setFieldConfig(
+      max=null,
+      min=null,
+      thresholdMode='absolute',
+      unit=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { [if max != null then 'max']: max } } }
+        + { fieldConfig+: { defaults+: { [if min != null then 'min']: min } } }
+        + { fieldConfig+: { defaults+: { thresholds+: { [if thresholdMode != null then 'mode']: thresholdMode } } } }
+        + { fieldConfig+: { defaults+: { [if unit != null then 'unit']: unit } } }
+    ,
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+    setOptions(
+      calcs=['mean'],
+      colorMode='value',
+      fields=null,
+      graphMode='none',
+      justifyMode='auto',
+      orientation='auto',
+      textMode='auto',
+      values=false,
+    ):: self {}
+        + { options+: { reduceOptions+: { [if calcs != null then 'calcs']: calcs } } }
+        + { options+: { [if colorMode != null then 'colorMode']: colorMode } }
+        + { options+: { reduceOptions+: { [if fields != null then 'fields']: fields } } }
+        + { options+: { [if graphMode != null then 'graphMode']: graphMode } }
+        + { options+: { [if justifyMode != null then 'justifyMode']: justifyMode } }
+        + { options+: { [if orientation != null then 'orientation']: orientation } }
+        + { options+: { [if textMode != null then 'textMode']: textMode } }
+        + { options+: { reduceOptions+: { [if values != null then 'values']: values } } }
+    ,
+
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addDataLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] } } },
+
+    addMapping(
+      from=null,
+      id=null,
+      operator=null,
+      text=null,
+      to=null,
+      type=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { mappings+: [
+          {
+            [if from != null then 'from']: from,
+            [if id != null then 'id']: id,
+            [if operator != null then 'operator']: operator,
+            [if text != null then 'text']: text,
+            [if to != null then 'to']: to,
+            [if type != null then 'type']: type,
+            [if value != null then 'value']: value,
+          },
+        ] } } },
+
+    addOverride(
+      matcher=null,
+      properties=null,
+    ):: self {}
+        + { fieldConfig+: { overrides+: [
+          {
+            [if matcher != null then 'matcher']: matcher,
+            [if properties != null then 'properties']: properties,
+          },
+        ] } },
+
+    addThresholdStep(
+      color=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { thresholds+: { steps+: [
+          {
+            [if color != null then 'color']: color,
+            [if value != null then 'value']: value,
+          },
+        ] } } } },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/table.libsonnet b/ops/monitoring/lib/grafonnet/panel/table.libsonnet
new file mode 100644
index 0000000..1bd2152
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/table.libsonnet
@@ -0,0 +1,134 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    datasource='default',
+    description=null,
+    repeat=null,
+    repeatDirection=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if datasource != null then 'datasource']: datasource,
+    [if description != null then 'description']: description,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    type: 'table',
+
+    setFieldConfig(
+      displayName=null,
+      max=0,
+      min=0,
+      thresholdMode='absolute',
+      noValue=null,
+      unit='short',
+      width=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { [if displayName != null then 'displayName']: displayName } } }
+        + { fieldConfig+: { defaults+: { [if max != null then 'max']: max } } }
+        + { fieldConfig+: { defaults+: { [if min != null then 'min']: min } } }
+        + { fieldConfig+: { defaults+: { thresholds+: { [if thresholdMode != null then 'mode']: thresholdMode } } } }
+        + { fieldConfig+: { defaults+: { [if noValue != null then 'noValue']: noValue } } }
+        + { fieldConfig+: { defaults+: { [if unit != null then 'unit']: unit } } }
+        + { fieldConfig+: { defaults+: { custom+: { [if width != null then 'width']: width } } } }
+    ,
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+    setOptions(
+      showHeader=true,
+    ):: self {}
+        + { options+: { [if showHeader != null then 'showHeader']: showHeader } }
+    ,
+
+
+    addDataLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] } } },
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addMapping(
+      from=null,
+      id=null,
+      operator=null,
+      text=null,
+      to=null,
+      type=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { mappings+: [
+          {
+            [if from != null then 'from']: from,
+            [if id != null then 'id']: id,
+            [if operator != null then 'operator']: operator,
+            [if text != null then 'text']: text,
+            [if to != null then 'to']: to,
+            [if type != null then 'type']: type,
+            [if value != null then 'value']: value,
+          },
+        ] } } },
+
+    addOverride(
+      matcher=null,
+      properties=null,
+    ):: self {}
+        + { fieldConfig+: { overrides+: [
+          {
+            [if matcher != null then 'matcher']: matcher,
+            [if properties != null then 'properties']: properties,
+          },
+        ] } },
+
+    addThresholdStep(
+      color=null,
+      value=null,
+    ):: self {}
+        + { fieldConfig+: { defaults+: { thresholds+: { steps+: [
+          {
+            [if color != null then 'color']: color,
+            [if value != null then 'value']: value,
+          },
+        ] } } } },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/panel/text.libsonnet b/ops/monitoring/lib/grafonnet/panel/text.libsonnet
new file mode 100644
index 0000000..1c4c682
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/panel/text.libsonnet
@@ -0,0 +1,58 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    content=null,
+    datasource='default',
+    description=null,
+    mode='markdown',
+    repeat=null,
+    repeatDirection=null,
+    title=null,
+    transparent=false,
+  ):: {
+    [if content != null then 'content']: content,
+    [if datasource != null then 'datasource']: datasource,
+    [if description != null then 'description']: description,
+    [if mode != null then 'mode']: mode,
+    [if repeat != null then 'repeat']: repeat,
+    [if repeatDirection != null then 'repeatDirection']: repeatDirection,
+    [if title != null then 'title']: title,
+    [if transparent != null then 'transparent']: transparent,
+    type: 'text',
+
+    setGridPos(
+      h=8,
+      w=12,
+      x=null,
+      y=null,
+    ):: self {}
+        + { gridPos+: { [if h != null then 'h']: h } }
+        + { gridPos+: { [if w != null then 'w']: w } }
+        + { gridPos+: { [if x != null then 'x']: x } }
+        + { gridPos+: { [if y != null then 'y']: y } }
+    ,
+
+
+    addPanelLink(
+      targetBlank=true,
+      title=null,
+      url=null,
+    ):: self {}
+        + { links+: [
+          {
+            [if targetBlank != null then 'targetBlank']: targetBlank,
+            [if title != null then 'title']: title,
+            [if url != null then 'url']: url,
+          },
+        ] },
+
+    addTarget(
+      target
+    ):: self {}
+        + { targets+: [
+          target,
+        ] },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/target/prometheus.libsonnet b/ops/monitoring/lib/grafonnet/target/prometheus.libsonnet
new file mode 100644
index 0000000..5bfe65d
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/target/prometheus.libsonnet
@@ -0,0 +1,19 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    datasource='default',
+    expr=null,
+    format='time_series',
+    interval=null,
+    intervalFactor=null,
+    legendFormat=null,
+  ):: {
+    [if datasource != null then 'datasource']: datasource,
+    [if expr != null then 'expr']: expr,
+    [if format != null then 'format']: format,
+    [if interval != null then 'interval']: interval,
+    [if intervalFactor != null then 'intervalFactor']: intervalFactor,
+    [if legendFormat != null then 'legendFormat']: legendFormat,
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/template/datasource.libsonnet b/ops/monitoring/lib/grafonnet/template/datasource.libsonnet
new file mode 100644
index 0000000..0bdaf83
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/template/datasource.libsonnet
@@ -0,0 +1,36 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    hide=0,
+    includeAll=false,
+    label=null,
+    multi=false,
+    name=null,
+    query=null,
+    refresh=1,
+    regex=null,
+    skipUrlSync=false,
+  ):: {
+    [if hide != null then 'hide']: hide,
+    [if includeAll != null then 'includeAll']: includeAll,
+    [if label != null then 'label']: label,
+    [if multi != null then 'multi']: multi,
+    [if name != null then 'name']: name,
+    [if query != null then 'query']: query,
+    [if refresh != null then 'refresh']: refresh,
+    [if regex != null then 'regex']: regex,
+    [if skipUrlSync != null then 'skipUrlSync']: skipUrlSync,
+    type: 'datasource',
+
+    setCurrent(
+      selected=false,
+      text=null,
+      value=null,
+    ):: self {}
+        + { current+: { [if selected != null then 'selected']: selected } }
+        + { current+: { [if text != null then 'text']: text } }
+        + { current+: { [if value != null then 'value']: value } },
+
+  },
+}
diff --git a/ops/monitoring/lib/grafonnet/template/query.libsonnet b/ops/monitoring/lib/grafonnet/template/query.libsonnet
new file mode 100644
index 0000000..951cef7
--- /dev/null
+++ b/ops/monitoring/lib/grafonnet/template/query.libsonnet
@@ -0,0 +1,52 @@
+// This file was generated by https://github.com/grafana/dashboard-spec
+
+{
+  new(
+    allValue=null,
+    datasource=null,
+    definition=null,
+    hide=0,
+    includeAll=false,
+    label=null,
+    multi=false,
+    name=null,
+    query=null,
+    refresh=0,
+    regex=null,
+    skipUrlSync=false,
+    sort=0,
+    tagValuesQuery=null,
+    tags=null,
+    tagsQuery=null,
+    useTags=false,
+  ):: {
+    [if allValue != null then 'allValue']: allValue,
+    [if datasource != null then 'datasource']: datasource,
+    [if definition != null then 'definition']: definition,
+    [if hide != null then 'hide']: hide,
+    [if includeAll != null then 'includeAll']: includeAll,
+    [if label != null then 'label']: label,
+    [if multi != null then 'multi']: multi,
+    [if name != null then 'name']: name,
+    [if query != null then 'query']: query,
+    [if refresh != null then 'refresh']: refresh,
+    [if regex != null then 'regex']: regex,
+    [if skipUrlSync != null then 'skipUrlSync']: skipUrlSync,
+    [if sort != null then 'sort']: sort,
+    [if tagValuesQuery != null then 'tagValuesQuery']: tagValuesQuery,
+    [if tags != null then 'tags']: tags,
+    [if tagsQuery != null then 'tagsQuery']: tagsQuery,
+    [if useTags != null then 'useTags']: useTags,
+    type: 'query',
+
+    setCurrent(
+      selected=null,
+      text=null,
+      value=null,
+    ):: self {}
+        + { current+: { [if selected != null then 'selected']: selected } }
+        + { current+: { [if text != null then 'text']: text } }
+        + { current+: { [if value != null then 'value']: value } },
+
+  },
+}
