Merge ~ubuntu-docker-images/ubuntu-docker-images/+git/grafana:readme into ~ubuntu-docker-images/ubuntu-docker-images/+git/grafana:edge

Proposed by Lucas Kanashiro
Status: Merged
Merged at revision: 0462c0caa306e1d4201250bc93662afe388d497b
Proposed branch: ~ubuntu-docker-images/ubuntu-docker-images/+git/grafana:readme
Merge into: ~ubuntu-docker-images/ubuntu-docker-images/+git/grafana:edge
Diff against target: 2633 lines (+2585/-0)
8 files modified
HACKING.md (+14/-0)
README.md.oci (+149/-0)
examples/README.md (+48/-0)
examples/config/dashboard.yml (+12/-0)
examples/config/datasource.yml (+11/-0)
examples/config/system-stats-dashboard.json (+2282/-0)
examples/docker-compose.yml (+11/-0)
examples/grafana-deployment.yml (+58/-0)
Reviewer Review Type Date Requested Status
Lucas Kanashiro Approve
Sergio Durigan Junior Needs Fixing
Review via email: mp+393887@code.launchpad.net

Description of the change

Improve README.

To post a comment you must log in.
Revision history for this message
Sergio Durigan Junior (sergiodj) wrote :

Thanks for the MP, Lucas. I've found a few nits and small issues that need fixing. Feel free to approve & push it once you address them.

review: Needs Fixing
Revision history for this message
Bryce Harrington (bryce) wrote :

A handful of copyedit suggestions...

Revision history for this message
Lucas Kanashiro (lucaskanashiro) wrote :

