Grafana Dashboard customization script 59/51359/4
authorRutuja Surve <rutuja.r.surve@gmail.com>
Tue, 30 Jan 2018 16:52:33 +0000 (16:52 +0000)
committerRutuja Surve <rutuja.r.surve@gmail.com>
Wed, 21 Feb 2018 14:04:29 +0000 (14:04 +0000)
JIRA: BOTTLENECK-182

Customization of dashboard with respect to query for
a particular panel

Change-Id: Ic8730c2fc1540fc41d1206b4610beb7b304825ae
Signed-off-by: Rutuja Surve <rutuja.r.surve@gmail.com>
monitor/custom-dashboard.py [new file with mode: 0644]
monitor/custom-query-dashboard.json [new file with mode: 0644]

diff --git a/monitor/custom-dashboard.py b/monitor/custom-dashboard.py
new file mode 100644 (file)
index 0000000..48173f8
--- /dev/null
@@ -0,0 +1,31 @@
+##############################################################################
+# Copyright (c) 2018 Huawei Tech and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import json
+
+def customize_query(filename, rowtitle, panelname, expr):
+    with open(filename, 'r+') as f:
+        data = json.load(f)
+        x = data['rows'] #this is an array of the rows of the dashboard
+        for y in x:
+            if y['title'] == rowtitle:
+                pan = y['panels']
+                for i in range(len(pan)-1) :
+                    z = pan[i]
+                    if z['title'] == panelname:
+                        tar = z['targets']
+                        for a in tar:
+                            a['expr'] = expr
+                            f.seek(0)       # <--- reset file position to start
+                            json.dump(data, f, indent=4)
+                            f.truncate()
+
+customize_query("/home/opnfv/bottlenecks/monitor/custom-query-dashboard.json",
+    "Dashboard Row", "Memory Usage per Container", "Sample Prometheus Query")
+
diff --git a/monitor/custom-query-dashboard.json b/monitor/custom-query-dashboard.json
new file mode 100644 (file)
index 0000000..8ee8357
--- /dev/null
@@ -0,0 +1,36 @@
+{
+    "rows": [
+        {
+            "repeat": null,
+            "titleSize": "h6",
+            "repeatIteration": null,
+            "title": "Dashboard Row",
+            "height": 150,
+            "repeatRowId": null,
+            "panels": [
+                {
+                    "title": "Memory Usage per Container",
+                    "aliasColors": {},
+                    "id": 31,
+                    "cacheTimeout": null,
+                    "valueName": "current",
+                    "targets": [
+                        {
+                            "hide": false,
+                            "expr": "Pre-existing Query",
+                            "step": 1800,
+                            "legendFormat": "",
+                            "intervalFactor": 2,
+                            "refId": "A"
+                        }
+                    ]
+                },
+                {
+                    "content": "Sample Content"
+                }
+            ],
+            "showTitle": false,
+            "collapse": true
+        }
+    ]
+}