SlideShare a Scribd company logo
SysDB – System DataBase 
a system management and inventory collection service 
Sebastian ‘tokkee’ Harl 
<sh@tokkee.org> 
SysDB developer 
Open Source Data Center Conference 2014 
April, 10 2014 
Berlin
Disclaimer 
WARNING: 
SysDB is still under heavy development. 
Flaming, bashing or other forms of constructive 
feeback are very appreciated :-) 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 2
Background / Motivation 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 3
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Who also uses Puppet/Chef/etc.? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Who also uses Puppet/Chef/etc.? 
 Who also uses collectd/Munin/etc.? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Who also uses Puppet/Chef/etc.? 
 Who also uses collectd/Munin/etc.? 
 Who also uses some inventory service? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Who also uses Puppet/Chef/etc.? 
 Who also uses collectd/Munin/etc.? 
 Who also uses some inventory service? 
 Who also maintains a CMDB? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
Motivation 
Why SysDB? 
 Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? 
 Who also uses Puppet/Chef/etc.? 
 Who also uses collectd/Munin/etc.? 
 Who also uses some inventory service? 
 Who also maintains a CMDB? 
 Who likes their setup? ;-) 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 
 Second thought: oh, then we can also add monitoring 
information. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 
 Second thought: oh, then we can also add monitoring 
information. 
 Then: this should be generic and extensible. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 
 Second thought: oh, then we can also add monitoring 
information. 
 Then: this should be generic and extensible. 
 Then I realized that I don’t like web development. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 
 Second thought: oh, then we can also add monitoring 
information. 
 Then: this should be generic and extensible. 
 Then I realized that I don’t like web development. 
 Also, a system like that would need a good back-end. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
History 
 Initially, I wanted a new front-end for collectd suitable for large, 
heterogeneous environments. 
 First idea: group graphs using Puppet facts. 
 Second thought: oh, then we can also add monitoring 
information. 
 Then: this should be generic and extensible. 
 Then I realized that I don’t like web development. 
 Also, a system like that would need a good back-end. 
 ! the idea for SysDB was born 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
The System DataBase 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 6
SysDB – Overview 
 SysDB collects information about arbitrary hardware and software 
systems. 
 The central idea is to get a central view of your infrastructure. 
 Simple examples: 
Hosts and their attributes (“facts”) 
Services and their attributes 
Monitoring information (e.g. current state) 
 SysDB collects these information and correlates objects from 
various backends. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 7
SysDB – core features 
 https://github.com/tokkee/sysdb 
CI: https://travis-ci.org/tokkee/sysdb 
 60% code (function) unit-test coverage in the core 
 BSD license 
 Written in C 
 Easy to extend (simple plugin API) 
 Simple network protocol 
 Most of the code implemented as a library (reusable) 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 8
SysDB – Plugins 
Currently available: 
 collectd::unixsock – query collectd’s UNIX socket interface 
 mk-livestatus – query Monitoring systems (Nagios, Naemon, 
Icing, Shinken) using Check MK Livestatus 
 puppet::store-configs – query Puppet 
 cname::dns – canonicalize host-names using DNS 
 syslog – syslog logging 
Planned: Passive data collection (e.g. using Gearman), Foreman, 
PuppetDB, $your favorite system (send patches!) :-) 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 9
SysDB – Architecture 
infra 
backends 
sysdbd 
store FE 
sysdb 
network 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 10
The SysDB Store 
 The actual database implementation (in memory) 
 Stores generic objects: 
Host – any kind of physical resource 
Service – any kind of service 
Attribute – attributes of hosts and services 
 Canonicalization of hosts 
 Each object stores the timestamp of the last update and the 
(automatically calculated) update interval 
 Interface to query data 
 JSON is the external data representation 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 11
The SysDB Store – Examples 
kvm0 
kvm1 
kvm2 
ovirt0 
vhost0 
vhost0 
vhost0 
vhost0 
vhost0 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 12
Internal Data Structures 
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 The System DataBase – slide 13
Internal Data Structures 
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; // multiple! 
} 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 14
Internal Data Structures 
message Attribute { 
required string name; 
required Type value; 
required DateTime last_update; 
required Interval update_interval; 
optional Object parent; 
} 
Type is either an integer, floating point number, DateTime or binary 
data. 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 15
The SysDB Client 
 Interactive client program for SysDB 
 Connects to a SysDB daemon 
 Interactive command shell 
 Receives and displays asynchronous log messages 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 16
The SysDB Query Language 
 Remotely similar to SQL 
 Meant to be easily usable in RPCs 
 Still under heavy development ;-) 
 Currently supported commands: 
