Documentation is now available at https://github.com/redhat-nfvpe/telemetry-framework/tree/master/docs
Prior to deploying the telemetry platform, there is some pre-requisite builds that need to happen. Items that need building include:
- barometer-collectd container (with patches)
- metrics and events consumer containers
- QPID dispatch router container
barometer-collectd container is made up of two components:
- forked barometer
- forked collectd
When building the
barometer-collectd container, you'll make use of a multi-stage Docker build which pulls code from
a collectd git repository containing upstream changes that are not yet fully merged.
Code for these components are available at:
barometer changes are from the following upstream contributions:
collectd changes are from the following upstream contributions
- Write amqp1 plugin
- Red Hat NFVPE Connectivity Plugin
- Red Hat NFVPE Procevent Plugin
- Red Hat NFVPE Sysevent Plugin
- Notification nested metadata
metrics and events consumers
The metrics and events consumers are custom code that will (ideally) eventually make its way into the OPNFV Barometer project as their upstream homes.
QPID dispatch router (QDR)
Building QPID dispatch router container is primarily just a function of building an RPM, and installing that during container build time. We currently do not have any custom patches/code for the QDR. This is simply a packaging effort.
Four container images need to be built for telemetry.
- metrics consumer
- events consumer
- QPID dispatch router (QDR)
The instructions for building these images is being performed in a virtual machine running Fedora 28.
You'll need the following tools installed.
sudo dnf install git mock -y
In Fedora 28, the latest version of Docker currently being shipped is Docker 1.13, which does not have multi-stage build capabilities. We'll need to install the Docker-CE repository and install Docker 16.x which has multi-stage building. We make use of the multi-stage build process in Docker to keep the images small, and the development tools and source off the base image.
Work is being performed as a non-root user (
admin user in this case).
sudo dnf install -y dnf-plugins-core sudo dnf config-manager \ --add-repo \ https://download.docker.com/linux/fedora/docker-ce.repo sudo dnf config-manager --set-enabled docker-ce-edge sudo dnf install docker-ce -y sudo usermod -aG docker admin newgrp docker
Login to Docker Hub
In order to push your images into a Docker Hub repository (or quay.io, or wherever you want to store your images), you'll need to login first. For Docker Hub you can just use
docker loginfirst before running the following builds.
cd ~ git clone https://github.com/redhat-nfvpe/barometer cd barometer/ git fetch --all git checkout nfvpe/develop docker build --tag nfvpe/barometer-collectd:latest --file ./docker/barometer-collectd/Dockerfile . docker push nfvpe/barometer-collectd:latest
There are two consumers you need to build; metrics and events. The metrics container acts as the scrape target for Prometheus, and also pulls messages off the QDR bus. The events container takes events from the QDR message bus and stores them into an ElasticSearch database.
README.md in the
service-assurance-poc repository within the
docker/ subdirectory for more information about
We'll build both consumers from the
service-assurance-poc git repository.
cd ~ git clone https://github.com/redhat-nfvpe/service-assurance-poc.git
cd ~/service-assurance-poc/ docker build --tag nfvpe/events_consumer:latest -f docker/events/Dockerfile .
cd ~/service-assurance-poc/ docker build --tag nfvpe/metrics_consumer:latest -f docker/metrics/Dockerfile .
QPID Dispatch Router (QDR)
The QPID Dispatch Router (QDR) has a slightly different build mechanism. Instead of compiling everything directly
in the container and copying things over, we build a local RPM using
mock and then do a
COPY of the RPMs into
the container image, where QDR is then installed.
Building the RPMs
Build the RPMs into your working directory using the provided script in the
sudo usermod -aG mock admin newgrp mock cd ~/service-assurance-poc/qdr/ ./buildit.sh
Building the container image
Now we build the container image much like we did for the events and metrics consumers.
cd ~/service-assurance-poc/ docker build --tag nfvpe/qpid-dispatch-router:latest -f docker/qdr/Dockerfile .