Skip to content

sysdb/sysdb

Repository files navigation

        SysDB -- a system management and inventory collection service
       ===============================================================

  “System DataBase” (SysDB) is a multi-backend system management and inventory
  collection service. It stores system and inventory information about
  hardware and software systems. This information is (continuously) collected
  from various configurable backends (inventory services, monitoring services,
  etc.) and stored in a graph-like hierarchy of generic objects. The store may
  be queried through a generic interface independent of the active backends.
  Object names are canonicalized before they are added to the store to ensure
  a consistent view of your infrastructure.

  The central object type is a host, which generally represents a physical or
  virtual machine or any other type of physical resource. Hosts, in turn, may
  reference a list of services which represent any kind of logical resource
  like a software system. Both, hosts and services, may reference a list of
  attributes which represent further information about the respective host or
  service object. For example, attributes may specify static information like
  a host's architecture or the software version. A host may also reference a
  list of metrics which are references to performance data stored about the
  host. SysDB supports querying the respective time-series from a backend's
  data store.

  SysDB is free and open source software, licensed under the 2-clause BSD
  license. See COPYING for details. Changes between all SysDB releases can be
  found in the file ReleaseNotes.

  <https://sysdb.io/>

Configure and install SysDB
---------------------------

  To configure, build and install SysDB with the default settings, run
  ‘./configure && make && make install’. For detailed, generic instructions
  see INSTALL. For a complete list of configure options and their description,
  run ‘./configure --help’.

  Various third-party packages are required for a full installation of SysDB.
  See the section ‘Prerequisites’ below for details. A summary of
  user-supplied and auto-detected build settings is displayed at the end of
  each ‘configure’ run. Consult this first for trouble-shooting.

  By default, SysDB will be installed into ‘/opt/sysdb’. You can adjust this
  setting by specifying the ‘--prefix’ configure option - see INSTALL for
  details. If you pass DESTDIR=<path> to ‘make install’, <path> will be
  prefixed to all installation directories. This might be useful when creating
  packages for SysDB.

Prerequisites
-------------

  To compile the SysDB package from source you need:

  * A build environment: autotools, libtool, C and C++ compilers, ...

    <http://www.gnu.org/software/automake/>
    <http://www.gnu.org/software/autoconf/>
    <http://www.gnu.org/software/libtool/>
    <http://www.freedesktop.org/wiki/Software/pkg-config/>
    <http://gcc.gnu.org/>

  * When building from Git, you also need the flex lexical analyzer generator
    and bison parser generator (other lex and yacc compatible tools might work
    as well if you are lucky).

    <http://www.gnu.org/software/bison/>
    <http://flex.sourceforge.net/>

  * A POSIX + Single UNIX Specification compatible C library.

    <http://pubs.opengroup.org/onlinepubs/9699919799/>

  * asciidoc, xmlto:
    The AsciiDoc text document format is used to write the manpages.

    <http://www.methods.co.nz/asciidoc/>
    <https://fedorahosted.org/xmlto/>

  * libedit or libreadline:
    A readline compatible command line editor and history library is used for
    handling input in the sysdb client program.

    <http://thrysoee.dk/editline/>
    <http://tiswww.case.edu/php/chet/readline/rltop.html>

  The following optional libraries may be used by various plugins:

  * libdbi:
    The database independent abstraction layer is used for database access by
    the backend::puppet::store-configs plugin.

    <http://libdbi.sourceforge.net/>

  * libfacter:
    The cfacter library for gathering facts about a system is used by the
    backend::facter plugin to retrieve attributes about the local system.

    <https://github.com/puppetlabs/cfacter>

  * librrd:
    The RRDtool library is used by the timeseries::rrdtool plugin to retrieve
    time-series from RRD files.

    <https://oss.oetiker.ch/rrdtool/>

  * libssl:
    The Secure Sockets Layer toolkit library is used to encrypt and
    authenticate TCP connections.

    <http://openssl.org/>

Testing
-------

  Unit and integration tests for SysDB are shipped along with the source code
  in the ‘t’ subdirectory. Run ‘make test’ to run all available tests or use
  the following commands to run unit and integration tests separately:

    make test TESTS='$(UNIT_TESTS)'
    make test TESTS='$(INTEGRATION_TESTS)'

  Some tests require the ‘fopencookie’ function as provided by the GNU libc
  library. It used used to mock I/O related functions. In case this function
  is not available, the respective tests will be disabled automatically.

  The integration tests require valgrind. If it is not available, integration
  tests will be disabled automatically.

  For the latest build status, see:
  <https://travis-ci.org/sysdb/sysdb>

  Code coverage testing using Gcov may be enabled when using the
  ‘--enable-gcov’ configure option.

  For the latest coverage report, see:
  <https://coveralls.io/r/sysdb/sysdb>

Documentation
-------------

  All documentation for SysDB is available as manual pages (in roff and HTML
  formats) and shipped alongside the source code in the doc/ subdirectory.
  Also, it is available online at <https://sysdb.io/documentation/>.

Getting Help
------------

  Various channels for asynchronous and real-time communication with
  developers and users are available. See <https://sysdb.io/contact/> for
  details about the mailing list, IRC channel, and social media.

Author
------

  Sebastian “tokkee” Harl <sh@tokkee.org>

  See the file THANKS for credits and inspiration.

  Want to contribute? Check out the website <https://sysdb.io> for details.