35
SysDB – System DataBase Ein Datenaggregator f¨ ur System-Informationen Sebastian ‘tokkee’ Harl <[email protected]> SysDB developer Grazer Linuxtage 2014 05. April 2014 Graz

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

Embed Size (px)

Citation preview

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

SysDB – System DataBaseEin Datenaggregator fur System-Informationen

Sebastian ‘tokkee’ Harl<[email protected]>

SysDB developer

Grazer Linuxtage 201405. April 2014

Graz

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

Disclaimer

HINWEIS:SysDB ist noch in einem fruhen Entwicklungsstadium.

Flaming, Bashing oder andere Formen von konstruktivemFeedback sind sehr willkommen! :-)

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 2

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

Motivation / Hintergrund

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 3

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

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

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

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

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

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

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

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

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

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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Geschichte

• Eigentlich wollte ich ein neues collectd Frontend fur große,heterogene Umgebungen.

• Erste Idee: Gruppierung von collectd-Datensatzen an Hand vonPuppet Facts der entsprechenden Hosts.

• Zweiter Gedanke: wenn man dass dann schon hat, kann man dieDaten auch gleich noch mit Monitoring Informationen annotieren.

• Und wenn man dann schon so weit ist, sollte man es gleichgenerisch 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

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

Die System DataBase

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 6

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

SysDB – Uberblick

• SysDB sammelt Informationen zu beliebigen Hardware- undSoftware-Systemen

• Einfache Beispiele:Hosts und deren Eigenschaften (”Facts“)Services und deren EigenschaftenMonitoring-Informationen (z.B. Zustand)Performance-Daten (z.B. CPU-Auslastung)

• SysDB sammelt diese Informationen von verschiedenen Systemenund korreliert zusammengehorige Informationen

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 7

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

SysDB – wichtige Eigenschaften

• https://github.com/tokkee/sysdbCI: 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

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

SysDB – Plugins

Aktuell verfugbar:

• 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

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

SysDB – Architektur

infra

Backends

Store FE

sysdbd

Netzwerk

sysdb

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 10

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

Der SysDB Store

• Die eigentliche Datenbank• Speichert Objekte verschiedener Typen

Host – jede Art physikalischer RessourceService – 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 primare externe Reprasentation von Objekten

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 11

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

Der SysDB Store – Beispiel

kvm0

kvm1

kvm2

ovirt0

vhost0

vhost0

vhost0

vhost0

vhost0

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 12

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

Interne Datenstrukturen

message Host {required string name;required DateTime last_update;required Interval update_interval;

repeated Attribute attributes;repeated Object children; // Host or Serviceoptional Object parent;

}

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 13

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

Interne Datenstrukturen

message Service {required string name;required DateTime last_update;required Interval update_interval;

repeated Attribute attributes;repeated Object children; // Host or Servicerepeated Object parent; // mehrere!

}

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 14

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

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 Binar.Geplant: benutzerdefinierte Datentypen.

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 15

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

Der SysDB Client

• Interaktives Client-Programm fur 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

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

Die SysDB Abfragesprache

• Entfernt an SQL angelehnt• Darauf ausgelegt, auch einfach in RPCs verwendet zu werden• Noch sehr stark in der Entwicklung ;-)• Bislang unterstutzte Befehle:

LIST – Auflistung aller HostsFETCH <hostname> – Details eines HostsLOOKUP <type> WHERE <expression> – Details mehrererHosts mit angegebenen Eigenschaften

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 17

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

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

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

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

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

Anwendungsbeispiele

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 20

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

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 fur mehrere Backends

→ Zentrales Dashboard

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 21

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

Ausblick: kunftige Entwicklung

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 22

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

Ausblick: kunftige 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• Unterstutzung fur andere Arten von Informationen (?):

Personen / Gruppen (ACLs, . . . )Events / Kalender (Change-Requests, . . . )

• . . .

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 23

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

SysDB – System DataBase

Danke fur 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

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

SysDB – System DataBase

Kontakt:Sebastian “tokkee” Harl

<[email protected]>

https://github.com/tokkee/sysdb

Please send patches! :-)

c© 2014 Sebastian ‘tokkee’ Harl Die System DataBase – Folie 25