Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

kibconfig – Wartungstool für Kibana Dashboards

12.10.2017 | 1 Minuten Lesezeit

Als wir vor 2 Jahren zu Beginn unseres Projekts damit begannen, unser ELK Logging über Kibana Dashboards zu optimieren, standen wir vor einem Problem: Wie konnten wir unsere für die PP-Umgebung vorbereiteten Dashboards, Visualisierungen und gespeicherten Suchen auf die Produktionsumgebung überführen, ohne den gleichen Konfigurationsaufwand über die Oberfläche nochmal zu treiben? Außerdem wäre es schwierig, beide Umgebungen so synchron zu halten.

Eine Tool-Suche ergab leider nichts, aber es stellte sich heraus, dass alle Oberflächenelemente in einem ElasticSearch Index hinterlegt sind und als JSON exportier- und pflegbar sind. Damit entstand die Idee ein eigenes Tool dafür zu schreiben: kibconfig .

kibconfig erlaubt den Download und Upload der Kibana-Elemente (Dashboard, Visualization, Search, Config, Index-Pattern) in eine lokale Verzeichnisstruktur. Da die in ElasticSearch gespeicherten JSON-Dokumente wiederum als String verpackte JSON-Strukturen enthalten, werden diese dabei „ausgepackt“. Alle Attribute werden außerdem in einer definierten Reihenfolge und Pretty-Printed gespeichert, so dass ein einfaches Diffing und Versionierung – z. B. via Git- möglich ist. Seit der Version 0.2 ist auch ein einfaches „deep copy“ von Dashboards mitsamt Unterstrukturen möglich. Das verwenden wir z. B. zur Erstellung angepasster Dashboards für unterschiedliche Microservices.

Hier ein Beispiel eines unter ./dashboards/Example-Dashboard.json lokal gespeicherten Dashboards:

1{
2    "id": "Example-Dashboard",
3    "title": "Example Dashboard",
4    "description": "",
5    "hits": 0,
6    "timeRestore": false,
7    "version": 1,
8    "kibanaSavedObjectMeta": {
9        "searchSourceJSON": {
10            "filter": [
11                {
12                    "query": {
13                        "query_string": {
14                            "analyze_wildcard": true,
15                            "query": "*"
16                        }
17                    }
18                }
19            ]
20        }
21    },
22    "panelsJSON": [
23        {
24            "id": "Navigation",
25            "type": "visualization",
26            "col": 1,
27            "row": 1,
28            "size_x": 2,
29            "size_y": 5
30        },
31        {
32            "id": "Example-all-errors",
33            "type": "search",
34            "col": 3,
35            "row": 1,
36            "size_x": 10,
37            "size_y": 4,
38            "columns": [
39                "hostname",
40                "category",
41                "message"
42            ],
43            "sort": [
44                "timestamp",
45                "desc"
46            ]
47        },
48        {
49            "id": "Example-Log-count-by-level",
50            "type": "visualization",
51            "col": 3,
52            "row": 5,
53            "size_x": 10,
54            "size_y": 4
55        }
56    ]
57}

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.