SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
SysDB – System DataBase 
Ein Datenaggregator f¨ur System-Informationen 
Sebastian ‘tokkee’ Harl 
<sh@tokkee.org> 
SysDB developer 
Grazer Linuxtage 2014 
05. April 2014 
Graz
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
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 DataBase – Folie 4
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
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
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
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
Geschichte 
 Eigentlich wollte ich ein neues collectd Frontend f¨ur große, 
heterogene Umgebungen. 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 5
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
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
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
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
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
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
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: 
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
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
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
SysDB – Architektur 
infra 
Backends 
sysdbd 
Store FE 
sysdb 
Netzwerk 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 10
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
Der SysDB Store – Beispiel 
kvm0 
kvm1 
kvm2 
ovirt0 
vhost0 
vhost0 
vhost0 
vhost0 
vhost0 

c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 12
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
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
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
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
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
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
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
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 
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
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) 
 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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Python crash-kurs
Python crash-kursPython crash-kurs
Python crash-kursklausbremer
 
The Linux File System
The Linux File SystemThe Linux File System
The Linux File Systemsteffenbauer
 
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...NETWAYS
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 

Was ist angesagt? (6)

Python crash-kurs
Python crash-kursPython crash-kurs
Python crash-kurs
 
The Linux File System
The Linux File SystemThe Linux File System
The Linux File System
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
Nagios Conference 2007 | Monitoring von Logfiles mit check_logfiles by Gerhar...
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 

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

OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenB1 Systems GmbH
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
Webinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit HadoopWebinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit Hadoopfun communications GmbH
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaGeorg Knon
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunk
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunk
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit RustJens Siebert
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenB1 Systems GmbH
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Nane Kratzke
 
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebeninovex GmbH
 
Object-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopObject-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopWaldemar Dell
 
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...flimm
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
Apple iOS - Daten
Apple iOS - DatenApple iOS - Daten
Apple iOS - Datenmesseb
 

Ähnlich wie SysDB – System DataBase — Ein Datenaggregator für System-Informationen (20)

OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Webinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit HadoopWebinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit Hadoop
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSiebenFusion der Welten: Hadoop als DWH-Backend bei ProSieben
Fusion der Welten: Hadoop als DWH-Backend bei ProSieben
 
Object-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - WorkshopObject-orientied way of using mysqli interface - Workshop
Object-orientied way of using mysqli interface - Workshop
 
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...
Aufbau eines Institutsgesamtkatalogs aus OpenSource-Komponenten am Beispiel d...
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
Apple iOS - Daten
Apple iOS - DatenApple iOS - Daten
Apple iOS - Daten
 
coshsh
coshshcoshsh
coshsh
 

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
  • 3. Motivation / Hintergrund c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 3
  • 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
  • 30. Anwendungsbeispiele c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 20
  • 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. Ausblick: k¨unftige Entwicklung c 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 22
  • 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