SysDB – System DataBase 
Ein Datenaggregator f¨ur System-Informationen 
Sebastian ‘tokkee’ Harl 
<sh@tokkee.org> 
SysDB de...
Disclaimer 
HINWEIS: 
SysDB ist noch in einem fr¨uhen Entwicklungsstadium. 
Flaming, Bashing oder andere Formen von konstr...
Motivation / Hintergrund 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 3
Motivation 
Warum SysDB? 
 Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? 

c 2014 Sebastian ‘tokkee’ Harl Die System Da...
Motivation 
Warum SysDB? 
 Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Wer verwendet außerdem Puppet/Chef/etc.? 

c...
Motivation 
Warum SysDB? 
 Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Wer verwendet außerdem Puppet/Chef/etc.? 
 W...
Motivation 
Warum SysDB? 
 Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Wer verwendet außerdem Puppet/Chef/etc.? 
 W...
Motivation 
Warum SysDB? 
 Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Wer verwendet außerdem Puppet/Chef/etc.? 
 W...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 

c 2014 Sebastian ‘tok...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 
 Erste Idee: Gruppieru...
Die System DataBase 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 6
SysDB – ¨Uberblick 
 SysDB sammelt Informationen zu beliebigen Hardware- und 
Software-Systemen 
 Einfache Beispiele: 
Hos...
SysDB – wichtige Eigenschaften 
 https://github.com/tokkee/sysdb 
CI: https://travis-ci.org/tokkee/sysdb 
 60% Code (Funct...
SysDB – Plugins 
Aktuell verf¨ugbar: 
 collectd::unixsock – query collectd’s UNIX socket interface 
 mk-livestatus – query...
SysDB – Architektur 
infra 
Backends 
sysdbd 
Store FE 
sysdb 
Netzwerk 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBa...
Der SysDB Store 
 Die eigentliche Datenbank 
 Speichert Objekte verschiedener Typen 
Host – jede Art physikalischer Ressou...
Der SysDB Store – Beispiel 
kvm0 
kvm1 
kvm2 
ovirt0 
vhost0 
vhost0 
vhost0 
vhost0 
vhost0 

c 2014 Sebastian ‘tokkee’ H...
Interne Datenstrukturen 
message Host { 
required string name; 
required DateTime last_update; 
required Interval update_i...
Interne Datenstrukturen 
message Service { 
required string name; 
required DateTime last_update; 
required Interval updat...
Interne Datenstrukturen 
message Attribute { 
required string name; 
required Type value; 
required DateTime last_update; ...
Der SysDB Client 
 Interaktives Client-Programm f¨ur SysDB 
 Verbindet sich mit einem SysDB-Daemon 
 Interaktive Kommando-...
Die SysDB Abfragesprache 
 Entfernt an SQL angelehnt 
 Darauf ausgelegt, auch einfach in RPCs verwendet zu werden 
 Noch s...
Die SysDB Abfragesprache – Beispiel (I) 
sysdb= LIST; 
{hosts:[{ 
name: nagios.lxc.tokkee.net, 
last_update: 2014-04-03 10...
Die SysDB Abfragesprache – Beispiel (II) 
sysdb= FETCH ’whisky.mobile.tokkee.net’; 
{ 
name: whisky.mobile.tokkee.net, 
la...
Anwendungsbeispiele 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 20
Anwendungsbeispiele 
 CMDB Ersatz bzw. Erweiterung 
! neues Backend zur direkten Abfrage beliebiger Werte aus externen 
Da...
Ausblick: k¨unftige Entwicklung 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 22
Ausblick: k¨unftige Entwicklung 
 Mehr Dokumentation! 
 RDBMS Backend (PostgreSQL mit hstore, aber prinzipiell 
modular) 
...
SysDB – System DataBase 
Danke f¨ur die Aufmerksamkeit! 
Fragen, Kommentare, Anmerkungen, Rants? 
Feedback: 
http://glt14-...
SysDB – System DataBase 
Kontakt: 
Sebastian “tokkee” Harl 
sh@tokkee.org 
https://github.com/tokkee/sysdb 
Please send pa...
Nächste SlideShare
Wird geladen in …5
×

SysDB – System DataBase — Ein Datenaggregator für System-Informationen

385 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
385
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

SysDB – System DataBase — Ein Datenaggregator für System-Informationen

  1. 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. 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
  3. 3. Motivation / Hintergrund c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 3
  4. 4. Motivation Warum SysDB? Wer verwendet Nagios/Icinga/Naemon/OpenNMS/etc.? c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 4
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. Die System DataBase c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 6
  17. 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. 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. 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. 20. SysDB – Architektur infra Backends sysdbd Store FE sysdb Netzwerk c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 10
  21. 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. 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. 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. 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. 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. 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. 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. 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. 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
  30. 30. Anwendungsbeispiele c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 20
  31. 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
  32. 32. Ausblick: k¨unftige Entwicklung c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 22
  33. 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. 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. 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

×