1 local g = import 'grafonnet/grafana.libsonnet';
2 local u = import 'utils.libsonnet';
4 (import 'utils.libsonnet') {
6 local RbdDetailsPanel(title, formatY1, expr1, expr2, x, y, w, h) =
21 $.addTargetSchema(expr1,
23 $.addTargetSchema(expr2, '{{pool}} Read'),
25 ) + { gridPos: { x: x, y: y, w: w, h: h } };
29 'Detailed Performance of RBD Images (IOPS/Throughput/Latency)',
34 $._config.dashboardTags,
38 $.addAnnotationSchema(
43 'rgba(0, 211, 255, 1)',
44 'Annotations & Alerts',
49 type='grafana', id='grafana', name='Grafana', version='5.3.3'
52 type='panel', id='graph', name='Graph', version='5.0.0'
55 g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
58 $.addClusterTemplate()
64 $.addTemplateSchema('pool',
74 $.addTemplateSchema('image',
76 'label_values(image)',
87 'rate(ceph_rbd_write_ops{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers()
89 'rate(ceph_rbd_read_ops{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
98 'rate(ceph_rbd_write_bytes{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
99 'rate(ceph_rbd_read_bytes{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])' % $.matchers(),
109 rate(ceph_rbd_write_latency_sum{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval]) /
110 rate(ceph_rbd_write_latency_count{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])
113 rate(ceph_rbd_read_latency_sum{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval]) /
114 rate(ceph_rbd_read_latency_count{%(matchers)s, pool="$pool", image="$image"}[$__rate_interval])
123 local RbdOverviewPanel(title,
133 $.graphPanelSchema({},
147 $.addTargetSchema(expr1,
149 $.addTargetSchema(expr2,
152 ) + { gridPos: { x: x, y: y, w: w, h: h } };
161 $._config.dashboardTags + ['overview'],
165 $.addAnnotationSchema(
170 'rgba(0, 211, 255, 1)',
171 'Annotations & Alerts',
176 type='grafana', id='grafana', name='Grafana', version='5.4.2'
179 type='panel', id='graph', name='Graph', version='5.0.0'
182 type='datasource', id='prometheus', name='Prometheus', version='5.0.0'
185 type='panel', id='table', name='Table', version='5.0.0'
188 g.template.datasource('datasource', 'prometheus', 'default', label='Data Source')
191 $.addClusterTemplate()
200 'round(sum(rate(ceph_rbd_write_ops{%(matchers)s}[$__rate_interval])))' % $.matchers(),
201 'round(sum(rate(ceph_rbd_read_ops{%(matchers)s}[$__rate_interval])))' % $.matchers(),
212 'round(sum(rate(ceph_rbd_write_bytes{%(matchers)s}[$__rate_interval])))' % $.matchers(),
213 'round(sum(rate(ceph_rbd_read_bytes{%(matchers)s}[$__rate_interval])))' % $.matchers(),
226 sum(rate(ceph_rbd_write_latency_sum{%(matchers)s}[$__rate_interval])) /
227 sum(rate(ceph_rbd_write_latency_count{%(matchers)s}[$__rate_interval]))
232 sum(rate(ceph_rbd_read_latency_sum{%(matchers)s}[$__rate_interval])) /
233 sum(rate(ceph_rbd_read_latency_count{%(matchers)s}[$__rate_interval]))
246 { col: 3, desc: true },
248 $.overviewStyle('Pool', 'pool', 'string', 'short'),
249 $.overviewStyle('Image', 'image', 'string', 'short'),
250 $.overviewStyle('IOPS', 'Value', 'number', 'iops'),
251 $.overviewStyle('', '/.*/', 'hidden', 'short'),
262 rate(ceph_rbd_write_ops{%(matchers)s}[$__rate_interval]) +
263 on (image, pool, namespace) rate(ceph_rbd_read_ops{%(matchers)s}[$__rate_interval])
273 ) + { gridPos: { x: 0, y: 7, w: 8, h: 7 } },
277 { col: 3, desc: true },
279 $.overviewStyle('Pool', 'pool', 'string', 'short'),
280 $.overviewStyle('Image', 'image', 'string', 'short'),
281 $.overviewStyle('Throughput', 'Value', 'number', 'Bps'),
282 $.overviewStyle('', '/.*/', 'hidden', 'short'),
284 'Highest Throughput',
293 rate(ceph_rbd_read_bytes{%(matchers)s}[$__rate_interval]) +
294 rate(ceph_rbd_write_bytes{%(matchers)s}[$__rate_interval])
295 ) by (pool, image, namespace)
304 ) + { gridPos: { x: 8, y: 7, w: 8, h: 7 } },
308 { col: 3, desc: true },
310 $.overviewStyle('Pool', 'pool', 'string', 'short'),
311 $.overviewStyle('Image', 'image', 'string', 'short'),
312 $.overviewStyle('Latency', 'Value', 'number', 'ns'),
313 $.overviewStyle('', '/.*/', 'hidden', 'short'),
323 rate(ceph_rbd_write_latency_sum{%(matchers)s}[$__rate_interval]) /
324 clamp_min(rate(ceph_rbd_write_latency_count{%(matchers)s}[$__rate_interval]), 1) +
325 rate(ceph_rbd_read_latency_sum{%(matchers)s}[$__rate_interval]) /
326 clamp_min(rate(ceph_rbd_read_latency_count{%(matchers)s}[$__rate_interval]), 1)
327 ) by (pool, image, namespace)
335 ) + { gridPos: { x: 16, y: 7, w: 8, h: 7 } },