SysDB – System DataBase — Ein Datenaggregator für System-Informationen
1. SysDB – System DataBase
Ein Datenaggregator f¨ur System-Informationen
Sebastian ‘tokkee’ Harl
<sh@tokkee.org>
SysDB developer
Grazer Linuxtage 2014
05. April 2014
Graz
2. Disclaimer
HINWEIS:
SysDB ist noch in einem fr¨uhen Entwicklungsstadium.
Flaming, Bashing oder andere Formen von konstruktivem
Feedback sind sehr willkommen! :-)
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 2
4. Motivation
Warum SysDB?
Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.?
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
5. Motivation
Warum SysDB?
Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.?
Wer verwendet außerdem Puppet/Chef/etc.?
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
6. Motivation
Warum SysDB?
Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.?
Wer verwendet außerdem Puppet/Chef/etc.?
Wer verwendet außerdem collectd/Munin/etc.?
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
7. Motivation
Warum SysDB?
Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.?
Wer verwendet außerdem Puppet/Chef/etc.?
Wer verwendet außerdem collectd/Munin/etc.?
Wer hat außerdem eine CMDB?
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
8. Motivation
Warum SysDB?
Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.?
Wer verwendet außerdem Puppet/Chef/etc.?
Wer verwendet außerdem collectd/Munin/etc.?
Wer hat außerdem eine CMDB?
Wer ist mit seinem Setup zufrieden? ;-)
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
9. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
10. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
11. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
Zweiter Gedanke: wenn man dass dann schon hat, kann man die
Daten auch gleich noch mit Monitoring Informationen annotieren.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
12. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
Zweiter Gedanke: wenn man dass dann schon hat, kann man die
Daten auch gleich noch mit Monitoring Informationen annotieren.
Und wenn man dann schon so weit ist, sollte man es gleich
generisch machen.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
13. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
Zweiter Gedanke: wenn man dass dann schon hat, kann man die
Daten auch gleich noch mit Monitoring Informationen annotieren.
Und wenn man dann schon so weit ist, sollte man es gleich
generisch machen.
Dann stellte ich fest, dass ich Web-UI-Entwicklung gar nicht mag.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
14. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
Zweiter Gedanke: wenn man dass dann schon hat, kann man die
Daten auch gleich noch mit Monitoring Informationen annotieren.
Und wenn man dann schon so weit ist, sollte man es gleich
generisch machen.
Dann stellte ich fest, dass ich Web-UI-Entwicklung gar nicht mag.
Außerdem braucht eine skalierbare Anwendung ein gutes Backend.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
15. Geschichte
Eigentlich wollte ich ein neues collectd Frontend f¨ur große,
heterogene Umgebungen.
Erste Idee: Gruppierung von collectd-Datens¨atzen an Hand von
Puppet Facts der entsprechenden Hosts.
Zweiter Gedanke: wenn man dass dann schon hat, kann man die
Daten auch gleich noch mit Monitoring Informationen annotieren.
Und wenn man dann schon so weit ist, sollte man es gleich
generisch machen.
Dann stellte ich fest, dass ich Web-UI-Entwicklung gar nicht mag.
Außerdem braucht eine skalierbare Anwendung ein gutes Backend.
! die Idee von SysDB war geboren
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
16. Die System DataBase
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 6
17. SysDB – ¨Uberblick
SysDB sammelt Informationen zu beliebigen Hardware- und
Software-Systemen
Einfache Beispiele:
Hosts und deren Eigenschaften (”Facts“)
Services und deren Eigenschaften
Monitoring-Informationen (z.B. Zustand)
Performance-Daten (z.B. CPU-Auslastung)
SysDB sammelt diese Informationen von verschiedenen Systemen
und korreliert zusammengeh¨orige Informationen
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 7
18. SysDB – wichtige Eigenschaften
https://github.com/tokkee/sysdb
CI: https://travis-ci.org/tokkee/sysdb
60% Code (Function) Unit-Test Coverage im Core
BSD Lizenz
Geschrieben in C
Einfach erweiterbar (einfache Plugin API)
Einfaches Netzwerk-Protokoll
Großteil des Codes als (Satz von) Bibliotheken implementiert
(wiederverwendbar)
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 8
19. SysDB – Plugins
Aktuell verf¨ugbar:
collectd::unixsock – query collectd’s UNIX socket interface
mk-livestatus – query Monitoring Systeme (Nagios, Naemon,
Icing, Shinken) ¨uber Check MK Livestatus
puppet::store-configs – query Puppet
cname::dns – Normierung von Hostnames mittels DNS
syslog – syslog Logging
Geplant: Passive Datensammlung (z.B. mittels Gearman), Foreman,
PuppetDB, $your favorite system (send patches!) :-)
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 9
20. SysDB – Architektur
infra
Backends
sysdbd
Store FE
sysdb
Netzwerk
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 10
21. Der SysDB Store
Die eigentliche Datenbank
Speichert Objekte verschiedener Typen
Host – jede Art physikalischer Ressource
Service – Dienst (im weitesten Sinne)
Attribute – Eigenschaften von Hosts oder Services
Normierung von Hosts (geplant: Services)
Jedes Objekt speichert Zeitpunkt der letzten Aktualisierung und
automatisch berechnetes Update-Intervall ! wichtig!
Schnittstelle zur Abfrage von Objekten
JSON als prim¨are externe Repr¨asentation von Objekten
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 11
22. Der SysDB Store – Beispiel
kvm0
kvm1
kvm2
ovirt0
vhost0
vhost0
vhost0
vhost0
vhost0
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 12
23. Interne Datenstrukturen
message Host {
required string name;
required DateTime last_update;
required Interval update_interval;
repeated Attribute attributes;
repeated Object children; // Host or Service
optional Object parent;
}
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 13
24. Interne Datenstrukturen
message Service {
required string name;
required DateTime last_update;
required Interval update_interval;
repeated Attribute attributes;
repeated Object children; // Host or Service
repeated Object parent; // mehrere!
}
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 14
25. Interne Datenstrukturen
message Attribute {
required string name;
required Type value;
required DateTime last_update;
required Interval update_interval;
optional Object parent;
}
Type ist Zahl, Dezimalzahl, String, DateTime oder Bin¨ar.
Geplant: benutzerdefinierte Datentypen.
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 15
26. Der SysDB Client
Interaktives Client-Programm f¨ur SysDB
Verbindet sich mit einem SysDB-Daemon
Interaktive Kommando-Shell
Asynchrone Log-Meldungen vom Server
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 16
27. Die SysDB Abfragesprache
Entfernt an SQL angelehnt
Darauf ausgelegt, auch einfach in RPCs verwendet zu werden
Noch sehr stark in der Entwicklung ;-)
Bislang unterst¨utzte Befehle:
LIST – Auflistung aller Hosts
FETCH hostname – Details eines Hosts
LOOKUP type WHERE expression – Details mehrerer
Hosts mit angegebenen Eigenschaften
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 17
28. Die SysDB Abfragesprache – Beispiel (I)
sysdb= LIST;
{hosts:[{
name: nagios.lxc.tokkee.net,
last_update: 2014-04-03 10:26:41 +0200,
update_interval: 5m4s
},{
name: puppet.lxc.tokkee.net,
last_update: 2014-04-05 11:04:08 +0200,
update_interval: 5m2s
},{
name: whisky.mobile.tokkee.net,
last_update: 2014-04-05 11:09:15 +0200,
update_interval: 10s
}]}
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 18
29. Die SysDB Abfragesprache – Beispiel (II)
sysdb= FETCH ’whisky.mobile.tokkee.net’;
{
name: whisky.mobile.tokkee.net,
last_update: 2014-04-05 11:09:15 +0200,
update_interval: 10s,
attributes: [{
name: architecture, value: amd64,
last_update: 2014-04-03 10:26:41 +0200,
update_interval: 5m3s
},{ ... }],
services: [{
name: cpu-0/cpu-idle,
last_update: 2014-03-31 23:34:06 +0200,
update_interval: 9.716754301s
},{ ... }]
c }2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 19
31. Anwendungsbeispiele
CMDB Ersatz bzw. Erweiterung
! neues Backend zur direkten Abfrage beliebiger Werte aus externen
Datenbanken
Abgleich diverser Backends (intelligenteres Monitoring)
! Welche Hosts / Services fehlen in welchem Backend?
! Wie ist der Gesamtstatus meiner Windows-Systeme in
Rechenzentrum XYZ?
Intelligentes Web-Frontend f¨ur mehrere Backends
! Zentrales Dashboard
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 21
33. Ausblick: k¨unftige Entwicklung
Mehr Dokumentation!
RDBMS Backend (PostgreSQL mit hstore, aber prinzipiell
modular)
Schnittstelle zur Abfrage von Performance-Daten
Verteilte Architektur (HA und Load-Balancing)
Web-Interface (in Go, wenn von mir ;-))
Ausbau des Typ-Systems und Filter-Syntax
Unterst¨utzung f¨ur andere Arten von Informationen (?):
Personen / Gruppen (ACLs, . . . )
Events / Kalender (Change-Requests, . . . )
. . .
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 23
34. SysDB – System DataBase
Danke f¨ur die Aufmerksamkeit!
Fragen, Kommentare, Anmerkungen, Rants?
Feedback:
http://glt14-programm.linuxtage.at/events/327.de.html
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 24
35. SysDB – System DataBase
Kontakt:
Sebastian “tokkee” Harl
sh@tokkee.org
https://github.com/tokkee/sysdb
Please send patches! :-)
c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 25