LIST – returns all hosts 
FETCH hostname – returns details for a host 
LOOKUP hosts WHERE expression – query details for 
multiple hosts based on their attributes 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 17
The SysDB Query Language – Example(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 The System DataBase – slide 18
The SysDB Query Language – Example(II) 
sysdb= LOOKUP hosts WHERE attribute.architecture = ’amd64’ 
AND service.name =˜ ’postgres’; 
{ 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 The System DataBase – slide 19
Use Cases 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 20
Use Cases 
 Extend (replace?) your CMDB 
! put the CMDB behind and query it through SysDB 
 Compare the back-ends (monitoring) 
! Which hosts / services are missing in a back-end? 
! What is the global status of all Windows systems in some 
data-center? 
 More flexible web-frontend combining multiple back-ends 
! central dashboard 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 21
Future Directions 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 22
Future Directions 
 More documentation! 
 RDBMS store back-end (?) 
 Interface to query live data (monitoring status, metrics) from 
backends 
 Distributed architecture (HA and load-balancing) 
 Web-Interface 
 Extend the type system and filters 
 Add support for related informationen (?): 
persons / groups (ACLs, . . . ) 
Events / calendar (Change-Requests, . . . ) 
 . . . 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 23
SysDB – System DataBase 
Thank you for your attention! 
Questions, comments, rants? 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 24
SysDB – System DataBase 
Contakt: 
Sebastian “tokkee” Harl 
sh@tokkee.org 
https://github.com/tokkee/sysdb 
Please send patches! :-) 

c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 25

More Related Content

PDF
SysDB — The system management and inventory collection service
PDF
InfluxDB IOx Tech Talks: Query Processing in InfluxDB IOx
PDF
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
PDF
From HelloWorld to Configurable and Reusable Apache Spark Applications in Sca...
PDF
InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...
PDF
Extending Flux to Support Other Databases and Data Stores | Adam Anthony | In...
PPTX
High Performance, High Reliability Data Loading on ClickHouse
PDF
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka
SysDB — The system management and inventory collection service
InfluxDB IOx Tech Talks: Query Processing in InfluxDB IOx
InfluxDB IOx Tech Talks: Query Engine Design and the Rust-Based DataFusion in...
From HelloWorld to Configurable and Reusable Apache Spark Applications in Sca...
InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...
Extending Flux to Support Other Databases and Data Stores | Adam Anthony | In...
High Performance, High Reliability Data Loading on ClickHouse
Fast Insight from Fast Data: Integrating ClickHouse and Apache Kafka

What's hot (20)

PDF
Webinar: Strength in Numbers: Introduction to ClickHouse Cluster Performance
PDF
Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
PPTX
Hive : WareHousing Over hadoop
PDF
Introduction to Apache Hive
ODP
Cascalog internal dsl_preso
PPT
Upgrading To The New Map Reduce API
PDF
The Hadoop Ecosystem
PDF
Introduction to Sqoop | Big Data Hadoop Spark Tutorial | CloudxLab
PPTX
Spark Summit East 2017: Apache spark and object stores
PDF
ClickHouse Defense Against the Dark Arts - Intro to Security and Privacy
PDF
Polyglot ClickHouse -- ClickHouse SF Meetup Sept 10
PDF
Introduction to SparkR | Big Data Hadoop Spark Tutorial | CloudxLab
PDF
Scala+data
PDF
Introduction to Apache Hive | Big Data Hadoop Spark Tutorial | CloudxLab
PPTX
mesos-devoxx14
PDF
Making Structured Streaming Ready for Production
PPT
Benedutch 2011 ew_ppt
PPTX
Ten tools for ten big data areas 04_Apache Hive
PDF
Hadoop operations basic
PPTX
Apache Hive
Webinar: Strength in Numbers: Introduction to ClickHouse Cluster Performance
Hadoop Performance Optimization at Scale, Lessons Learned at Twitter
Hive : WareHousing Over hadoop
Introduction to Apache Hive
Cascalog internal dsl_preso
Upgrading To The New Map Reduce API
The Hadoop Ecosystem
Introduction to Sqoop | Big Data Hadoop Spark Tutorial | CloudxLab
Spark Summit East 2017: Apache spark and object stores
ClickHouse Defense Against the Dark Arts - Intro to Security and Privacy
Polyglot ClickHouse -- ClickHouse SF Meetup Sept 10
Introduction to SparkR | Big Data Hadoop Spark Tutorial | CloudxLab
Scala+data
Introduction to Apache Hive | Big Data Hadoop Spark Tutorial | CloudxLab
mesos-devoxx14
Making Structured Streaming Ready for Production
Benedutch 2011 ew_ppt
Ten tools for ten big data areas 04_Apache Hive
Hadoop operations basic
Apache Hive
Ad

Similar to SysDB – System DataBase — a system management and inventory collection service (20)

PDF
OSDC 2014: Sebastian Harl - SysDB the system management and inventory collect...
PDF
OpenNebula, the foreman and CentOS play nice, too
PPTX
PHP Continuous Data Processing
PPTX
Apache Spark and Object Stores —for London Spark User Group
DOCX
presentation.docx
PDF
Puppet Camp London 2014: Keynote
PPTX
Get started with Microsoft SQL Polybase
PDF
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
PDF
Puppet Camp DC 2014: Keynote
PDF
Data science for infrastructure dev week 2022
PDF
Docker včera, dnes a zítra
PPTX
Data relay introduction to big data clusters
PDF
Kubernetes - Shifting the mindset from servers to containers - microxchg 201...
PPTX
Serverless Data Architecture at scale on Google Cloud Platform
PPT
Honu - A Large Scale Streaming Data Collection and Processing Pipeline__Hadoo...
PDF
OSMC 2009 | Icinga by Icinga Team
PDF
Puppet Camp Dallas 2014: Puppet Keynote
PDF
breed_python_tx_redacted
PDF
Dynamic Hadoop Clusters
PDF
Puppet Camp Tokyo 2014: Keynote
OSDC 2014: Sebastian Harl - SysDB the system management and inventory collect...
OpenNebula, the foreman and CentOS play nice, too
PHP Continuous Data Processing
Apache Spark and Object Stores —for London Spark User Group
presentation.docx
Puppet Camp London 2014: Keynote
Get started with Microsoft SQL Polybase
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data Everywhere
Puppet Camp DC 2014: Keynote
Data science for infrastructure dev week 2022
Docker včera, dnes a zítra
Data relay introduction to big data clusters
Kubernetes - Shifting the mindset from servers to containers - microxchg 201...
Serverless Data Architecture at scale on Google Cloud Platform
Honu - A Large Scale Streaming Data Collection and Processing Pipeline__Hadoo...
OSMC 2009 | Icinga by Icinga Team
Puppet Camp Dallas 2014: Puppet Keynote
breed_python_tx_redacted
Dynamic Hadoop Clusters
Puppet Camp Tokyo 2014: Keynote
Ad

Recently uploaded (20)

PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Getting Started with Data Integration: FME Form 101
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Getting started with AI Agents and Multi-Agent Systems
PPT
Geologic Time for studying geology for geologist
PDF
Developing a website for English-speaking practice to English as a foreign la...
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
Unlock new opportunities with location data.pdf
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
Module 1.ppt Iot fundamentals and Architecture
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Zenith AI: Advanced Artificial Intelligence
Hindi spoken digit analysis for native and non-native speakers
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Enhancing emotion recognition model for a student engagement use case through...
Getting Started with Data Integration: FME Form 101
A contest of sentiment analysis: k-nearest neighbor versus neural network
A review of recent deep learning applications in wood surface defect identifi...
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Getting started with AI Agents and Multi-Agent Systems
Geologic Time for studying geology for geologist
Developing a website for English-speaking practice to English as a foreign la...
O2C Customer Invoices to Receipt V15A.pptx
Unlock new opportunities with location data.pdf
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
A comparative study of natural language inference in Swahili using monolingua...

SysDB – System DataBase — a system management and inventory collection service

  • 1. SysDB – System DataBase a system management and inventory collection service Sebastian ‘tokkee’ Harl <sh@tokkee.org> SysDB developer Open Source Data Center Conference 2014 April, 10 2014 Berlin
  • 2. Disclaimer WARNING: SysDB is still under heavy development. Flaming, bashing or other forms of constructive feeback are very appreciated :-) c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 2
  • 3. Background / Motivation c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 3
  • 4. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 5. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? Who also uses Puppet/Chef/etc.? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 6. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? Who also uses Puppet/Chef/etc.? Who also uses collectd/Munin/etc.? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 7. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? Who also uses Puppet/Chef/etc.? Who also uses collectd/Munin/etc.? Who also uses some inventory service? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 8. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? Who also uses Puppet/Chef/etc.? Who also uses collectd/Munin/etc.? Who also uses some inventory service? Who also maintains a CMDB? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 9. Motivation Why SysDB? Who uses Nagios/Icinga/Naemon/OpenNMS/etc.? Who also uses Puppet/Chef/etc.? Who also uses collectd/Munin/etc.? Who also uses some inventory service? Who also maintains a CMDB? Who likes their setup? ;-) c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 4
  • 10. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 11. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 12. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. Second thought: oh, then we can also add monitoring information. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 13. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. Second thought: oh, then we can also add monitoring information. Then: this should be generic and extensible. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 14. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. Second thought: oh, then we can also add monitoring information. Then: this should be generic and extensible. Then I realized that I don’t like web development. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 15. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. Second thought: oh, then we can also add monitoring information. Then: this should be generic and extensible. Then I realized that I don’t like web development. Also, a system like that would need a good back-end. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 16. History Initially, I wanted a new front-end for collectd suitable for large, heterogeneous environments. First idea: group graphs using Puppet facts. Second thought: oh, then we can also add monitoring information. Then: this should be generic and extensible. Then I realized that I don’t like web development. Also, a system like that would need a good back-end. ! the idea for SysDB was born c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 5
  • 17. The System DataBase c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 6
  • 18. SysDB – Overview SysDB collects information about arbitrary hardware and software systems. The central idea is to get a central view of your infrastructure. Simple examples: Hosts and their attributes (“facts”) Services and their attributes Monitoring information (e.g. current state) SysDB collects these information and correlates objects from various backends. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 7
  • 19. SysDB – core features https://github.com/tokkee/sysdb CI: https://travis-ci.org/tokkee/sysdb 60% code (function) unit-test coverage in the core BSD license Written in C Easy to extend (simple plugin API) Simple network protocol Most of the code implemented as a library (reusable) c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 8
  • 20. SysDB – Plugins Currently available: collectd::unixsock – query collectd’s UNIX socket interface mk-livestatus – query Monitoring systems (Nagios, Naemon, Icing, Shinken) using Check MK Livestatus puppet::store-configs – query Puppet cname::dns – canonicalize host-names using DNS syslog – syslog logging Planned: Passive data collection (e.g. using Gearman), Foreman, PuppetDB, $your favorite system (send patches!) :-) c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 9
  • 21. SysDB – Architecture infra backends sysdbd store FE sysdb network c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 10
  • 22. The SysDB Store The actual database implementation (in memory) Stores generic objects: Host – any kind of physical resource Service – any kind of service Attribute – attributes of hosts and services Canonicalization of hosts Each object stores the timestamp of the last update and the (automatically calculated) update interval Interface to query data JSON is the external data representation c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 11
  • 23. The SysDB Store – Examples kvm0 kvm1 kvm2 ovirt0 vhost0 vhost0 vhost0 vhost0 vhost0 c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 12
  • 24. Internal Data Structures 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 The System DataBase – slide 13
  • 25. Internal Data Structures 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; // multiple! } c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 14
  • 26. Internal Data Structures message Attribute { required string name; required Type value; required DateTime last_update; required Interval update_interval; optional Object parent; } Type is either an integer, floating point number, DateTime or binary data. c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 15
  • 27. The SysDB Client Interactive client program for SysDB Connects to a SysDB daemon Interactive command shell Receives and displays asynchronous log messages c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 16
  • 28. The SysDB Query Language Remotely similar to SQL Meant to be easily usable in RPCs Still under heavy development ;-) Currently supported commands: LIST – returns all hosts FETCH hostname – returns details for a host LOOKUP hosts WHERE expression – query details for multiple hosts based on their attributes c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 17
  • 29. The SysDB Query Language – Example(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 The System DataBase – slide 18
  • 30. The SysDB Query Language – Example(II) sysdb= LOOKUP hosts WHERE attribute.architecture = ’amd64’ AND service.name =˜ ’postgres’; { 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 The System DataBase – slide 19
  • 31. Use Cases c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 20
  • 32. Use Cases Extend (replace?) your CMDB ! put the CMDB behind and query it through SysDB Compare the back-ends (monitoring) ! Which hosts / services are missing in a back-end? ! What is the global status of all Windows systems in some data-center? More flexible web-frontend combining multiple back-ends ! central dashboard c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 21
  • 33. Future Directions c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 22
  • 34. Future Directions More documentation! RDBMS store back-end (?) Interface to query live data (monitoring status, metrics) from backends Distributed architecture (HA and load-balancing) Web-Interface Extend the type system and filters Add support for related informationen (?): persons / groups (ACLs, . . . ) Events / calendar (Change-Requests, . . . ) . . . c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 23
  • 35. SysDB – System DataBase Thank you for your attention! Questions, comments, rants? c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 24
  • 36. SysDB – System DataBase Contakt: Sebastian “tokkee” Harl sh@tokkee.org https://github.com/tokkee/sysdb Please send patches! :-) c 2014 Sebastian ‘tokkee’ Harl The System DataBase – slide 25