Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ondratu/mqttorrd

Creating RRD from MQTT
https://github.com/ondratu/mqttorrd

Last synced: 3 months ago
JSON representation

Creating RRD from MQTT

Awesome Lists containing this project

README

        

MQTToRRD
========

Like as `MQTT2RRD `_ and it's forks,
MQTToRRD create round robin database files from MQTT messages.

Tool daemon is based on ``poho-mqtt`` and ``python-daemon`` packages. All
dependencies are listed in ``requirements.txt`` file. As Python 2.x
is deprecated, tool is write for Python 3.5 or more only. For example
``signal.Signals`` class is use.

Usage
-----

.. code::

usage: $(prog)s [options] command

Create round robind database files form MQTT.

positional arguments:
command Daemon action (start|stop|restart|status)

optional arguments:
-h, --help show this help message and exit
-c , --config
Path to config file.
-f, --foreground Run as script on foreground

Install
-------

.. code:: bash

~# pip3 install mqttorrd

Configuration
-------------

[daemon]
~~~~~~~~
:data_dir: Directory to store round robin database files. Default value is
``/var/lib/mqttorrd``.
:pid_file: Path of file with pid. Default value is ``/var/run/mqttorrd.pid``.
:user: Daemon user, default ``nobody``.
:group: Daemon group, default ``nogroup``.

Data directory must be writer with user or group as pid file. Each value from
MQTT broker is store to it's rrd file with path from topic. For example:
``/var/lib/mqttorrd/garden/pool/temperature.rrd``.

[logging]
~~~~~~~~~
:handler: Python logging handler. Possible values are ``file`` or ``syslog``.
When tool is run at foreground, ``stderr`` handler is use. On UNIX
like systems, `WatchedFileHandler
`_
is used. Defaults to ``syslog``.
:syslog: Syslog connection, ``/dev/log`` by default. ``LOG_DAEMON`` facility
is used.
:file: Path to log file if ``file`` handler is used. Defaults to
``/var/log/mqttorrd.log``.
:level: One of Python logging level: ``DEBUG, INFO, WARNING, ERROR,
CRITICAL``. Default value is ``ERROR``.
:format: Logging format. Default value is
``%(asctime)s %(levelname)s: %(name)s: %(message)s "{%(funcName)s():%(lineno)d}``.

[mqtt]
~~~~~~
:client_id: MQTT client id. If is not defined, it is generate automatically.
:hostname: Broker hostname, ``localhost`` by default.
:port: Broker port, ``1883`` is **allways** default.
:keepalive: The keepalive timeout value for the client. Defaults to ``60``
seconds.
:tls: TLS connection, default ``False``.
:ca_certs: Path to the Certificate Authority certificate. If is not set, system
certs path is use.
:certfile: Client public certificate file.
:keyfile: Client primary key file.
:username: Client username
:password: Client password
:subscriptions: Coma separated topics to subscribe. Default value is ``/#``.

[/#]
~~~~
For any topics could be defined own RRD parameters. MQTT characters like ``#``
and ``+`` could be use. If new topic message was received,first definition,
which is matched is used. If database file is exist yet, only value are update.
For more information see https://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html.

:step: Round Robin Database step. Defaults to ``60`` seconds.
:DS: Data source definition. Default value is
``DS:{topic}:GAUGE:120:U:U``, where ``{topic}`` is replaced with
file name as last topics part.
:RRA: Value archive definition. Default value is

.. code::

RRA:AVERAGE:0.5:2:30,
RRA:AVERAGE:0.5:5:288,
RRA:AVERAGE:0.5:30:336,
RRA:AVERAGE:0.5:60:1488,
RRA:AVERAGE:0.5:720:744,
RRA:AVERAGE:0.5:1440:265