Thanks Sergio and Bryce! The points you raised were addressed. I am going to approve and merge this.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/HACKING.md b/HACKING.md
2new file mode 100644
3index 0000000..64f8ea3
4--- /dev/null
5+++ b/HACKING.md
6@@ -0,0 +1,14 @@
7+# Contributing
8+
9+In order to contribute to the Grafana OCI image do the following:
10+
11+* Create a new branch.
12+* Make your changes. Keep your commits logically separated. If it is fixing a bug do not forget to mention it in the commit message.
13+* Build a new image with your changes. You can use the following command:
14+
15+```
16+$ docker build -t squeakywheel/grafana:test -f Dockerfile .
17+```
18+
19+* Test the new image. Run it in some way that exercises your changes, you can also check the README.md file.
20+* If everything goes well submit a merge proposal.
21diff --git a/README.md.oci b/README.md.oci
22new file mode 100644
23index 0000000..99aa87e
24--- /dev/null
25+++ b/README.md.oci
26@@ -0,0 +1,149 @@
27+# Grafana | Ubuntu
28+
29+## About Grafana
30+
31+Grafana is a feature rich metrics dashboard and graph editor for Cloudwatch, Elasticsearch, Graphite, InfluxDB, OpenTSB, Prometheus, and Hosted Metrics.
32+
33+## Tags
34+
35+- `7.0.3-focal`, `7.0.3`, `7.0-focal`, `7.0`, `7-focal`, `7`, `focal`, `beta` - **/!\ this is a beta release**
36+
37+### Architectures supported
38+
39+- `amd64`, `arm64`, `ppc64el`, `s390x`
40+
41+## Usage
42+
43+### Docker CLI
44+
45+```sh
46+$ docker run --name grafana -p 3000:3000 -d -e TZ=Europe/London squeakywheel/grafana:edge
47+```
48+
49+Since containers are ephemeral, you may want to use persistent data rather than initializing a new database for each newly launched container. To do this, you can use docker volumes:
50+
51+```sh
52+$ docker run --name grafana -v /path/to/persisted/data:/var/lib/grafana squeakywheel/grafana:edge
53+```
54+
55+#### Parameters
56+
57+| Parameter | Description |
58+|---|---|
59+| `-e TZ=UTC` | Timezone. |
60+| `-v /path/to/grafana/provisioning/files/:/etc/grafana/provisioning/` | Pass a directory with files to provision a Grafana `datasource` and `dashboard`. |
61+
62+#### Debugging
63+
64+In case you need to debug what it is happening with the container you can run `docker logs <name_of_the_container>`. For a better experience while checking logs pass `-e GF_LOG_MODE="console file"` when you run the container. Alternatively, for an interactive shell run:
65+
66+```sh
67+$ docker exec -it <name_of_the_container> /bin/bash
68+```
69+
70+## Deploy with Kubernetes
71+
72+You can use your favorite Kubernetes distribution; if you don't have one, consider [installing MicroK8s](https://microk8s.io/).
73+
74+With microk8s running, enable the `dns` and `storage` add-ons:
75+```sh
76+$ microk8s enable dns storage
77+ ```
78+
79+Create a configmap for the provisioning configuration files (check the upstream documentation [here](https://grafana.com/docs/grafana/latest/administration/provisioning/) on how to provision a dashboard):
80+
81+```sh
82+$ microk8s kubectl create configmap grafana-config --from-file=grafana-datasource=config/datasource.yml --from-file=grafana-dashboard-definition=config/dashboard.yml --from-file=grafana-dashboard=config/system-stats-dashboard.json
83+```
84+
85+Use the sample deployment yaml provided [here](https://git.launchpad.net/~canonical-server/ubuntu-server-oci/+git/grafana/plain/examples/grafana-deployment.yml).
86+
87+<details>
88+ <summary>Apply the `grafana-deployment.yml` (click to expand)</summary>
89+
90+```yaml
91+# grafana-deployment.yml
92+---
93+apiVersion: apps/v1
94+kind: Deployment
95+metadata:
96+ name: grafana-deployment
97+spec:
98+ replicas: 1
99+ selector:
100+ matchLabels:
101+ app: grafana
102+ template:
103+ metadata:
104+ labels:
105+ app: grafana
106+ spec:
107+ containers:
108+ - name: grafana
109+ image: squeakywheel/grafana:edge
110+ volumeMounts:
111+ - name: grafana-config-volume
112+ mountPath: /etc/grafana/provisioning/datasources/datasource.yml
113+ subPath: datasource.yml
114+ - name: grafana-config-volume
115+ mountPath: /etc/grafana/provisioning/dashboards/dashboard.yml
116+ subPath: dashboard.yml
117+ - name: grafana-config-volume
118+ mountPath: /etc/grafana/provisioning/dashboards/system-stats-dashboard.json
119+ subPath: system-stats-dashboard.json
120+ ports:
121+ - containerPort: 3000
122+ name: grafana
123+ protocol: TCP
124+ volumes:
125+ - name: grafana-config-volume
126+ configMap:
127+ name: grafana-config
128+ items:
129+ - key: grafana-datasource
130+ path: datasource.yml
131+ - key: grafana-dashboard-definition
132+ path: dashboard.yml
133+ - key: grafana-dashboard
134+ path: system-stats-dashboard.json
135+---
136+apiVersion: v1
137+kind: Service
138+metadata:
139+ name: grafana-service
140+spec:
141+ type: NodePort
142+ selector:
143+ app: grafana
144+ ports:
145+ - protocol: TCP
146+ port: 3000
147+ targetPort: 3000
148+ nodePort: 30000
149+ name: grafana
150+```
151+
152+</details>
153+
154+```sh
155+$ microk8s kubectl apply -f grafana-deployment.yml
156+```
157+
158+You will now be able to connect to the Grafana on `http://localhost:30000`.
159+
160+## Bugs and Features request
161+
162+If you find a bug in our image or want to request a specific feature file a bug here:
163+
164+https://bugs.launchpad.net/ubuntu-server-oci/+filebug
165+
166+In the title of the bug add `grafana: <reason>`.
167+
168+Make sure to include:
169+
170+* The digest of the image you are using, you can find it using this command replacing `<tag>` with the one you used to run the image:
171+```sh
172+$ docker images --no-trunc --quiet squeakywheel/grafana:<tag>
173+```
174+* Reproduction steps for the deployment
175+* If it is a feature request, please provide as much detail as possible
176diff --git a/examples/README.md b/examples/README.md
177new file mode 100644
178index 0000000..45b2d60
179--- /dev/null
180+++ b/examples/README.md
181@@ -0,0 +1,48 @@
182+# Running the examples
183+
184+## docker-compose
185+
186+Install `docker-compose` from the Ubuntu archive:
187+
188+```
189+$ sudo apt install -y docker-compose
190+```
191+
192+Call `docker-compose` from the examples directory:
193+
194+```
195+$ docker-compose up -d
196+```
197+
198+Grafana will be running and available via port `3000` on your host. The user is `admin` and the password `admin`. The dashboard will not be fully functional because we provisioned the datasource but we did not hook up any Prometheus nor Telegraf instance to provide data.
199+
200+To stop it run:
201+
202+```
203+$ docker-compose down
204+```
205+
206+## Microk8s
207+
208+With microk8s running, enable the `dns` and `storage` add-ons:
209+
210+```
211+$ microk8s enable dns storage
212+```
213+
214+Create a configmap for the configuration files:
215+
216+```
217+$ microk8s kubectl create configmap grafana-config \
218+ --from-file=grafana-datasource=config/datasource.yml \
219+ --from-file=grafana-dashboard-definition=config/dashboard.yml \
220+ --from-file=grafana-dashboard=config/system-stats-dashboard.json
221+```
222+
223+Apply the `grafana-deployment.yml`:
224+
225+```
226+$ microk8s kubectl apply -f grafana-deployment.yml
227+```
228+
229+Grafana will be running and available via port `30000` on your host. The user is `admin` and the password `admin`. The dashboard will not be fully functional because we provisioned the datasource but we did not hook up any Prometheus nor Telegraf instance to provide data.
230diff --git a/examples/config/dashboard.yml b/examples/config/dashboard.yml
231new file mode 100644
232index 0000000..0f882d3
233--- /dev/null
234+++ b/examples/config/dashboard.yml
235@@ -0,0 +1,12 @@
236+apiVersion: 1
237+
238+providers:
239+ - name: dashboard
240+ orgId: 1
241+ folder: ''
242+ type: file
243+ disableDeletion: false
244+ editable: true
245+ allowUiUpdates: true
246+ options:
247+ path: /etc/grafana/provisioning/dashboards
248diff --git a/examples/config/datasource.yml b/examples/config/datasource.yml
249new file mode 100644
250index 0000000..0b62b9c
251--- /dev/null
252+++ b/examples/config/datasource.yml
253@@ -0,0 +1,11 @@
254+apiVersion: 1
255+
256+datasources:
257+ - name: prometheus
258+ type: prometheus
259+ access: proxy
260+ orgId: 1
261+ url: http://prometheus:9090
262+ basicAuth: false
263+ isDefault: true
264+ editable: true
265diff --git a/examples/config/system-stats-dashboard.json b/examples/config/system-stats-dashboard.json
266new file mode 100644
267index 0000000..c93f194
268--- /dev/null
269+++ b/examples/config/system-stats-dashboard.json
270@@ -0,0 +1,2282 @@
271+{
272+ "annotations": {
273+ "list": [
274+ {
275+ "builtIn": 1,
276+ "datasource": "prometheus",
277+ "enable": true,
278+ "hide": true,
279+ "iconColor": "rgba(0, 211, 255, 1)",
280+ "name": "Annotations & Alerts",
281+ "type": "dashboard"
282+ }
283+ ]
284+ },
285+ "editable": true,
286+ "gnetId": null,
287+ "graphTooltip": 1,
288+ "id": 1,
289+ "iteration": 1602280737314,
290+ "links": [],
291+ "panels": [
292+ {
293+ "collapsed": false,
294+ "datasource": "prometheus",
295+ "gridPos": {
296+ "h": 1,
297+ "w": 24,
298+ "x": 0,
299+ "y": 0
300+ },
301+ "id": 287,
302+ "panels": [],
303+ "repeat": null,
304+ "title": "Load/CPU/Memory/Swap",
305+ "type": "row"
306+ },
307+ {
308+ "aliasColors": {},
309+ "bars": false,
310+ "dashLength": 10,
311+ "dashes": false,
312+ "datasource": "prometheus",
313+ "description": "",
314+ "fieldConfig": {
315+ "defaults": {
316+ "custom": {},
317+ "links": []
318+ },
319+ "overrides": []
320+ },
321+ "fill": 1,
322+ "fillGradient": 0,
323+ "gridPos": {
324+ "h": 9,
325+ "w": 12,
326+ "x": 0,
327+ "y": 1
328+ },
329+ "height": "",
330+ "hiddenSeries": false,
331+ "id": 1,
332+ "legend": {
333+ "alignAsTable": true,
334+ "avg": false,
335+ "current": true,
336+ "max": true,
337+ "min": true,
338+ "show": true,
339+ "total": false,
340+ "values": true
341+ },
342+ "lines": true,
343+ "linewidth": 1,
344+ "links": [],
345+ "nullPointMode": "null",
346+ "options": {
347+ "alertThreshold": true
348+ },
349+ "percentage": false,
350+ "pluginVersion": "7.2.0",
351+ "pointradius": 5,
352+ "points": false,
353+ "renderer": "flot",
354+ "seriesOverrides": [],
355+ "spaceLength": 10,
356+ "stack": false,
357+ "steppedLine": false,
358+ "targets": [
359+ {
360+ "expr": "system_load1{host=~\"$host\"}",
361+ "format": "time_series",
362+ "interval": "",
363+ "intervalFactor": 2,
364+ "legendFormat": "{{host}} 1min",
365+ "refId": "A",
366+ "step": 60
367+ },
368+ {
369+ "expr": "system_load5{host=~\"$host\"}",
370+ "format": "time_series",
371+ "interval": "",
372+ "intervalFactor": 2,
373+ "legendFormat": "{{host}} 5min",
374+ "refId": "B",
375+ "step": 60
376+ },
377+ {
378+ "expr": "system_load15{host=~\"$host\"}",
379+ "format": "time_series",
380+ "interval": "",
381+ "intervalFactor": 2,
382+ "legendFormat": "{{host}} 15min",
383+ "refId": "C",
384+ "step": 60
385+ }
386+ ],
387+ "thresholds": [],
388+ "timeFrom": null,
389+ "timeRegions": [],
390+ "timeShift": null,
391+ "title": "Load average",
392+ "tooltip": {
393+ "shared": true,
394+ "sort": 0,
395+ "value_type": "individual"
396+ },
397+ "type": "graph",
398+ "xaxis": {
399+ "buckets": null,
400+ "mode": "time",
401+ "name": null,
402+ "show": true,
403+ "values": []
404+ },
405+ "yaxes": [
406+ {
407+ "format": "short",
408+ "label": null,
409+ "logBase": 1,
410+ "max": null,
411+ "min": null,
412+ "show": true
413+ },
414+ {
415+ "format": "short",
416+ "label": null,
417+ "logBase": 1,
418+ "max": null,
419+ "min": null,
420+ "show": true
421+ }
422+ ],
423+ "yaxis": {
424+ "align": false,
425+ "alignLevel": null
426+ }
427+ },
428+ {
429+ "aliasColors": {},
430+ "bars": false,
431+ "dashLength": 10,
432+ "dashes": false,
433+ "datasource": "prometheus",
434+ "fieldConfig": {
435+ "defaults": {
436+ "custom": {},
437+ "links": []
438+ },
439+ "overrides": []
440+ },
441+ "fill": 1,
442+ "fillGradient": 0,
443+ "gridPos": {
444+ "h": 18,
445+ "w": 11,
446+ "x": 12,
447+ "y": 1
448+ },
449+ "hiddenSeries": false,
450+ "id": 364,
451+ "legend": {
452+ "avg": false,
453+ "current": false,
454+ "max": false,
455+ "min": false,
456+ "show": true,
457+ "total": false,
458+ "values": false
459+ },
460+ "lines": true,
461+ "linewidth": 1,
462+ "nullPointMode": "null",
463+ "options": {
464+ "alertThreshold": true
465+ },
466+ "percentage": false,
467+ "pluginVersion": "7.2.0",
468+ "pointradius": 2,
469+ "points": false,
470+ "renderer": "flot",
471+ "seriesOverrides": [],
472+ "spaceLength": 10,
473+ "stack": false,
474+ "steppedLine": false,
475+ "targets": [
476+ {
477+ "expr": "mem_dirty{host=~\"$host\"}",
478+ "instant": false,
479+ "interval": "",
480+ "legendFormat": "",
481+ "refId": "A"
482+ },
483+ {
484+ "expr": "mem_shared{host=~\"$host\"}",
485+ "interval": "",
486+ "legendFormat": "",
487+ "refId": "B"
488+ },
489+ {
490+ "expr": "mem_active{host=~\"$host\"}",
491+ "interval": "",
492+ "legendFormat": "",
493+ "refId": "C"
494+ },
495+ {
496+ "expr": "mem_buffered{host=~\"$host\"}",
497+ "interval": "",
498+ "legendFormat": "",
499+ "refId": "D"
500+ },
501+ {
502+ "expr": "mem_available{host=~\"$host\"}",
503+ "interval": "",
504+ "legendFormat": "",
505+ "refId": "E"
506+ },
507+ {
508+ "expr": "mem_cached{host=~\"$host\"}",
509+ "interval": "",
510+ "legendFormat": "",
511+ "refId": "F"
512+ },
513+ {
514+ "expr": "mem_vmalloc_used{host=~\"$host\"}",
515+ "interval": "",
516+ "legendFormat": "",
517+ "refId": "H"
518+ },
519+ {
520+ "expr": "mem_total{host=~\"$host\"}",
521+ "interval": "",
522+ "legendFormat": "",
523+ "refId": "I"
524+ }
525+ ],
526+ "thresholds": [],
527+ "timeFrom": null,
528+ "timeRegions": [],
529+ "timeShift": null,
530+ "title": "Mem stats",
531+ "tooltip": {
532+ "shared": true,
533+ "sort": 0,
534+ "value_type": "individual"
535+ },
536+ "type": "graph",
537+ "xaxis": {
538+ "buckets": null,
539+ "mode": "time",
540+ "name": null,
541+ "show": true,
542+ "values": []
543+ },
544+ "yaxes": [
545+ {
546+ "format": "bytes",
547+ "label": null,
548+ "logBase": 1,
549+ "max": null,
550+ "min": null,
551+ "show": true
552+ },
553+ {
554+ "format": "short",
555+ "label": null,
556+ "logBase": 1,
557+ "max": null,
558+ "min": null,
559+ "show": true
560+ }
561+ ],
562+ "yaxis": {
563+ "align": false,
564+ "alignLevel": null
565+ }
566+ },
567+ {
568+ "aliasColors": {},
569+ "bars": false,
570+ "dashLength": 10,
571+ "dashes": false,
572+ "datasource": "prometheus",
573+ "description": "",
574+ "fieldConfig": {
575+ "defaults": {
576+ "custom": {},
577+ "links": []
578+ },
579+ "overrides": []
580+ },
581+ "fill": 6,
582+ "fillGradient": 0,
583+ "gridPos": {
584+ "h": 9,
585+ "w": 12,
586+ "x": 0,
587+ "y": 10
588+ },
589+ "height": "",
590+ "hiddenSeries": false,
591+ "id": 4,
592+ "legend": {
593+ "alignAsTable": true,
594+ "avg": false,
595+ "current": true,
596+ "max": true,
597+ "min": true,
598+ "show": true,
599+ "total": false,
600+ "values": true
601+ },
602+ "lines": true,
603+ "linewidth": 1,
604+ "links": [],
605+ "nullPointMode": "null",
606+ "options": {
607+ "alertThreshold": true
608+ },
609+ "percentage": false,
610+ "pluginVersion": "7.2.0",
611+ "pointradius": 5,
612+ "points": false,
613+ "renderer": "flot",
614+ "seriesOverrides": [],
615+ "spaceLength": 10,
616+ "stack": false,
617+ "steppedLine": false,
618+ "targets": [
619+ {
620+ "expr": "mem_used{host=~\"$host\"}",
621+ "format": "time_series",
622+ "interval": "",
623+ "intervalFactor": 2,
624+ "legendFormat": "{{host}} Used",
625+ "refId": "A",
626+ "step": 60
627+ },
628+ {
629+ "expr": "mem_buffered{host=~\"$host\"} + mem_cached{host=~\"$host\"}",
630+ "format": "time_series",
631+ "interval": "",
632+ "intervalFactor": 2,
633+ "legendFormat": "{{host}} Buffers+cache",
634+ "refId": "B",
635+ "step": 60
636+ },
637+ {
638+ "expr": "mem_free{host=~\"$host\"}",
639+ "format": "time_series",
640+ "interval": "",
641+ "intervalFactor": 2,
642+ "legendFormat": "{{host}} Free",
643+ "refId": "C",
644+ "step": 60
645+ }
646+ ],
647+ "thresholds": [],
648+ "timeFrom": null,
649+ "timeRegions": [],
650+ "timeShift": null,
651+ "title": "Memory",
652+ "tooltip": {
653+ "shared": true,
654+ "sort": 0,
655+ "value_type": "individual"
656+ },
657+ "type": "graph",
658+ "xaxis": {
659+ "buckets": null,
660+ "mode": "time",
661+ "name": null,
662+ "show": true,
663+ "values": []
664+ },
665+ "yaxes": [
666+ {
667+ "format": "bytes",
668+ "label": null,
669+ "logBase": 1,
670+ "max": null,
671+ "min": "0",
672+ "show": true
673+ },
674+ {
675+ "format": "short",
676+ "label": null,
677+ "logBase": 1,
678+ "max": null,
679+ "min": null,
680+ "show": true
681+ }
682+ ],
683+ "yaxis": {
684+ "align": false,
685+ "alignLevel": null
686+ }
687+ },
688+ {
689+ "aliasColors": {},
690+ "bars": false,
691+ "dashLength": 10,
692+ "dashes": false,
693+ "datasource": "prometheus",
694+ "editable": true,
695+ "error": false,
696+ "fieldConfig": {
697+ "defaults": {
698+ "custom": {},
699+ "links": []
700+ },
701+ "overrides": []
702+ },
703+ "fill": 4,
704+ "fillGradient": 0,
705+ "grid": {},
706+ "gridPos": {
707+ "h": 15,
708+ "w": 24,
709+ "x": 0,
710+ "y": 19
711+ },
712+ "height": "310px",
713+ "hiddenSeries": false,
714+ "id": 5,
715+ "legend": {
716+ "alignAsTable": false,
717+ "avg": false,
718+ "current": true,
719+ "max": false,
720+ "min": false,
721+ "show": true,
722+ "sortDesc": true,
723+ "total": false,
724+ "values": true
725+ },
726+ "lines": true,
727+ "linewidth": 2,
728+ "links": [],
729+ "nullPointMode": "null",
730+ "options": {
731+ "alertThreshold": true
732+ },
733+ "percentage": false,
734+ "pluginVersion": "7.2.0",
735+ "pointradius": 5,
736+ "points": false,
737+ "renderer": "flot",
738+ "seriesOverrides": [],
739+ "spaceLength": 10,
740+ "stack": true,
741+ "steppedLine": false,
742+ "targets": [
743+ {
744+ "expr": "cpu_usage_user{cpu=\"cpu-total\",host=~\"$host\"}",
745+ "format": "time_series",
746+ "interval": "",
747+ "intervalFactor": 2,
748+ "legendFormat": "{{host}} user",
749+ "refId": "A",
750+ "step": 30
751+ },
752+ {
753+ "expr": "cpu_usage_system{cpu=\"cpu-total\", host=~\"$host\"}",
754+ "format": "time_series",
755+ "interval": "",
756+ "intervalFactor": 2,
757+ "legendFormat": "{{host}} system",
758+ "refId": "G",
759+ "step": 30
760+ },
761+ {
762+ "expr": "cpu_usage_iowait{cpu=\"cpu-total\",host=~\"$host\"}",
763+ "format": "time_series",
764+ "interval": "",
765+ "intervalFactor": 2,
766+ "legendFormat": "{{host}} iowait",
767+ "refId": "C",
768+ "step": 30
769+ },
770+ {
771+ "expr": "cpu_usage_nice{cpu=\"cpu-total\",host=~\"$host\"}",
772+ "format": "time_series",
773+ "interval": "",
774+ "intervalFactor": 2,
775+ "legendFormat": "{{host}} nice",
776+ "refId": "D",
777+ "step": 30
778+ },
779+ {
780+ "expr": "cpu_usage_softirq{cpu=\"cpu-total\",host=~\"$host\"}",
781+ "format": "time_series",
782+ "interval": "",
783+ "intervalFactor": 2,
784+ "legendFormat": "{{host}} softirq",
785+ "refId": "E",
786+ "step": 30
787+ },
788+ {
789+ "expr": "cpu_usage_irq{cpu=\"cpu-total\",host=~\"$host\"}",
790+ "format": "time_series",
791+ "interval": "",
792+ "intervalFactor": 2,
793+ "legendFormat": "{{host}} irq",
794+ "refId": "F",
795+ "step": 30
796+ },
797+ {
798+ "expr": "cpu_usage_guest{cpu=\"cpu-total\", host=~\"$host\"}",
799+ "format": "time_series",
800+ "interval": "",
801+ "intervalFactor": 2,
802+ "legendFormat": "{{host}} guest",
803+ "refId": "H",
804+ "step": 30
805+ },
806+ {
807+ "expr": "cpu_usage_guest_nice{cpu=\"cpu-total\", host=~\"$host\"}",
808+ "format": "time_series",
809+ "interval": "",
810+ "intervalFactor": 2,
811+ "legendFormat": "{{host}} guest_nice",
812+ "refId": "I",
813+ "step": 30
814+ },
815+ {
816+ "expr": "cpu_usage_idle{cpu=\"cpu-total\", host=~\"$host\"}",
817+ "format": "time_series",
818+ "interval": "",
819+ "intervalFactor": 2,
820+ "legendFormat": "{{host}} idle",
821+ "refId": "B",
822+ "step": 30
823+ }
824+ ],
825+ "thresholds": [],
826+ "timeFrom": null,
827+ "timeRegions": [],
828+ "timeShift": null,
829+ "title": "CPU",
830+ "tooltip": {
831+ "msResolution": false,
832+ "shared": true,
833+ "sort": 0,
834+ "value_type": "individual"
835+ },
836+ "type": "graph",
837+ "xaxis": {
838+ "buckets": null,
839+ "mode": "time",
840+ "name": null,
841+ "show": true,
842+ "values": []
843+ },
844+ "yaxes": [
845+ {
846+ "format": "percent",
847+ "label": "",
848+ "logBase": 1,
849+ "max": null,
850+ "min": 0,
851+ "show": true
852+ },
853+ {
854+ "format": "short",
855+ "label": null,
856+ "logBase": 1,
857+ "max": null,
858+ "min": null,
859+ "show": true
860+ }
861+ ],
862+ "yaxis": {
863+ "align": false,
864+ "alignLevel": null
865+ }
866+ },
867+ {
868+ "aliasColors": {},
869+ "bars": false,
870+ "dashLength": 10,
871+ "dashes": false,
872+ "datasource": "prometheus",
873+ "editable": true,
874+ "error": false,
875+ "fieldConfig": {
876+ "defaults": {
877+ "custom": {},
878+ "links": []
879+ },
880+ "overrides": []
881+ },
882+ "fill": 4,
883+ "fillGradient": 0,
884+ "grid": {},
885+ "gridPos": {
886+ "h": 9,
887+ "w": 12,
888+ "x": 0,
889+ "y": 34
890+ },
891+ "height": "310px",
892+ "hiddenSeries": false,
893+ "id": 338,
894+ "legend": {
895+ "alignAsTable": false,
896+ "avg": false,
897+ "current": true,
898+ "max": false,
899+ "min": false,
900+ "show": true,
901+ "sortDesc": true,
902+ "total": false,
903+ "values": true
904+ },
905+ "lines": true,
906+ "linewidth": 2,
907+ "links": [],
908+ "nullPointMode": "null",
909+ "options": {
910+ "alertThreshold": true
911+ },
912+ "percentage": false,
913+ "pluginVersion": "7.2.0",
914+ "pointradius": 5,
915+ "points": false,
916+ "renderer": "flot",
917+ "seriesOverrides": [],
918+ "spaceLength": 10,
919+ "stack": true,
920+ "steppedLine": false,
921+ "targets": [
922+ {
923+ "expr": "cpu_usage_steal{cpu=\"cpu-total\",host=~\"$host\"}",
924+ "format": "time_series",
925+ "interval": "",
926+ "intervalFactor": 2,
927+ "legendFormat": "{{host}} steal",
928+ "refId": "A",
929+ "step": 30
930+ }
931+ ],
932+ "thresholds": [],
933+ "timeFrom": null,
934+ "timeRegions": [],
935+ "timeShift": null,
936+ "title": "CPU steal",
937+ "tooltip": {
938+ "msResolution": false,
939+ "shared": true,
940+ "sort": 0,
941+ "value_type": "individual"
942+ },
943+ "type": "graph",
944+ "xaxis": {
945+ "buckets": null,
946+ "mode": "time",
947+ "name": null,
948+ "show": true,
949+ "values": []
950+ },
951+ "yaxes": [
952+ {
953+ "format": "percent",
954+ "label": "",
955+ "logBase": 1,
956+ "max": null,
957+ "min": 0,
958+ "show": true
959+ },
960+ {
961+ "format": "short",
962+ "label": null,
963+ "logBase": 1,
964+ "max": null,
965+ "min": null,
966+ "show": true
967+ }
968+ ],
969+ "yaxis": {
970+ "align": false,
971+ "alignLevel": null
972+ }
973+ },
974+ {
975+ "aliasColors": {},
976+ "bars": false,
977+ "dashLength": 10,
978+ "dashes": false,
979+ "datasource": "prometheus",
980+ "description": "",
981+ "fieldConfig": {
982+ "defaults": {
983+ "custom": {},
984+ "links": []
985+ },
986+ "overrides": []
987+ },
988+ "fill": 1,
989+ "fillGradient": 0,
990+ "gridPos": {
991+ "h": 9,
992+ "w": 12,
993+ "x": 12,
994+ "y": 34
995+ },
996+ "hiddenSeries": false,
997+ "id": 41,
998+ "legend": {
999+ "alignAsTable": false,
1000+ "avg": false,
1001+ "current": false,
1002+ "max": false,
1003+ "min": false,
1004+ "show": true,
1005+ "total": false,
1006+ "values": false
1007+ },
1008+ "lines": true,
1009+ "linewidth": 1,
1010+ "links": [],
1011+ "nullPointMode": "null",
1012+ "options": {
1013+ "alertThreshold": true
1014+ },
1015+ "percentage": false,
1016+ "pluginVersion": "7.2.0",
1017+ "pointradius": 5,
1018+ "points": false,
1019+ "renderer": "flot",
1020+ "seriesOverrides": [],
1021+ "spaceLength": 10,
1022+ "stack": false,
1023+ "steppedLine": false,
1024+ "targets": [
1025+ {
1026+ "expr": "swap_used_percent{host=~\"$host\"}",
1027+ "format": "time_series",
1028+ "interval": "",
1029+ "intervalFactor": 2,
1030+ "legendFormat": "{{host}}",
1031+ "refId": "A",
1032+ "step": 60
1033+ }
1034+ ],
1035+ "thresholds": [],
1036+ "timeFrom": null,
1037+ "timeRegions": [],
1038+ "timeShift": null,
1039+ "title": "Swap used %",
1040+ "tooltip": {
1041+ "shared": true,
1042+ "sort": 0,
1043+ "value_type": "individual"
1044+ },
1045+ "type": "graph",
1046+ "xaxis": {
1047+ "buckets": null,
1048+ "mode": "time",
1049+ "name": null,
1050+ "show": true,
1051+ "values": []
1052+ },
1053+ "yaxes": [
1054+ {
1055+ "decimals": null,
1056+ "format": "percent",
1057+ "label": null,
1058+ "logBase": 1,
1059+ "max": "100",
1060+ "min": "0",
1061+ "show": true
1062+ },
1063+ {
1064+ "format": "short",
1065+ "label": null,
1066+ "logBase": 1,
1067+ "max": null,
1068+ "min": null,
1069+ "show": true
1070+ }
1071+ ],
1072+ "yaxis": {
1073+ "align": false,
1074+ "alignLevel": null
1075+ }
1076+ },
1077+ {
1078+ "aliasColors": {},
1079+ "bars": false,
1080+ "dashLength": 10,
1081+ "dashes": false,
1082+ "datasource": "prometheus",
1083+ "description": "",
1084+ "fieldConfig": {
1085+ "defaults": {
1086+ "custom": {},
1087+ "links": []
1088+ },
1089+ "overrides": []
1090+ },
1091+ "fill": 1,
1092+ "fillGradient": 0,
1093+ "gridPos": {
1094+ "h": 9,
1095+ "w": 12,
1096+ "x": 0,
1097+ "y": 43
1098+ },
1099+ "hiddenSeries": false,
1100+ "id": 15,
1101+ "legend": {
1102+ "alignAsTable": false,
1103+ "avg": false,
1104+ "current": false,
1105+ "max": false,
1106+ "min": false,
1107+ "show": true,
1108+ "total": false,
1109+ "values": false
1110+ },
1111+ "lines": true,
1112+ "linewidth": 1,
1113+ "links": [],
1114+ "nullPointMode": "null",
1115+ "options": {
1116+ "alertThreshold": true
1117+ },
1118+ "percentage": false,
1119+ "pluginVersion": "7.2.0",
1120+ "pointradius": 5,
1121+ "points": false,
1122+ "renderer": "flot",
1123+ "seriesOverrides": [],
1124+ "spaceLength": 10,
1125+ "stack": false,
1126+ "steppedLine": false,
1127+ "targets": [
1128+ {
1129+ "expr": "rate(swap_in{host=~\"$host\"}[2m])",
1130+ "format": "time_series",
1131+ "interval": "",
1132+ "intervalFactor": 2,
1133+ "legendFormat": "{{host}} In",
1134+ "refId": "A",
1135+ "step": 60
1136+ },
1137+ {
1138+ "expr": "rate(swap_out{host=~\"$host\"}[2m])",
1139+ "format": "time_series",
1140+ "interval": "",
1141+ "intervalFactor": 2,
1142+ "legendFormat": "{{host}} Out",
1143+ "refId": "B",
1144+ "step": 60
1145+ }
1146+ ],
1147+ "thresholds": [],
1148+ "timeFrom": null,
1149+ "timeRegions": [],
1150+ "timeShift": null,
1151+ "title": "Swap in/out throuput",
1152+ "tooltip": {
1153+ "shared": true,
1154+ "sort": 0,
1155+ "value_type": "individual"
1156+ },
1157+ "type": "graph",
1158+ "xaxis": {
1159+ "buckets": null,
1160+ "mode": "time",
1161+ "name": null,
1162+ "show": true,
1163+ "values": []
1164+ },
1165+ "yaxes": [
1166+ {
1167+ "format": "Bps",
1168+ "label": null,
1169+ "logBase": 1,
1170+ "max": null,
1171+ "min": "0",
1172+ "show": true
1173+ },
1174+ {
1175+ "format": "short",
1176+ "label": null,
1177+ "logBase": 1,
1178+ "max": null,
1179+ "min": null,
1180+ "show": true
1181+ }
1182+ ],
1183+ "yaxis": {
1184+ "align": false,
1185+ "alignLevel": null
1186+ }
1187+ },
1188+ {
1189+ "collapsed": false,
1190+ "datasource": "prometheus",
1191+ "gridPos": {
1192+ "h": 1,
1193+ "w": 24,
1194+ "x": 0,
1195+ "y": 52
1196+ },
1197+ "id": 288,
1198+ "panels": [],
1199+ "repeat": null,
1200+ "title": "Network",
1201+ "type": "row"
1202+ },
1203+ {
1204+ "collapsed": false,
1205+ "datasource": "prometheus",
1206+ "gridPos": {
1207+ "h": 1,
1208+ "w": 24,
1209+ "x": 0,
1210+ "y": 53
1211+ },
1212+ "id": 289,
1213+ "panels": [],
1214+ "repeat": null,
1215+ "title": "Disk performance",
1216+ "type": "row"
1217+ },
1218+ {
1219+ "aliasColors": {},
1220+ "bars": false,
1221+ "dashLength": 10,
1222+ "dashes": false,
1223+ "datasource": "prometheus",
1224+ "editable": true,
1225+ "error": false,
1226+ "fieldConfig": {
1227+ "defaults": {
1228+ "custom": {},
1229+ "links": []
1230+ },
1231+ "overrides": []
1232+ },
1233+ "fill": 0,
1234+ "fillGradient": 0,
1235+ "grid": {},
1236+ "gridPos": {
1237+ "h": 9,
1238+ "w": 12,
1239+ "x": 0,
1240+ "y": 54
1241+ },
1242+ "hiddenSeries": false,
1243+ "id": 9,
1244+ "legend": {
1245+ "alignAsTable": true,
1246+ "avg": false,
1247+ "current": true,
1248+ "max": true,
1249+ "min": true,
1250+ "show": true,
1251+ "total": false,
1252+ "values": true
1253+ },
1254+ "lines": true,
1255+ "linewidth": 2,
1256+ "links": [],
1257+ "nullPointMode": "null",
1258+ "options": {
1259+ "alertThreshold": true
1260+ },
1261+ "percentage": false,
1262+ "pluginVersion": "7.2.0",
1263+ "pointradius": 5,
1264+ "points": false,
1265+ "renderer": "flot",
1266+ "seriesOverrides": [],
1267+ "spaceLength": 10,
1268+ "stack": false,
1269+ "steppedLine": false,
1270+ "targets": [
1271+ {
1272+ "expr": "irate(diskio_reads{name=~\"nvme.*|sd.*|xv.*|vd.*|dasd.*|bcache.*\",name!~\"nvme.*p[0-9]+$|.*sd.*[0-9]$|xv.*[0-9]$|vd.*[0-9]$|dasd.*[0-9]$\",host=~\"$host\"}[2m])",
1273+ "format": "time_series",
1274+ "interval": "",
1275+ "intervalFactor": 2,
1276+ "legendFormat": "{{host}} {{name}}",
1277+ "refId": "B",
1278+ "step": 60
1279+ }
1280+ ],
1281+ "thresholds": [],
1282+ "timeFrom": null,
1283+ "timeRegions": [],
1284+ "timeShift": null,
1285+ "title": "IOPS Read",
1286+ "tooltip": {
1287+ "msResolution": true,
1288+ "shared": true,
1289+ "sort": 0,
1290+ "value_type": "cumulative"
1291+ },
1292+ "type": "graph",
1293+ "xaxis": {
1294+ "buckets": null,
1295+ "mode": "time",
1296+ "name": null,
1297+ "show": true,
1298+ "values": []
1299+ },
1300+ "yaxes": [
1301+ {
1302+ "format": "iops",
1303+ "label": null,
1304+ "logBase": 1,
1305+ "max": null,
1306+ "min": "0",
1307+ "show": true
1308+ },
1309+ {
1310+ "format": "short",
1311+ "label": null,
1312+ "logBase": 1,
1313+ "max": null,
1314+ "min": null,
1315+ "show": true
1316+ }
1317+ ],
1318+ "yaxis": {
1319+ "align": false,
1320+ "alignLevel": null
1321+ }
1322+ },
1323+ {
1324+ "aliasColors": {},
1325+ "bars": false,
1326+ "dashLength": 10,
1327+ "dashes": false,
1328+ "datasource": "prometheus",
1329+ "editable": true,
1330+ "error": false,
1331+ "fieldConfig": {
1332+ "defaults": {
1333+ "custom": {},
1334+ "links": []
1335+ },
1336+ "overrides": []
1337+ },
1338+ "fill": 0,
1339+ "fillGradient": 0,
1340+ "grid": {},
1341+ "gridPos": {
1342+ "h": 9,
1343+ "w": 12,
1344+ "x": 12,
1345+ "y": 54
1346+ },
1347+ "hiddenSeries": false,
1348+ "id": 10,
1349+ "legend": {
1350+ "alignAsTable": true,
1351+ "avg": false,
1352+ "current": true,
1353+ "max": true,
1354+ "min": true,
1355+ "show": true,
1356+ "total": false,
1357+ "values": true
1358+ },
1359+ "lines": true,
1360+ "linewidth": 2,
1361+ "links": [],
1362+ "nullPointMode": "null",
1363+ "options": {
1364+ "alertThreshold": true
1365+ },
1366+ "percentage": false,
1367+ "pluginVersion": "7.2.0",
1368+ "pointradius": 5,
1369+ "points": false,
1370+ "renderer": "flot",
1371+ "seriesOverrides": [],
1372+ "spaceLength": 10,
1373+ "stack": false,
1374+ "steppedLine": false,
1375+ "targets": [
1376+ {
1377+ "expr": "irate(diskio_writes{name=~\"nvme.*|sd.*|xv.*|vd.*|dasd.*|bcache.*\",name!~\"nvme.*p[0-9]+$|.*sd.*[0-9]$|xv.*[0-9]$|vd.*[0-9]$|dasd.*[0-9]$\",host=~\"$host\"}[2m])",
1378+ "format": "time_series",
1379+ "interval": "",
1380+ "intervalFactor": 2,
1381+ "legendFormat": "{{host}} {{name}}",
1382+ "refId": "B",
1383+ "step": 60
1384+ }
1385+ ],
1386+ "thresholds": [],
1387+ "timeFrom": null,
1388+ "timeRegions": [],
1389+ "timeShift": null,
1390+ "title": "IOPS Write",
1391+ "tooltip": {
1392+ "msResolution": true,
1393+ "shared": true,
1394+ "sort": 0,
1395+ "value_type": "cumulative"
1396+ },
1397+ "type": "graph",
1398+ "xaxis": {
1399+ "buckets": null,
1400+ "mode": "time",
1401+ "name": null,
1402+ "show": true,
1403+ "values": []
1404+ },
1405+ "yaxes": [
1406+ {
1407+ "format": "iops",
1408+ "label": null,
1409+ "logBase": 1,
1410+ "max": null,
1411+ "min": "0",
1412+ "show": true
1413+ },
1414+ {
1415+ "format": "short",
1416+ "label": null,
1417+ "logBase": 1,
1418+ "max": null,
1419+ "min": null,
1420+ "show": true
1421+ }
1422+ ],
1423+ "yaxis": {
1424+ "align": false,
1425+ "alignLevel": null
1426+ }
1427+ },
1428+ {
1429+ "aliasColors": {},
1430+ "bars": false,
1431+ "dashLength": 10,
1432+ "dashes": false,
1433+ "datasource": "prometheus",
1434+ "editable": true,
1435+ "error": false,
1436+ "fieldConfig": {
1437+ "defaults": {
1438+ "custom": {},
1439+ "links": []
1440+ },
1441+ "overrides": []
1442+ },
1443+ "fill": 0,
1444+ "fillGradient": 0,
1445+ "grid": {},
1446+ "gridPos": {
1447+ "h": 9,
1448+ "w": 12,
1449+ "x": 0,
1450+ "y": 63
1451+ },
1452+ "hiddenSeries": false,
1453+ "id": 11,
1454+ "legend": {
1455+ "alignAsTable": true,
1456+ "avg": false,
1457+ "current": true,
1458+ "max": true,
1459+ "min": true,
1460+ "show": true,
1461+ "total": false,
1462+ "values": true
1463+ },
1464+ "lines": true,
1465+ "linewidth": 2,
1466+ "links": [],
1467+ "nullPointMode": "null",
1468+ "options": {
1469+ "alertThreshold": true
1470+ },
1471+ "percentage": false,
1472+ "pluginVersion": "7.2.0",
1473+ "pointradius": 5,
1474+ "points": false,
1475+ "renderer": "flot",
1476+ "seriesOverrides": [],
1477+ "spaceLength": 10,
1478+ "stack": false,
1479+ "steppedLine": false,
1480+ "targets": [
1481+ {
1482+ "expr": "irate(diskio_read_bytes{name=~\"nvme.*|sd.*|xv.*|vd.*|dasd.*|bcache.*|md0\",name!~\"nvme.*p[0-9]+$|.*sd.*[0-9]$|xv.*[0-9]$|vd.*[0-9]$|dasd.*[0-9]$\",host=~\"$host\"}[2m])",
1483+ "format": "time_series",
1484+ "interval": "",
1485+ "intervalFactor": 2,
1486+ "legendFormat": "{{host}} {{name}}",
1487+ "refId": "B",
1488+ "step": 60
1489+ }
1490+ ],
1491+ "thresholds": [],
1492+ "timeFrom": null,
1493+ "timeRegions": [],
1494+ "timeShift": null,
1495+ "title": "Disk Read",
1496+ "tooltip": {
1497+ "msResolution": true,
1498+ "shared": true,
1499+ "sort": 0,
1500+ "value_type": "cumulative"
1501+ },
1502+ "type": "graph",
1503+ "xaxis": {
1504+ "buckets": null,
1505+ "mode": "time",
1506+ "name": null,
1507+ "show": true,
1508+ "values": []
1509+ },
1510+ "yaxes": [
1511+ {
1512+ "format": "Bps",
1513+ "label": null,
1514+ "logBase": 1,
1515+ "max": null,
1516+ "min": "0",
1517+ "show": true
1518+ },
1519+ {
1520+ "format": "short",
1521+ "label": null,
1522+ "logBase": 1,
1523+ "max": null,
1524+ "min": null,
1525+ "show": true
1526+ }
1527+ ],
1528+ "yaxis": {
1529+ "align": false,
1530+ "alignLevel": null
1531+ }
1532+ },
1533+ {
1534+ "aliasColors": {},
1535+ "bars": false,
1536+ "dashLength": 10,
1537+ "dashes": false,
1538+ "datasource": "prometheus",
1539+ "editable": true,
1540+ "error": false,
1541+ "fieldConfig": {
1542+ "defaults": {
1543+ "custom": {},
1544+ "links": []
1545+ },
1546+ "overrides": []
1547+ },
1548+ "fill": 0,
1549+ "fillGradient": 0,
1550+ "grid": {},
1551+ "gridPos": {
1552+ "h": 9,
1553+ "w": 12,
1554+ "x": 12,
1555+ "y": 63
1556+ },
1557+ "hiddenSeries": false,
1558+ "id": 12,
1559+ "legend": {
1560+ "alignAsTable": true,
1561+ "avg": false,
1562+ "current": true,
1563+ "max": true,
1564+ "min": true,
1565+ "show": true,
1566+ "total": false,
1567+ "values": true
1568+ },
1569+ "lines": true,
1570+ "linewidth": 2,
1571+ "links": [],
1572+ "nullPointMode": "null",
1573+ "options": {
1574+ "alertThreshold": true
1575+ },
1576+ "percentage": false,
1577+ "pluginVersion": "7.2.0",
1578+ "pointradius": 5,
1579+ "points": false,
1580+ "renderer": "flot",
1581+ "seriesOverrides": [],
1582+ "spaceLength": 10,
1583+ "stack": false,
1584+ "steppedLine": false,
1585+ "targets": [
1586+ {
1587+ "expr": "irate(diskio_write_bytes{name=~\"nvme.*|sd.*|xv.*|vd.*|dasd.*|bcache.*|md0\",name!~\"nvme.*p[0-9]+$|.*sd.*[0-9]$|xv.*[0-9]$|vd.*[0-9]$|dasd.*[0-9]$\",host=~\"$host\"}[2m])",
1588+ "format": "time_series",
1589+ "interval": "",
1590+ "intervalFactor": 2,
1591+ "legendFormat": "{{host}} {{name}}",
1592+ "refId": "B",
1593+ "step": 60
1594+ }
1595+ ],
1596+ "thresholds": [],
1597+ "timeFrom": null,
1598+ "timeRegions": [],
1599+ "timeShift": null,
1600+ "title": "Disk write",
1601+ "tooltip": {
1602+ "msResolution": true,
1603+ "shared": true,
1604+ "sort": 0,
1605+ "value_type": "cumulative"
1606+ },
1607+ "type": "graph",
1608+ "xaxis": {
1609+ "buckets": null,
1610+ "mode": "time",
1611+ "name": null,
1612+ "show": true,
1613+ "values": []
1614+ },
1615+ "yaxes": [
1616+ {
1617+ "format": "Bps",
1618+ "label": null,
1619+ "logBase": 1,
1620+ "max": null,
1621+ "min": "0",
1622+ "show": true
1623+ },
1624+ {
1625+ "format": "short",
1626+ "label": null,
1627+ "logBase": 1,
1628+ "max": null,
1629+ "min": null,
1630+ "show": true
1631+ }
1632+ ],
1633+ "yaxis": {
1634+ "align": false,
1635+ "alignLevel": null
1636+ }
1637+ },
1638+ {
1639+ "aliasColors": {},
1640+ "bars": false,
1641+ "dashLength": 10,
1642+ "dashes": false,
1643+ "datasource": "prometheus",
1644+ "editable": true,
1645+ "error": false,
1646+ "fieldConfig": {
1647+ "defaults": {
1648+ "custom": {},
1649+ "links": []
1650+ },
1651+ "overrides": []
1652+ },
1653+ "fill": 0,
1654+ "fillGradient": 0,
1655+ "grid": {},
1656+ "gridPos": {
1657+ "h": 9,
1658+ "w": 24,
1659+ "x": 0,
1660+ "y": 72
1661+ },
1662+ "hiddenSeries": false,
1663+ "id": 39,
1664+ "legend": {
1665+ "alignAsTable": true,
1666+ "avg": false,
1667+ "current": true,
1668+ "max": true,
1669+ "min": true,
1670+ "show": true,
1671+ "total": false,
1672+ "values": true
1673+ },
1674+ "lines": true,
1675+ "linewidth": 2,
1676+ "links": [],
1677+ "nullPointMode": "null",
1678+ "options": {
1679+ "alertThreshold": true
1680+ },
1681+ "percentage": false,
1682+ "pluginVersion": "7.2.0",
1683+ "pointradius": 5,
1684+ "points": false,
1685+ "renderer": "flot",
1686+ "seriesOverrides": [],
1687+ "spaceLength": 10,
1688+ "stack": false,
1689+ "steppedLine": false,
1690+ "targets": [
1691+ {
1692+ "expr": "irate(diskio_io_time{name=~\"nvme.*|sd.*|xv.*|vd.*|dasd.*|bcache.*|md0\",name!~\"nvme.*p[0-9]+$|.*sd.*[0-9]$|xv.*[0-9]$|vd.*[0-9]$|dasd.*[0-9]$\",host=~\"$host\"}[2m])",
1693+ "format": "time_series",
1694+ "interval": "",
1695+ "intervalFactor": 2,
1696+ "legendFormat": "{{host}} {{name}}",
1697+ "refId": "B",
1698+ "step": 2
1699+ }
1700+ ],
1701+ "thresholds": [],
1702+ "timeFrom": null,
1703+ "timeRegions": [],
1704+ "timeShift": null,
1705+ "title": "IO wait",
1706+ "tooltip": {
1707+ "msResolution": true,
1708+ "shared": true,
1709+ "sort": 0,
1710+ "value_type": "individual"
1711+ },
1712+ "type": "graph",
1713+ "xaxis": {
1714+ "buckets": null,
1715+ "mode": "time",
1716+ "name": null,
1717+ "show": true,
1718+ "values": []
1719+ },
1720+ "yaxes": [
1721+ {
1722+ "format": "ms",
1723+ "label": null,
1724+ "logBase": 1,
1725+ "max": null,
1726+ "min": "0",
1727+ "show": true
1728+ },
1729+ {
1730+ "format": "short",
1731+ "label": null,
1732+ "logBase": 1,
1733+ "max": null,
1734+ "min": null,
1735+ "show": true
1736+ }
1737+ ],
1738+ "yaxis": {
1739+ "align": false,
1740+ "alignLevel": null
1741+ }
1742+ },
1743+ {
1744+ "collapsed": false,
1745+ "datasource": "prometheus",
1746+ "gridPos": {
1747+ "h": 1,
1748+ "w": 24,
1749+ "x": 0,
1750+ "y": 81
1751+ },
1752+ "id": 290,
1753+ "panels": [],
1754+ "repeat": null,
1755+ "title": "Disk space",
1756+ "type": "row"
1757+ },
1758+ {
1759+ "aliasColors": {},
1760+ "bars": false,
1761+ "dashLength": 10,
1762+ "dashes": false,
1763+ "datasource": "prometheus",
1764+ "editable": true,
1765+ "error": false,
1766+ "fieldConfig": {
1767+ "defaults": {
1768+ "custom": {},
1769+ "links": []
1770+ },
1771+ "overrides": []
1772+ },
1773+ "fill": 6,
1774+ "fillGradient": 0,
1775+ "grid": {},
1776+ "gridPos": {
1777+ "h": 7,
1778+ "w": 8,
1779+ "x": 0,
1780+ "y": 82
1781+ },
1782+ "hiddenSeries": false,
1783+ "id": 16,
1784+ "legend": {
1785+ "alignAsTable": false,
1786+ "avg": false,
1787+ "current": true,
1788+ "max": false,
1789+ "min": false,
1790+ "show": true,
1791+ "total": false,
1792+ "values": true
1793+ },
1794+ "lines": true,
1795+ "linewidth": 0,
1796+ "links": [],
1797+ "nullPointMode": "null",
1798+ "options": {
1799+ "alertThreshold": true
1800+ },
1801+ "percentage": false,
1802+ "pluginVersion": "7.2.0",
1803+ "pointradius": 5,
1804+ "points": false,
1805+ "renderer": "flot",
1806+ "repeat": "mountpoint",
1807+ "seriesOverrides": [],
1808+ "spaceLength": 10,
1809+ "stack": true,
1810+ "steppedLine": false,
1811+ "targets": [
1812+ {
1813+ "expr": "disk_free{host=~\"$host\"}",
1814+ "format": "time_series",
1815+ "interval": "",
1816+ "intervalFactor": 2,
1817+ "legendFormat": "{{host}} \"{{path}}\" Free",
1818+ "refId": "B",
1819+ "step": 2
1820+ },
1821+ {
1822+ "expr": "disk_used{host=~\"$host\"}",
1823+ "format": "time_series",
1824+ "interval": "",
1825+ "intervalFactor": 2,
1826+ "legendFormat": "{{host}} \"{{path}}\" Used",
1827+ "refId": "A",
1828+ "step": 2
1829+ }
1830+ ],
1831+ "thresholds": [],
1832+ "timeFrom": null,
1833+ "timeRegions": [],
1834+ "timeShift": null,
1835+ "title": "Disk space (stacked)",
1836+ "tooltip": {
1837+ "msResolution": true,
1838+ "shared": true,
1839+ "sort": 0,
1840+ "value_type": "individual"
1841+ },
1842+ "type": "graph",
1843+ "xaxis": {
1844+ "buckets": null,
1845+ "mode": "time",
1846+ "name": null,
1847+ "show": true,
1848+ "values": []
1849+ },
1850+ "yaxes": [
1851+ {
1852+ "format": "decbytes",
1853+ "label": null,
1854+ "logBase": 1,
1855+ "max": null,
1856+ "min": "0",
1857+ "show": true
1858+ },
1859+ {
1860+ "format": "short",
1861+ "label": null,
1862+ "logBase": 1,
1863+ "max": null,
1864+ "min": null,
1865+ "show": true
1866+ }
1867+ ],
1868+ "yaxis": {
1869+ "align": false,
1870+ "alignLevel": null
1871+ }
1872+ },
1873+ {
1874+ "aliasColors": {},
1875+ "bars": false,
1876+ "dashLength": 10,
1877+ "dashes": false,
1878+ "datasource": "prometheus",
1879+ "editable": true,
1880+ "error": false,
1881+ "fieldConfig": {
1882+ "defaults": {
1883+ "custom": {},
1884+ "links": []
1885+ },
1886+ "overrides": []
1887+ },
1888+ "fill": 0,
1889+ "fillGradient": 0,
1890+ "grid": {},
1891+ "gridPos": {
1892+ "h": 7,
1893+ "w": 8,
1894+ "x": 8,
1895+ "y": 82
1896+ },
1897+ "hiddenSeries": false,
1898+ "id": 40,
1899+ "legend": {
1900+ "alignAsTable": false,
1901+ "avg": false,
1902+ "current": true,
1903+ "max": false,
1904+ "min": false,
1905+ "show": true,
1906+ "total": false,
1907+ "values": true
1908+ },
1909+ "lines": true,
1910+ "linewidth": 2,
1911+ "links": [],
1912+ "nullPointMode": "null",
1913+ "options": {
1914+ "alertThreshold": true
1915+ },
1916+ "percentage": false,
1917+ "pluginVersion": "7.2.0",
1918+ "pointradius": 5,
1919+ "points": false,
1920+ "renderer": "flot",
1921+ "repeat": "mountpoint",
1922+ "seriesOverrides": [],
1923+ "spaceLength": 10,
1924+ "stack": false,
1925+ "steppedLine": false,
1926+ "targets": [
1927+ {
1928+ "expr": "disk_used{host=~\"$host\"} / disk_total{host=~\"$host\"} * 100",
1929+ "format": "time_series",
1930+ "interval": "",
1931+ "intervalFactor": 2,
1932+ "legendFormat": "{{host}} \"{{path}}\"",
1933+ "refId": "B",
1934+ "step": 2
1935+ }
1936+ ],
1937+ "thresholds": [],
1938+ "timeFrom": null,
1939+ "timeRegions": [],
1940+ "timeShift": null,
1941+ "title": "Disk space % used",
1942+ "tooltip": {
1943+ "msResolution": true,
1944+ "shared": true,
1945+ "sort": 0,
1946+ "value_type": "individual"
1947+ },
1948+ "type": "graph",
1949+ "xaxis": {
1950+ "buckets": null,
1951+ "mode": "time",
1952+ "name": null,
1953+ "show": true,
1954+ "values": []
1955+ },
1956+ "yaxes": [
1957+ {
1958+ "format": "percent",
1959+ "label": null,
1960+ "logBase": 1,
1961+ "max": null,
1962+ "min": "0",
1963+ "show": true
1964+ },
1965+ {
1966+ "format": "short",
1967+ "label": null,
1968+ "logBase": 1,
1969+ "max": null,
1970+ "min": null,
1971+ "show": true
1972+ }
1973+ ],
1974+ "yaxis": {
1975+ "align": false,
1976+ "alignLevel": null
1977+ }
1978+ },
1979+ {
1980+ "aliasColors": {},
1981+ "bars": false,
1982+ "dashLength": 10,
1983+ "dashes": false,
1984+ "datasource": "prometheus",
1985+ "editable": true,
1986+ "error": false,
1987+ "fieldConfig": {
1988+ "defaults": {
1989+ "custom": {},
1990+ "links": []
1991+ },
1992+ "overrides": []
1993+ },
1994+ "fill": 0,
1995+ "fillGradient": 0,
1996+ "grid": {},
1997+ "gridPos": {
1998+ "h": 7,
1999+ "w": 8,
2000+ "x": 16,
2001+ "y": 82
2002+ },
2003+ "hiddenSeries": false,
2004+ "id": 17,
2005+ "legend": {
2006+ "alignAsTable": false,
2007+ "avg": false,
2008+ "current": true,
2009+ "max": false,
2010+ "min": false,
2011+ "show": true,
2012+ "total": false,
2013+ "values": true
2014+ },
2015+ "lines": true,
2016+ "linewidth": 2,
2017+ "links": [],
2018+ "nullPointMode": "null",
2019+ "options": {
2020+ "alertThreshold": true
2021+ },
2022+ "percentage": false,
2023+ "pluginVersion": "7.2.0",
2024+ "pointradius": 5,
2025+ "points": false,
2026+ "renderer": "flot",
2027+ "repeat": "mountpoint",
2028+ "seriesOverrides": [],
2029+ "spaceLength": 10,
2030+ "stack": false,
2031+ "steppedLine": false,
2032+ "targets": [
2033+ {
2034+ "expr": "disk_inodes_used{host=~\"$host\"} / disk_inodes_total{host=~\"$host\"} * 100",
2035+ "format": "time_series",
2036+ "interval": "",
2037+ "intervalFactor": 2,
2038+ "legendFormat": "{{host}} \"{{path}}\"",
2039+ "refId": "A",
2040+ "step": 2
2041+ }
2042+ ],
2043+ "thresholds": [],
2044+ "timeFrom": null,
2045+ "timeRegions": [],
2046+ "timeShift": null,
2047+ "title": "Inodes % used",
2048+ "tooltip": {
2049+ "msResolution": true,
2050+ "shared": true,
2051+ "sort": 0,
2052+ "value_type": "cumulative"
2053+ },
2054+ "type": "graph",
2055+ "xaxis": {
2056+ "buckets": null,
2057+ "mode": "time",
2058+ "name": null,
2059+ "show": true,
2060+ "values": []
2061+ },
2062+ "yaxes": [
2063+ {
2064+ "format": "percent",
2065+ "label": null,
2066+ "logBase": 1,
2067+ "max": "100",
2068+ "min": "0",
2069+ "show": true
2070+ },
2071+ {
2072+ "format": "short",
2073+ "label": null,
2074+ "logBase": 1,
2075+ "max": null,
2076+ "min": null,
2077+ "show": false
2078+ }
2079+ ],
2080+ "yaxis": {
2081+ "align": false,
2082+ "alignLevel": null
2083+ }
2084+ },
2085+ {
2086+ "collapsed": false,
2087+ "datasource": "prometheus",
2088+ "gridPos": {
2089+ "h": 1,
2090+ "w": 24,
2091+ "x": 0,
2092+ "y": 89
2093+ },
2094+ "id": 354,
2095+ "panels": [],
2096+ "title": "Kernel",
2097+ "type": "row"
2098+ },
2099+ {
2100+ "aliasColors": {},
2101+ "bars": false,
2102+ "dashLength": 10,
2103+ "dashes": false,
2104+ "datasource": "prometheus",
2105+ "fieldConfig": {
2106+ "defaults": {
2107+ "custom": {},
2108+ "links": []
2109+ },
2110+ "overrides": []
2111+ },
2112+ "fill": 1,
2113+ "fillGradient": 0,
2114+ "gridPos": {
2115+ "h": 8,
2116+ "w": 12,
2117+ "x": 0,
2118+ "y": 90
2119+ },
2120+ "hiddenSeries": false,
2121+ "id": 362,
2122+ "legend": {
2123+ "avg": false,
2124+ "current": false,
2125+ "max": false,
2126+ "min": false,
2127+ "show": true,
2128+ "total": false,
2129+ "values": false
2130+ },
2131+ "lines": true,
2132+ "linewidth": 1,
2133+ "nullPointMode": "null",
2134+ "options": {
2135+ "alertThreshold": true
2136+ },
2137+ "percentage": false,
2138+ "pluginVersion": "7.2.0",
2139+ "pointradius": 2,
2140+ "points": false,
2141+ "renderer": "flot",
2142+ "seriesOverrides": [],
2143+ "spaceLength": 10,
2144+ "stack": false,
2145+ "steppedLine": false,
2146+ "targets": [
2147+ {
2148+ "expr": "rate(kernel_interrupts{host=~\"$host\"}[1m])",
2149+ "interval": "",
2150+ "legendFormat": "",
2151+ "refId": "A"
2152+ }
2153+ ],
2154+ "thresholds": [],
2155+ "timeFrom": null,
2156+ "timeRegions": [],
2157+ "timeShift": null,
2158+ "title": "Interrupts",
2159+ "tooltip": {
2160+ "shared": true,
2161+ "sort": 0,
2162+ "value_type": "individual"
2163+ },
2164+ "type": "graph",
2165+ "xaxis": {
2166+ "buckets": null,
2167+ "mode": "time",
2168+ "name": null,
2169+ "show": true,
2170+ "values": []
2171+ },
2172+ "yaxes": [
2173+ {
2174+ "format": "short",
2175+ "label": null,
2176+ "logBase": 1,
2177+ "max": null,
2178+ "min": null,
2179+ "show": true
2180+ },
2181+ {
2182+ "format": "short",
2183+ "label": null,
2184+ "logBase": 1,
2185+ "max": null,
2186+ "min": null,
2187+ "show": true
2188+ }
2189+ ],
2190+ "yaxis": {
2191+ "align": false,
2192+ "alignLevel": null
2193+ }
2194+ },
2195+ {
2196+ "aliasColors": {},
2197+ "bars": false,
2198+ "dashLength": 10,
2199+ "dashes": false,
2200+ "datasource": "prometheus",
2201+ "fieldConfig": {
2202+ "defaults": {
2203+ "custom": {},
2204+ "links": []
2205+ },
2206+ "overrides": []
2207+ },
2208+ "fill": 1,
2209+ "fillGradient": 0,
2210+ "gridPos": {
2211+ "h": 8,
2212+ "w": 12,
2213+ "x": 12,
2214+ "y": 90
2215+ },
2216+ "hiddenSeries": false,
2217+ "id": 360,
2218+ "legend": {
2219+ "avg": false,
2220+ "current": false,
2221+ "max": false,
2222+ "min": false,
2223+ "show": true,
2224+ "total": false,
2225+ "values": false
2226+ },
2227+ "lines": true,
2228+ "linewidth": 1,
2229+ "nullPointMode": "null",
2230+ "options": {
2231+ "alertThreshold": true
2232+ },
2233+ "percentage": false,
2234+ "pluginVersion": "7.2.0",
2235+ "pointradius": 2,
2236+ "points": false,
2237+ "renderer": "flot",
2238+ "seriesOverrides": [],
2239+ "spaceLength": 10,
2240+ "stack": false,
2241+ "steppedLine": false,
2242+ "targets": [
2243+ {
2244+ "expr": "rate(kernel_processes_forked{host=~\"$host\"}[1m])",
2245+ "interval": "",
2246+ "legendFormat": "",
2247+ "refId": "A"
2248+ }
2249+ ],
2250+ "thresholds": [],
2251+ "timeFrom": null,
2252+ "timeRegions": [],
2253+ "timeShift": null,
2254+ "title": "Forks",
2255+ "tooltip": {
2256+ "shared": true,
2257+ "sort": 0,
2258+ "value_type": "individual"
2259+ },
2260+ "type": "graph",
2261+ "xaxis": {
2262+ "buckets": null,
2263+ "mode": "time",
2264+ "name": null,
2265+ "show": true,
2266+ "values": []
2267+ },
2268+ "yaxes": [
2269+ {
2270+ "format": "short",
2271+ "label": null,
2272+ "logBase": 1,
2273+ "max": null,
2274+ "min": null,
2275+ "show": true
2276+ },
2277+ {
2278+ "format": "short",
2279+ "label": null,
2280+ "logBase": 1,
2281+ "max": null,
2282+ "min": null,
2283+ "show": true
2284+ }
2285+ ],
2286+ "yaxis": {
2287+ "align": false,
2288+ "alignLevel": null
2289+ }
2290+ },
2291+ {
2292+ "aliasColors": {},
2293+ "bars": false,
2294+ "dashLength": 10,
2295+ "dashes": false,
2296+ "datasource": "prometheus",
2297+ "fieldConfig": {
2298+ "defaults": {
2299+ "custom": {},
2300+ "links": []
2301+ },
2302+ "overrides": []
2303+ },
2304+ "fill": 1,
2305+ "fillGradient": 0,
2306+ "gridPos": {
2307+ "h": 8,
2308+ "w": 12,
2309+ "x": 0,
2310+ "y": 98
2311+ },
2312+ "hiddenSeries": false,
2313+ "id": 358,
2314+ "legend": {
2315+ "avg": false,
2316+ "current": false,
2317+ "max": false,
2318+ "min": false,
2319+ "show": true,
2320+ "total": false,
2321+ "values": false
2322+ },
2323+ "lines": true,
2324+ "linewidth": 1,
2325+ "nullPointMode": "null",
2326+ "options": {
2327+ "alertThreshold": true
2328+ },
2329+ "percentage": false,
2330+ "pluginVersion": "7.2.0",
2331+ "pointradius": 2,
2332+ "points": false,
2333+ "renderer": "flot",
2334+ "seriesOverrides": [],
2335+ "spaceLength": 10,
2336+ "stack": false,
2337+ "steppedLine": false,
2338+ "targets": [
2339+ {
2340+ "expr": "kernel_entropy_avail{host=~\"$host\"}",
2341+ "interval": "",
2342+ "legendFormat": "",
2343+ "refId": "A"
2344+ }
2345+ ],
2346+ "thresholds": [],
2347+ "timeFrom": null,
2348+ "timeRegions": [],
2349+ "timeShift": null,
2350+ "title": "Available entropy",
2351+ "tooltip": {
2352+ "shared": true,
2353+ "sort": 0,
2354+ "value_type": "individual"
2355+ },
2356+ "type": "graph",
2357+ "xaxis": {
2358+ "buckets": null,
2359+ "mode": "time",
2360+ "name": null,
2361+ "show": true,
2362+ "values": []
2363+ },
2364+ "yaxes": [
2365+ {
2366+ "format": "short",
2367+ "label": null,
2368+ "logBase": 1,
2369+ "max": null,
2370+ "min": null,
2371+ "show": true
2372+ },
2373+ {
2374+ "format": "short",
2375+ "label": null,
2376+ "logBase": 1,
2377+ "max": null,
2378+ "min": null,
2379+ "show": true
2380+ }
2381+ ],
2382+ "yaxis": {
2383+ "align": false,
2384+ "alignLevel": null
2385+ }
2386+ },
2387+ {
2388+ "aliasColors": {},
2389+ "bars": false,
2390+ "dashLength": 10,
2391+ "dashes": false,
2392+ "datasource": "prometheus",
2393+ "fieldConfig": {
2394+ "defaults": {
2395+ "custom": {},
2396+ "links": []
2397+ },
2398+ "overrides": []
2399+ },
2400+ "fill": 1,
2401+ "fillGradient": 0,
2402+ "gridPos": {
2403+ "h": 8,
2404+ "w": 12,
2405+ "x": 12,
2406+ "y": 98
2407+ },
2408+ "hiddenSeries": false,
2409+ "id": 356,
2410+ "legend": {
2411+ "avg": false,
2412+ "current": false,
2413+ "max": false,
2414+ "min": false,
2415+ "show": true,
2416+ "total": false,
2417+ "values": false
2418+ },
2419+ "lines": true,
2420+ "linewidth": 1,
2421+ "nullPointMode": "null",
2422+ "options": {
2423+ "alertThreshold": true
2424+ },
2425+ "percentage": false,
2426+ "pluginVersion": "7.2.0",
2427+ "pointradius": 2,
2428+ "points": false,
2429+ "renderer": "flot",
2430+ "seriesOverrides": [],
2431+ "spaceLength": 10,
2432+ "stack": false,
2433+ "steppedLine": false,
2434+ "targets": [
2435+ {
2436+ "expr": "rate(kernel_context_switches{host=~\"$host\"}[1m])",
2437+ "interval": "",
2438+ "legendFormat": "",
2439+ "refId": "A"
2440+ }
2441+ ],
2442+ "thresholds": [],
2443+ "timeFrom": null,
2444+ "timeRegions": [],
2445+ "timeShift": null,
2446+ "title": "Kernel context switches",
2447+ "tooltip": {
2448+ "shared": true,
2449+ "sort": 0,
2450+ "value_type": "individual"
2451+ },
2452+ "type": "graph",
2453+ "xaxis": {
2454+ "buckets": null,
2455+ "mode": "time",
2456+ "name": null,
2457+ "show": true,
2458+ "values": []
2459+ },
2460+ "yaxes": [
2461+ {
2462+ "format": "short",
2463+ "label": null,
2464+ "logBase": 1,
2465+ "max": null,
2466+ "min": null,
2467+ "show": true
2468+ },
2469+ {
2470+ "format": "short",
2471+ "label": null,
2472+ "logBase": 1,
2473+ "max": null,
2474+ "min": null,
2475+ "show": true
2476+ }
2477+ ],
2478+ "yaxis": {
2479+ "align": false,
2480+ "alignLevel": null
2481+ }
2482+ }
2483+ ],
2484+ "refresh": false,
2485+ "schemaVersion": 26,
2486+ "style": "dark",
2487+ "tags": [
2488+ "telegraf"
2489+ ],
2490+ "templating": {
2491+ "list": [
2492+ {
2493+ "allValue": ".*",
2494+ "current": {
2495+ "selected": false,
2496+ "text": "All",
2497+ "value": "$__all"
2498+ },
2499+ "datasource": "prometheus",
2500+ "definition": "",
2501+ "hide": 0,
2502+ "includeAll": true,
2503+ "label": "host",
2504+ "multi": true,
2505+ "name": "host",
2506+ "options": [],
2507+ "query": "",
2508+ "refresh": 1,
2509+ "regex": ".*host=\"([^\"]+)\".*$",
2510+ "skipUrlSync": false,
2511+ "sort": 1,
2512+ "tagValuesQuery": "",
2513+ "tags": [],
2514+ "tagsQuery": "",
2515+ "type": "query",
2516+ "useTags": false
2517+ }
2518+ ]
2519+ },
2520+ "time": {
2521+ "from": "now-24h",
2522+ "to": "now"
2523+ },
2524+ "timepicker": {
2525+ "refresh_intervals": [
2526+ "15s",
2527+ "30s",
2528+ "1m",
2529+ "5m",
2530+ "15m",
2531+ "30m",
2532+ "1h",
2533+ "2h",
2534+ "1d"
2535+ ],
2536+ "time_options": [
2537+ "5m",
2538+ "15m",
2539+ "1h",
2540+ "6h",
2541+ "12h",
2542+ "24h",
2543+ "2d",
2544+ "7d",
2545+ "30d"
2546+ ]
2547+ },
2548+ "timezone": "utc",
2549+ "title": "System stats per host",
2550+ "uid": "000000044",
2551+ "version": 1
2552+}
2553diff --git a/examples/docker-compose.yml b/examples/docker-compose.yml
2554new file mode 100644
2555index 0000000..206ed81
2556--- /dev/null
2557+++ b/examples/docker-compose.yml
2558@@ -0,0 +1,11 @@
2559+version: '2'
2560+
2561+services:
2562+ grafana:
2563+ image: squeakywheel/grafana:edge
2564+ ports:
2565+ - 3000:3000
2566+ volumes:
2567+ - ./config/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml
2568+ - ./config/dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yml
2569+ - ./config/system-stats-dashboard.json:/etc/grafana/provisioning/dashboards/system-stats-dashboard.json
2570diff --git a/examples/grafana-deployment.yml b/examples/grafana-deployment.yml
2571new file mode 100644
2572index 0000000..58f7097
2573--- /dev/null
2574+++ b/examples/grafana-deployment.yml
2575@@ -0,0 +1,58 @@
2576+---
2577+apiVersion: apps/v1
2578+kind: Deployment
2579+metadata:
2580+ name: grafana-deployment
2581+spec:
2582+ replicas: 1
2583+ selector:
2584+ matchLabels:
2585+ app: grafana
2586+ template:
2587+ metadata:
2588+ labels:
2589+ app: grafana
2590+ spec:
2591+ containers:
2592+ - name: grafana
2593+ image: squeakywheel/grafana:edge
2594+ volumeMounts:
2595+ - name: grafana-config-volume
2596+ mountPath: /etc/grafana/provisioning/datasources/datasource.yml
2597+ subPath: datasource.yml
2598+ - name: grafana-config-volume
2599+ mountPath: /etc/grafana/provisioning/dashboards/dashboard.yml
2600+ subPath: dashboard.yml
2601+ - name: grafana-config-volume
2602+ mountPath: /etc/grafana/provisioning/dashboards/system-stats-dashboard.json
2603+ subPath: system-stats-dashboard.json
2604+ ports:
2605+ - containerPort: 3000
2606+ name: grafana
2607+ protocol: TCP
2608+ volumes:
2609+ - name: grafana-config-volume
2610+ configMap:
2611+ name: grafana-config
2612+ items:
2613+ - key: grafana-datasource
2614+ path: datasource.yml
2615+ - key: grafana-dashboard-definition
2616+ path: dashboard.yml
2617+ - key: grafana-dashboard
2618+ path: system-stats-dashboard.json
2619+---
2620+apiVersion: v1
2621+kind: Service
2622+metadata:
2623+ name: grafana-service
2624+spec:
2625+ type: NodePort
2626+ selector:
2627+ app: grafana
2628+ ports:
2629+ - protocol: TCP
2630+ port: 3000
2631+ targetPort: 3000
2632+ nodePort: 30000
2633+ name: grafana

Subscribers

People subscribed via source and target branches

to all changes: