Skip to main content

timeseries database with reduce system

Project description

.. figure:: screenshot.png
:alt: sample result

About
=====

``serialkiller`` time series database with reduce system, it kill the same time series ! :)

``serialkiller`` can be used in three different ways:
- In command line
- In http API REST mode
- From library

In future, ``serialkiller`` will be run in centralized or decentralized mode

Sample architecture

.. figure:: architecture.png
:alt: architecture example

Installing
==========

To install the latest release from `PyPI <http://pypi.python.org/pypi/serialkiller>`_

::

$ pip install serialkiller

To install the latest development version from `GitHub <https://github.com/badele/serialkiller>`_

::

$ pip install git+git://github.com/badele/serialkiller.git

Configuration & Examples
========================

Copy sk_config.cfg from serialkiller package to /etc/sk_config.cfg and edit your ``.bashrc``, add this line

::

SERIALKILLER_SETTINGS=/etc/sk_config.cfg

The default `sk_config.cfg`

::

STORAGE = "/tmp/sensors"
HOST = 0.0.0.0
PORT = 80
DEBUG = False

Now you can run the serialkiller standalone server with `sk_standalone`

::

sk_server &

You can also use the supervisor, it's prefered solution

Example of sk_server supervisor configuration

::

[program:sk_server]
command=sk_server
environment=SERIALKILLER_SETTINGS="/etc/sk_config.cfg"
user=username
autostart=true
autorestart=true
redirect_stderr=true
startsecs=5

Example, if now you would like add a minimal sensor (ex: online computer) with auto-configuration type sensor

::

# From command line
sk_command -a addvalue -s domsrv:computer:online -t byte -v value=255

# From REST API
wget serverip/api/1.0/addValue/domsrv:computer:online/byte/value=255

# From library
from serialkiller import lib
obj = lib.Sensor(args.directory, args.sensorid, args.type)
data = sktypes.newObj('byte', value=255)
obj.addValue(data)

List last sensors value

::

$ sk_command -a sensorslist

SensorId S Time Title Value
----------------------------- --- ------------------- ---------------------------- -----------
livingroom:demo:online 2014-01-31 08:50:55 Demo Online
livingroom:vaio:inuse X 2014-01-30 23:17:14 Utilisation du poste Locked
washroom:teleinfo:isousc 2014-01-31 08:51:00 Ampere souscrit 30
livingroom:p03:online 2014-01-31 08:51:00 Serveur de virtualisation Online
livingroom:vaio:online 2014-01-31 08:51:00 Portable stephanie Offline
washroom:teleinfo:hchp 2014-01-31 08:51:00 Heure pleine 39674892
washroom:teleinfo:papp 2014-01-31 08:51:00 Puissance en cours 1980
washroom:video:online 2014-01-31 08:50:55 Video server Online
livingroom:internet:available 2014-01-31 08:50:55 Conectiviteinternet Available
washroom:teleinfo:iinst X 2014-01-31 00:22:47 Ampere en cours 10
city:weather:sunshine 2014-01-31 08:50:55 Crepuscule du soleil Plein jours


Show sensor information

::

$ sk_command -a sensorinfos -s domsrv:teleinfo:papp -t ushort

Title Value
----------------------- --------------------------
Sensorid domsrv:teleinfo:papp
Sensor Type ushort
NB lines 109845
Min date 2012-06-27 16:43:00
Max date 2014-01-28 21:25:30
Min value 350 (2013-12-21 10:22:21)
Max value 6710 (2013-08-07 18:57:14)
Avg value 1578
Avg delta (round ratio) 303
Total size 1.361328125 Mo

Show last sensor value

::

$ sk_command -a last -s domsrv:teleinfo:papp -t ushort

1730

Show datas sensor

::

$ sk_command -a sensordatas -s domsrv:teleinfo:papp -t ushort -v tail=10

Time Value
------------------- -------
2014-01-28 20:35:24 1640
2014-01-28 20:43:33 1700
2014-01-28 20:45:50 1680
2014-01-28 20:45:55 1580
2014-01-28 20:46:51 1660
2014-01-28 21:20:01 1580
2014-01-28 21:20:17 1590
2014-01-28 21:20:22 1680
2014-01-28 21:22:13 1740
2014-01-28 21:27:46 1730


Reduce data

::

# Before reduce

Title Value
----------------------- --------------------------
Sensorid domsrv:teleinfo:papp
NB lines 514671
Min date 2012-06-27 18:43:00
Max date 2014-01-25 10:27:15
Min value 350 (2013-11-17 05:24:23)
Max value 6710 (2013-08-07 20:57:14)
Avg value 1301
Avg delta (round ratio) 76
Total size 6.3798828125 Mo

# reduce with 80 delta value

$ sk_command -a setproperty -s domsrv:teleinfo:papp -t ushort -v roundvalue=80
$ sk_command -a reduce -s domsrv:teleinfo:papp -t ushort

# Reduce result

Title Value
----------------------- --------------------------
Sensorid domsrv:teleinfo:papp
NB lines 107304
Min date 2012-06-27 18:43:00
Max date 2014-01-25 10:27:15
Min value 350 (2013-12-21 11:22:21)
Max value 6710 (2013-08-07 20:57:14)
Avg value 1575
Avg delta (round ratio) 302
Total size 1.330078125 Mo

**Compression ratio = 480%**

You can also use the `serialkiller-plugins <https://github.com/badele/serialkiller-plugins>`_ for push the sensors results. See the `serialkiller-plugins example <https://github.com/badele/serialkiller-plugins/blob/master/README.rst#script-example>`_

You can also point your web navigator to http://youipserver for list all JSON functions:

::

{

"/": "All serialkiller API functions",
"/api/1.0/": "All serialkiller API functions",
"/api/1.0/addEvent/<sensorid>/<type>/<values>": "Add a new event, no deduplicate",
"/api/1.0/addValue/<sensorid>/<type>/<values>": "Add a new value, deduplicate line",
"/api/1.0/list": "List all last sensors"
}


You can also see the result directely in my personnal `website <http://domotique.adele.im>`_Changelog
=========

Version 0.0.2 (2014-02-08)
--------------------------

* Add skfloat type
* Add unittest
* Use supervisor for launch sk_server
* Add sensor informations and reduce system
* Lock file for concurent access
* Replace chart.js by d3.js
* Add metadata properties
* Rename SerialKiller class to Sensor

Version 0.0.1 (2013-12-29)
--------------------------

* First version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

serialkiller-0.0.2.tar.gz (85.4 kB view details)

Uploaded Source

File details

Details for the file serialkiller-0.0.2.tar.gz.

File metadata

File hashes

Hashes for serialkiller-0.0.2.tar.gz
Algorithm Hash digest
SHA256 86231f0e41d2cec3fbff606e915a50aab1872de66e0847241dda34545bca5985
MD5 306cd3885452661e35eb64529cbf6d67
BLAKE2b-256 4a10d719f1e3f5d1e9655e4c2ee678a147bc714b99afa7b7b2c8b5e1ec2ef5d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page