🐼 A highly-scalable, distributed metric data processing framework based on RabbitMQ
MetricQ is a highly-scalable, distributed metric data processing framework based on RabbitMQ.
This repository used to be the central repository, but has since been splitted into several other
repositories.
The different MetricQ language implementations can be found here:
The proto files of the used Protobuf definitions can be found here.
Given the distributed architecture of MetricQ, the documentation is scattered over several repositories and webpages:
There are also a lot of client implementations available:
docker-compose
Note: During the startup, especially on the first one, errors and restarts of some services are normal! Please be patient.
Just run:
docker-compose -f docker-compose-development.yml up
This will setup:
metricq-grafana
(port 4000 forwarded to localhost)dummy.source
metricq-rabbitmq-source
providing metricq.rabbitmq.[...]
performance metrics for the running RabbitMQ servermetricq-source-sysinfo
providing loalhost.[...]
performance metrics for the docker hostmetricq-db-hta
database that stores the metricsmetricq-example-combinator
a combinator that can combine metrics into new metricsBy default, all logins are admin
/ admin
. Do not use this dockerfile for production use!
To run it in the background append -d
:
docker-compose -f docker-compose-development.yml up -d
To stop everything run:
docker-compose -f docker-compose-development.yml stop
To stop and remove everything run
docker-compose -f docker-compose-development.yml down
You can now connect to the network with amqp://admin:admin@localhost
as url and dummy.source
as a metric. Using the examples from metricq-python.
pip install ".[examples]"
./examples/metricq_sink.py --server amqp://admin:admin@localhost -m dummy.source
docker-compose
If you follow the steps from above instead with docker-compose-cluster.yml
,
three RabbitMQ nodes will be set up.
On start, they will automatically form a cluster.
The container names will be (might be different for your specific setup):
By default, all MetricQ agents started from the compose file will connect torabbitmq-server
, which resolves to any of the three nodes.
Note: You need to make sure to use the new BuildKit by for instance setting the ENV variable
COMPOSE_DOCKER_CLI_BUILD to 1, or use docker-compose newer than 1.28.0-rc3.
management
ha-mode: all
Use the hostname rabbitmq-server
and the client will connect to random node in the cluster.
For specific nodes, use the hostnames rabbitmq-node0
, rabbitmq-node1
, or rabbitmq-node2
.
The different RabbitMQ nodes are listening on the network interface of their host.
This work is supported in part by the German Research Foundation (DFG) within the CRC 912 - HAEC.
Thomas Ilsche, Daniel Hackenberg, Robert Schöne, Mario Bielert, Franz Höpfner and Wolfgang E. Nagel: MetricQ: A Scalable Infrastructure for Processing High-Resolution Time Series Data 📕 2019 IEEE/ACM Industry/University Joint International Workshop on Data-center Automation, Analytics, and Control (DAAC), Denver, CO, USA, 2019, pp. 7-12, DOI: 10.1109/DAAC49578.2019.00007
.
Thomas Ilsche: Energy Measurements of High Performance Computing Systems: From Instrumentation to Analysis 📕 2020 Doctoral dissertation TU Dresden, URN: de14-qucosa2-716000">
urn
de
14-qucosa2-716000