The TICK software stack seems to be a natural fit for low-frequency measurements in laboratories (ranging from once per hour up to 100 Hz or so, rather not GHz), such as temperatures, pressure, and other properties of experimental setups. The TICK stack is a composition of InfluxDB, chronograf, kapacitory and telefgraf. For simple measurements in laboratories, InfluxDB and chronograf would suffice. What are the individual components? A good point of reference can be found on the influxdata website. I will summarize the four components.
I like to call InfluxDB the heart of the TICK stack. All the other components communicate with the InfluxDB. This component is the actual time-series database. The database provides native support for time sampled measurements with advanced features such as down-sampling.
Chronograf provides a web interface to access the database and visualize the data. I like the ability to create custom dashboards such that all important metrics are visible with a single glance. This frees you from the time-consuming task to code a custom monitor panel or supervise the experimental setup with manually typed database queries, which would leave a large margin for errors.
Telegraf automatically collects various host system metrics such as CPU and memory usage and enters them into the InfluxDB. This feature might be most useful to monitor a server or whole server farms, but it can also be used to debug or monitor performance issues in laboratories.
Kapacitor is the data processing engine in the TICK stack. This allows real-time data processing of experimental data, including machine learning applications and anomaly detection.
Early in 2018, I wanted a simple setup based on coupled docker containers, which could be used in any laboratory or experimental environment to log the status of the measurement. The result is the tick-stack-demo repository.
To log custom data from an experiment, modify the toy script
writes the data directly into the database. The toy version of the script
pretends to measure data from a weather station that is entered into the
Every time the sensors.py is modified, you need to rebuild the corresponding docker container. This process is automated and can be triggered with
$ docker-compose up -d --build