1 .. _barometer-docker-userguide:
2 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) Anuket and others
6 =====================================
7 Anuket Barometer Docker Install Guide
8 =====================================
14 The intention of this user guide is to outline how to install and test the Barometer project's
15 docker images. The `Anuket docker hub <https://hub.docker.com/u/anuket/>`_ contains 5 docker
16 images from the Barometer project:
18 1. `Collectd docker image <https://hub.docker.com/r/anuket/barometer-collectd/>`_
19 2. `Influxdb docker image <https://hub.docker.com/r/anuket/barometer-influxdb/>`_
20 3. `Grafana docker image <https://hub.docker.com/r/anuket/barometer-grafana/>`_
21 4. `Kafka docker image <https://hub.docker.com/r/anuket/barometer-kafka>`_
22 5. `VES application docker image <https://hub.docker.com/r/anuket/barometer-ves/>`_
24 For description of images please see section `Barometer Docker Images Description`_
26 For steps to build and run Collectd image please see section `Build and Run Collectd Docker Image`_
28 For steps to build and run InfluxDB and Grafana images please see section `Build and Run InfluxDB and Grafana Docker Images`_
30 For steps to build and run VES and Kafka images please see section `Build and Run VES and Kafka Docker Images`_
32 For overview of running VES application with Kafka please see the :ref:`VES Application User Guide <barometer-ves-userguide>`
34 For an alternative installation method using ansible, please see the :ref:`Barometer One Click Install Guide <barometer-oneclick-userguide>`.
36 For post-installation verification and troubleshooting, please see the :ref:`Barometer post installation guide <barometer-postinstall>`.
38 Barometer Docker Images Description
39 -----------------------------------
41 .. Describe the specific features and how it is realised in the scenario in a brief manner
42 .. to ensure the user understand the context for the user guide instructions to follow.
44 Barometer Collectd Image
45 ^^^^^^^^^^^^^^^^^^^^^^^^
46 The barometer collectd docker image gives you a collectd installation that includes all
47 the barometer plugins.
50 The Dockerfile is available in the docker/barometer-collectd directory in the barometer repo.
51 The Dockerfile builds a CentOS 8 docker image.
52 The container MUST be run as a privileged container.
54 Collectd is a daemon which collects system performance statistics periodically
55 and provides a variety of mechanisms to publish the collected metrics. It
56 supports more than 90 different input and output plugins. Input plugins
57 retrieve metrics and publish them to the collectd deamon, while output plugins
58 publish the data they receive to an end point. Collectd also has infrastructure
59 to support thresholding and notification.
61 Collectd docker image has enabled the following collectd plugins (in addition
62 to the standard collectd plugins):
65 * Open vSwitch events Plugin
66 * Open vSwitch stats Plugin
74 Plugins and third party applications in Barometer repository that will be available in the
77 * Open vSwitch PMD stats
78 * ONAP VES application
83 InfluxDB + Grafana Docker Images
84 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
86 The Barometer project's InfluxDB and Grafana docker images are 2 docker images that database and graph
87 statistics reported by the Barometer collectd docker. InfluxDB is an open-source time series database
88 tool which stores the data from collectd for future analysis via Grafana, which is a open-source
89 metrics anlytics and visualisation suite which can be accessed through any browser.
91 VES + Kafka Docker Images
92 ^^^^^^^^^^^^^^^^^^^^^^^^^
94 The Barometer project's VES application and Kafka docker images are based on a CentOS 7 image. Kafka
95 docker image has a dependancy on `Zookeeper <https://zookeeper.apache.org/>`_. Kafka must be able to
96 connect and register with an instance of Zookeeper that is either running on local or remote host.
97 Kafka recieves and stores metrics recieved from Collectd. VES application pulls latest metrics from Kafka
98 which it normalizes into VES format for sending to a VES collector. Please see details in
99 :ref:`VES Application User Guide <barometer-ves-userguide>`
103 .. Describe the specific capabilities and usage for <XYZ> feature.
104 .. Provide enough information that a user will be able to operate the feature on a deployed scenario.
107 The below sections provide steps for manual installation and configuration
108 of docker images. They are not neccessary if docker images were installed with
109 use of Ansible-Playbook.
114 * sudo permissions are required to install docker.
115 * These instructions are for Ubuntu 16.10
121 $ sudo apt-get install curl
122 $ sudo curl -fsSL https://get.docker.com/ | sh
123 $ sudo usermod -aG docker <username>
124 $ sudo systemctl status docker
126 Replace <username> above with an appropriate user name.
131 * sudo permissions are required to install docker.
132 * These instructions are for CentOS 7
138 $ sudo yum remove docker docker-common docker-selinux docker-engine
139 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
140 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
141 $ sudo yum-config-manager --enable docker-ce-edge
142 $ sudo yum-config-manager --enable docker-ce-test
143 $ sudo yum install docker-ce
144 $ sudo usermod -aG docker <username>
145 $ sudo systemctl status docker
147 Replace <username> above with an appropriate user name.
150 If this is the first time you are installing a package from a recently added
151 repository, you will be prompted to accept the GPG key, and the key’s
152 fingerprint will be shown. Verify that the fingerprint is correct, and if so,
153 accept the key. The fingerprint should match060A 61C5 1B55 8A7F 742B 77AA C52F
156 Retrieving key from https://download.docker.com/linux/centos/gpg
157 Importing GPG key 0x621E9F35:
159 Userid : "Docker Release (CE rpm) <docker@docker.com>"
160 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
161 From : https://download.docker.com/linux/centos/gpg
164 Manual proxy configuration for docker
165 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
168 This applies for both CentOS and Ubuntu.
170 If you are behind an HTTP or HTTPS proxy server, you will need to add this
171 configuration in the Docker systemd service file.
173 1. Create a systemd drop-in directory for the docker service:
177 $ sudo mkdir -p /etc/systemd/system/docker.service.d
180 called /etc/systemd/system/docker.service.d/http-proxy.conf that adds
181 the HTTP_PROXY environment variable:
186 Environment="HTTP_PROXY=http://proxy.example.com:80/"
188 Or, if you are behind an HTTPS proxy server, create a file
189 called /etc/systemd/system/docker.service.d/https-proxy.conf that adds
190 the HTTPS_PROXY environment variable:
195 Environment="HTTPS_PROXY=https://proxy.example.com:443/"
197 Or create a single file with all the proxy configurations:
198 /etc/systemd/system/docker.service.d/proxy.conf
203 Environment="HTTP_PROXY=http://proxy.example.com:80/"
204 Environment="HTTPS_PROXY=https://proxy.example.com:443/"
205 Environment="FTP_PROXY=ftp://proxy.example.com:443/"
206 Environment="NO_PROXY=localhost"
212 $ sudo systemctl daemon-reload
218 $ sudo systemctl restart docker
220 5. Check docker environment variables:
224 sudo systemctl show --property=Environment docker
226 Test docker installation
227 ^^^^^^^^^^^^^^^^^^^^^^^^
229 This applies for both CentOS and Ubuntu.
233 $ sudo docker run hello-world
235 The output should be something like:
239 Trying to pull docker.io/library/hello-world...Getting image source signatures
240 Copying blob 0e03bdcc26d7 done
241 Copying config bf756fb1ae done
242 Writing manifest to image destination
246 This message shows that your installation appears to be working correctly.
248 To generate this message, Docker took the following steps:
249 1. The Docker client contacted the Docker daemon.
250 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
251 3. The Docker daemon created a new container from that image which runs the
252 executable that produces the output you are currently reading.
253 4. The Docker daemon streamed that output to the Docker client, which sent it
256 To try something more ambitious, you can run an Ubuntu container with:
257 $ docker run -it ubuntu bash
259 Share images, automate workflows, and more with a free Docker ID:
260 https://hub.docker.com/
262 For more examples and ideas, visit:
263 https://docs.docker.com/get-started/
265 Build and Run Collectd Docker Image
266 -----------------------------------
268 Collectd-barometer flavors
269 ^^^^^^^^^^^^^^^^^^^^^^^^^^
271 Before starting to build and run the Collectd container, understand the available
272 flavors of Collectd containers:
274 * barometer-collectd - stable release, based on collectd 5.12
275 * barometer-collectd-latest - release based on collectd 'main' branch
276 * barometer-collectd-experimental - release based on collectd 'main'
277 branch that can also include a set of experimental (not yet merged into
278 upstream) pull requests
281 Experimental container is not tested across various OS'es and the stability
282 of the container can change. Usage of experimental flavor is at users risk.
284 Stable `barometer-collectd` container is intended for work in production
285 environment as it is based on latest collectd official release.
286 `barometer-collectd-latest` and `barometer-collectd-experimental` containers
287 can be used in order to try new collectd features.
288 All flavors are located in `barometer` git repository - respective Dockerfiles
289 are stored in subdirectories of `docker/` directory
294 $ git clone https://gerrit.opnfv.org/gerrit/barometer
295 $ ls barometer/docker|grep collectd
297 barometer-collectd-latest
298 barometer-collectd-experimental
301 Main directory of barometer source code (directory that contains 'docker',
302 'docs', 'src' and systems sub-directories) will be referred as
303 ``<BAROMETER_REPO_DIR>``
305 Download the collectd docker image
306 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
307 If you wish to use a pre-built barometer image, you can pull the barometer
308 image from `dockerhub <https://hub.docker.com/r/anuket/barometer-collectd/>`_
312 $ docker pull anuket/barometer-collectd
314 Build stable collectd container
315 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
319 $ cd <BAROMETER_REPO_DIR>/docker/barometer-collectd
320 $ sudo docker build -t anuket/barometer-collectd --build-arg http_proxy=`echo $http_proxy` \
321 --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
324 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to be
325 passed only if system is behind an HTTP or HTTPS proxy server.
327 Check the docker images:
333 Output should contain a ``barometer-collectd`` image:
337 REPOSITORY TAG IMAGE ID CREATED SIZE
338 anuket/barometer-collectd latest 39f5e0972178 2 months ago 1.28GB
339 centos 7 196e0ce0c9fb 4 weeks ago 197MB
340 centos latest 196e0ce0c9fb 4 weeks ago 197MB
341 hello-world latest 05a3bd381fc2 4 weeks ago 1.84kB
344 If you do not plan to use `barometer-collectd-latest` and
345 `barometer-collectd-experimental` containers, then you can proceed directly
346 to section `Run the collectd stable docker image`_
349 Build barometer-collectd-latest container
350 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
354 $ cd <BAROMETER_REPO_DIR>
355 $ sudo docker build -t anuket/barometer-collectd-latest \
356 --build-arg http_proxy=`echo $http_proxy` \
357 --build-arg https_proxy=`echo $https_proxy` --network=host -f \
358 docker/barometer-collectd-latest/Dockerfile .
361 For `barometer-collectd-latest` and `barometer-collectd-experimental` containers
362 proxy parameters should be passed only if system is behind an HTTP or HTTPS
363 proxy server (same as for stable collectd container)
365 Build barometer-collectd-experimental container
366 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
368 The barometer-collectd-experimental container use the ``main`` branch of
369 collectd, but allows the user to apply a number of pull requests, which are
370 passed via the COLLECTD_PULL_REQUESTS build arg, which is passed to docker as
371 shown in the example below.
372 COLLECTD_PULL_REQUESTS should be a comma-delimited string of pull request IDs.
376 $ cd <BAROMETER_REPO_DIR>
377 $ sudo docker build -t anuket/barometer-collectd-experimental \
378 --build-arg http_proxy=`echo $http_proxy` \
379 --build-arg https_proxy=`echo $https_proxy` \
380 --build-arg COLLECTD_PULL_REQUESTS=1234,5678 \
381 --network=host -f docker/barometer-collectd-experimental/Dockerfile .
384 For `barometer-collectd-latest` and `barometer-collectd-experimental` containers
385 proxy parameters should be passed only if system is behind an HTTP or HTTPS
386 proxy server (same as for stable collectd container)
391 The barometer-collectd-experimental Dockerfile can be used to build
392 collectd-6.0, which is currently under development. In order to do this, the
393 ``COLLECTD_FLAVOR`` build arg can be passed to the docker build command.
394 The optional ``COLLECTD_PULL_REQUESTS`` arg can be passed as well, to test
395 proposed patches to collectd.
399 $ cd <BAROMETER_REPO_DIR>
400 $ sudo docker build -t anuket/barometer-collectd-6 \
401 --build-arg COLLECTD_FLAVOR=collectd-6 \
402 --build-arg COLLECTD_PULL_REQUESTS=1234,5678 \
403 --network=host -f docker/barometer-collectd-experimental/Dockerfile .
405 The instructions for running the collectd-6 container are the same as for the
406 collectd-experimental container.
408 There are a few useful build args that can be used to further customise the
411 * **COLLECTD_CONFIG_CMD_ARGS**
412 For testing with new plugins for collectd-6, as un-ported plugins are
414 This new option lets the ./configure command be run with extra args,
415 e.g. --enable-cpu --enable-<my-newly-ported-plugin>, which means that
416 plugin can be enabled for the PR that is being tested.
419 This overrides the default tag selected by the flavors, and allows checking
420 out out an arbitrary branch (e.g. PR branch instead of using the
421 ``COLLECTD_PULL_REQUESTS`` arg, which rebases each PR on top of the
423 To check out a PR, use the following args with the docker build command:
424 ``--build-arg COLLECTD_TAG=pull/<PR_ID>/head``
426 Run the collectd stable docker image
427 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
430 $ cd <BAROMETER_REPO_DIR>
431 $ sudo docker run -ti --net=host -v \
432 `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
433 -v /var/run:/var/run -v /tmp:/tmp -v /sys/fs/resctrl:/sys/fs/resctrl \
434 --privileged anuket/barometer-collectd
437 The docker collectd image contains configuration for all the collectd
438 plugins. In the command above we are overriding
439 /opt/collectd/etc/collectd.conf.d by mounting a host directory
440 src/collectd/collectd_sample_configs that contains only the sample
441 configurations we are interested in running.
443 *If some dependencies for plugins listed in configuration directory
444 aren't met, then collectd startup may fail(collectd tries to
445 initialize plugins configurations for all given config files that can
446 be found in shared configs directory and may fail if some dependency
449 If `DPDK` or `RDT` can't be installed on host, then corresponding config
450 files should be removed from shared configuration directory
451 (`<BAROMETER_REPO_DIR>/src/collectd/collectd_sample_configs/`) prior
452 to starting barometer-collectd container. By example: in case of missing
453 `DPDK` functionality on the host, `dpdk_telemetry.conf` should be removed.
455 Sample configurations can be found at:
456 https://github.com/opnfv/barometer/tree/master/src/collectd/collectd_sample_configs
458 List of barometer-collectd dependencies on host for various plugins
460 https://wiki.anuket.io/display/HOME/Barometer-collectd+host+dependencies
462 The Resource Control file system (/sys/fs/resctrl) can be bound from host to
463 container only if this directory exists on the host system. Otherwise omit
464 the '-v /sys/fs/resctrl:/sys/fs/resctrl' part in docker run command.
465 More information about resctrl can be found at:
466 https://github.com/intel/intel-cmt-cat/wiki/resctrl
468 Check your docker image is running
474 To make some changes when the container is running run:
478 sudo docker exec -ti <CONTAINER ID> /bin/bash
480 Run the barometer-collectd-latest docker image
481 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
482 Run command for ``barometer-collectd-latest`` container is very similar to
483 command used for stable container - the only differences are name of the image
484 and location of the sample configuration files (as different version of
485 collectd plugins requiring different configuration files)
490 $ cd <BAROMETER_REPO_DIR>
491 $ sudo docker run -ti --net=host -v \
492 `pwd`/src/collectd/collectd_sample_configs-latest:/opt/collectd/etc/collectd.conf.d \
493 -v /var/run:/var/run -v /tmp:/tmp -v /sys/fs/resctrl:/sys/fs/resctrl \
494 --privileged anuket/barometer-collectd-latest
497 Barometer collectd docker images are sharing some directories with host
498 (e.g. /tmp) therefore only one of collectd barometer flavors can be run
499 at a time. In other words, if you want to try `barometer-collectd-latest` or
500 `barometer-collectd-experimental` image, please stop instance of
501 `barometer-collectd(stable)` image first.
503 The Resource Control file system (/sys/fs/resctrl) can be bound from host to
504 container only if this directory exists on the host system. Otherwise omit
505 the '-v /sys/fs/resctrl:/sys/fs/resctrl' part in docker run command.
506 More information about resctrl can be found at:
507 https://github.com/intel/intel-cmt-cat/wiki/resctrl
509 Run the barometer-collectd-experimental docker image
510 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
511 Barometer-collectd-experimental container shares default configuration files
512 with 'barometer-collectd-latest' equivalent but some of experimental pull
513 requests may require modified configuration. Additional configuration files that
514 are required specifically by experimental container can be found in
515 `docker/barometer-collectd-experimental/experimental-configs/`
516 directory. Content of this directory (all \*.conf files) should be copied to
517 ``src/collectd/collectd_sample_configs-latest`` directory before first run of
518 experimental container.
522 $ cd <BAROMETER_REPO_DIR>
523 $ cp docker/barometer-collectd-experimental/experimental-configs/*.conf \
524 src/collectd/collectd_sample_configs-latest
526 When configuration files are up to date for experimental container, it can be
527 launched using following command (almost identical to run-command for ``latest``
532 $ cd <BAROMETER_REPO_DIR>
533 $ sudo docker run -ti --net=host -v \
534 `pwd`/src/collectd/collectd_sample_configs-latest:/opt/collectd/etc/collectd.conf.d \
535 -v /var/run:/var/run -v /tmp:/tmp -v /sys/fs/resctrl:/sys/fs/resctrl --privileged \
536 anuket/barometer-collectd-experimental
539 The Resource Control file system (/sys/fs/resctrl) can be bound from host to
540 container only if this directory exists on the host system. Otherwise omit
541 the '-v /sys/fs/resctrl:/sys/fs/resctrl' part in docker run command.
542 More information about resctrl can be found at:
543 https://github.com/intel/intel-cmt-cat/wiki/resctrl
546 Build and Run InfluxDB and Grafana docker images
547 ------------------------------------------------
551 The barometer-influxdb image is based on the influxdb:1.3.7 image from the influxdb dockerhub. To
552 view detils on the base image please visit
553 `https://hub.docker.com/_/influxdb/ <https://hub.docker.com/_/influxdb/>`_ Page includes details of
554 exposed ports and configurable enviromental variables of the base image.
556 The barometer-grafana image is based on grafana:4.6.3 image from the grafana dockerhub. To view
557 details on the base image please visit
558 `https://hub.docker.com/r/grafana/grafana/ <https://hub.docker.com/r/grafana/grafana/>`_ Page
559 includes details on exposed ports and configurable enviromental variables of the base image.
561 The barometer-grafana image includes pre-configured source and dashboards to display statistics exposed
562 by the barometer-collectd image. The default datasource is an influxdb database running on localhost
563 but the address of the influxdb server can be modified when launching the image by setting the
564 environmental variables influxdb_host to IP or hostname of host on which influxdb server is running.
566 Additional dashboards can be added to barometer-grafana by mapping a volume to /opt/grafana/dashboards.
567 Incase where a folder is mounted to this volume only files included in this folder will be visible
568 inside barometer-grafana. To ensure all default files are also loaded please ensure they are included in
569 volume folder been mounted. Appropriate example are given in section `Run the Grafana docker image`_
571 Download the InfluxDB and Grafana docker images
572 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
573 If you wish to use pre-built barometer project's influxdb and grafana images, you can pull the
574 images from https://hub.docker.com/r/anuket/barometer-influxdb/ and https://hub.docker.com/r/anuket/barometer-grafana/
577 If your preference is to build images locally please see sections `Build InfluxDB Docker Image`_ and
578 `Build Grafana Docker Image`_
582 $ docker pull anuket/barometer-influxdb
583 $ docker pull anuket/barometer-grafana
586 If you have pulled the pre-built barometer-influxdb and barometer-grafana images there is no
587 requirement to complete steps outlined in sections `Build InfluxDB Docker Image`_ and
588 `Build Grafana Docker Image`_ and you can proceed directly to section
589 `Run the Influxdb and Grafana Images`_
591 Build InfluxDB docker image
592 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
594 Build influxdb image from Dockerfile
598 $ cd barometer/docker/barometer-influxdb
599 $ sudo docker build -t anuket/barometer-influxdb --build-arg http_proxy=`echo $http_proxy` \
600 --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
603 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
604 be passed only if system is behind an HTTP or HTTPS proxy server.
606 Check the docker images:
612 Output should contain an influxdb image:
616 REPOSITORY TAG IMAGE ID CREATED SIZE
617 anuket/barometer-influxdb latest c5a09a117067 2 months ago 191MB
619 Build Grafana docker image
620 ^^^^^^^^^^^^^^^^^^^^^^^^^^
622 Build Grafana image from Dockerfile
626 $ cd barometer/docker/barometer-grafana
627 $ sudo docker build -t anuket/barometer-grafana --build-arg http_proxy=`echo $http_proxy` \
628 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
631 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
632 be passed only if system is behind an HTTP or HTTPS proxy server.
634 Check the docker images:
640 Output should contain an influxdb image:
644 REPOSITORY TAG IMAGE ID CREATED SIZE
645 anuket/barometer-grafana latest 3724ab87f0b1 2 months ago 284MB
647 Run the Influxdb and Grafana Images
648 -----------------------------------
650 Run the InfluxDB docker image
651 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
654 $ sudo docker run -tid -v /var/lib/influxdb:/var/lib/influxdb --net=host\
655 --name bar-influxdb anuket/barometer-influxdb
657 Check your docker image is running
663 To make some changes when the container is running run:
667 sudo docker exec -ti <CONTAINER ID> /bin/bash
669 When both collectd and InfluxDB containers are located
670 on the same host, then no additional configuration have to be added and you
671 can proceed directly to `Run the Grafana docker image`_ section.
673 Modify collectd to support InfluxDB on another host
674 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
675 If InfluxDB and collectd containers are located on separate hosts, then
676 additional configuration have to be done in ``collectd`` container - it
677 normally sends data using network plugin to 'localhost/127.0.0.1' therefore
678 changing output location is required:
680 1. Stop and remove running bar-collectd container (if it is running)
684 $ sudo docker ps #to get collectd container name
685 $ sudo docker rm -f <COLLECTD_CONTAINER_NAME>
687 2. Go to location where shared collectd config files are stored
691 $ cd <BAROMETER_REPO_DIR>
692 $ cd src/collectd/collectd_sample_configs
694 3. Edit content of ``network.conf`` file.
695 By default this file looks like that:
701 Server "127.0.0.1" "25826"
704 ``127.0.0.1`` string has to be replaced with the IP address of host where
705 InfluxDB container is running (e.g. ``192.168.121.111``). Edit this using your
706 favorite text editor.
708 4. Start again collectd container like it is described in
709 `Run the collectd stable docker image`_ chapter
713 $ cd <BAROMETER_REPO_DIR>
714 $ sudo docker run -ti --name bar-collectd --net=host -v \
715 `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
716 -v /var/run:/var/run -v /tmp:/tmp --privileged anuket/barometer-collectd
718 Now collectd container will be sending data to InfluxDB container located on
719 remote Host pointed by IP configured in step 3.
721 Run the Grafana docker image
722 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
724 Connecting to an influxdb instance running on local system and adding own custom dashboards
728 $ cd <BAROMETER_REPO_DIR>
729 $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana \
730 -v ${PWD}/docker/barometer-grafana/dashboards:/opt/grafana/dashboards \
731 --name bar-grafana --net=host anuket/barometer-grafana
733 Connecting to an influxdb instance running on remote system with hostname of someserver and IP address
738 $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana --net=host -e \
739 influxdb_host=someserver --add-host someserver:192.168.121.111 --name \
740 bar-grafana anuket/barometer-grafana
742 Check your docker image is running
748 To make some changes when the container is running run:
752 sudo docker exec -ti <CONTAINER ID> /bin/bash
754 Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
756 Cleanup of influxdb/grafana configuration
757 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
759 When user wants to remove current grafana and influxdb configuration,
760 folowing actions have to be performed
762 1. Stop and remove running influxdb and grafana containers
766 sudo docker rm -f bar-grafana bar-influxdb
768 2. Remove shared influxdb and grafana folders from the Host
772 sudo rm -rf /var/lib/grafana
773 sudo rm -rf /var/lib/influxdb
776 Shared folders are storing configuration of grafana and influxdb
777 containers. In case of changing influxdb or grafana configuration
778 (e.g. moving influxdb to another host) it is good to perform cleanup
779 on shared folders to not affect new setup with an old configuration.
781 Build and Run VES and Kafka Docker Images
782 -----------------------------------------
784 Download VES and Kafka docker images
785 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
787 If you wish to use pre-built barometer project's VES and kafka images, you can pull the
788 images from https://hub.docker.com/r/anuket/barometer-ves/ and https://hub.docker.com/r/anuket/barometer-kafka/
791 If your preference is to build images locally please see sections `Build Kafka Docker Image`_ and
792 `Build VES Docker Image`_
796 $ docker pull anuket/barometer-kafka
797 $ docker pull anuket/barometer-ves
800 If you have pulled the pre-built images there is no requirement to complete steps outlined
801 in sections `Build Kafka Docker Image`_ and `Build VES Docker Image`_ and you can proceed directly to section
802 `Run Kafka Docker Image`_
804 Build Kafka docker image
805 ^^^^^^^^^^^^^^^^^^^^^^^^
807 Build Kafka docker image:
811 $ cd barometer/docker/barometer-kafka
812 $ sudo docker build -t anuket/barometer-kafka --build-arg http_proxy=`echo $http_proxy` \
813 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
816 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
817 to be passed only if system is behind an HTTP or HTTPS proxy server.
819 Check the docker images:
825 Output should contain a barometer image:
829 REPOSITORY TAG IMAGE ID CREATED SIZE
830 anuket/barometer-kafka latest 75a0860b8d6e 2 months ago 902MB
832 Build VES docker image
833 ^^^^^^^^^^^^^^^^^^^^^^
835 Build VES application docker image:
839 $ cd barometer/docker/barometer-ves
840 $ sudo docker build -t anuket/barometer-ves --build-arg http_proxy=`echo $http_proxy` \
841 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
844 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
845 to be passed only if system is behind an HTTP or HTTPS proxy server.
847 Check the docker images:
853 Output should contain a barometer image:
857 REPOSITORY TAG IMAGE ID CREATED SIZE
858 anuket/barometer-ves latest 36a4a953e1b4 2 months ago 723MB
860 Run Kafka docker image
861 ^^^^^^^^^^^^^^^^^^^^^^
864 Before running Kafka an instance of Zookeeper must be running for the Kafka broker to register
865 with. Zookeeper can be running locally or on a remote platform. Kafka's broker_id and address of
866 its zookeeper instance can be configured by setting values for environmental variables 'broker_id'
867 and 'zookeeper_node'. In instance where 'broker_id' and/or 'zookeeper_node' is not set the default
868 setting of broker_id=0 and zookeeper_node=localhost is used. In intance where Zookeeper is running
869 on same node as Kafka and there is a one to one relationship between Zookeeper and Kafka, default
870 setting can be used. The docker argument `add-host` adds hostname and IP address to
871 /etc/hosts file in container
873 Run zookeeper docker image:
877 $ sudo docker run -tid --net=host -p 2181:2181 zookeeper:3.4.11
879 Run kafka docker image which connects with a zookeeper instance running on same node with a 1:1 relationship
883 $ sudo docker run -tid --net=host -p 9092:9092 anuket/barometer-kafka
886 Run kafka docker image which connects with a zookeeper instance running on a node with IP address of
887 192.168.121.111 using broker ID of 1
891 $ sudo docker run -tid --net=host -p 9092:9092 --env broker_id=1 --env zookeeper_node=zookeeper --add-host \
892 zookeeper:192.168.121.111 anuket/barometer-kafka
894 Run VES Application docker image
895 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
897 VES application uses configuration file ves_app_config.conf from directory
898 barometer/3rd_party/collectd-ves-app/ves_app/config/ and host.yaml file from
899 barometer/3rd_party/collectd-ves-app/ves_app/yaml/ by default. If you wish to use a custom config
900 file it should be mounted to mount point /opt/ves/config/ves_app_config.conf. To use an alternative yaml
901 file from folder barometer/3rd_party/collectd-ves-app/ves_app/yaml the name of the yaml file to use
902 should be passed as an additional command. If you wish to use a custom file the file should be
903 mounted to mount point /opt/ves/yaml/ Please see examples below
905 Run VES docker image with default configuration
909 $ sudo docker run -tid --net=host anuket/barometer-ves
911 Run VES docker image with guest.yaml files from barometer/3rd_party/collectd-ves-app/ves_app/yaml/
915 $ sudo docker run -tid --net=host anuket/barometer-ves guest.yaml
918 Run VES docker image with using custom config and yaml files. In example below yaml/ folder cotains
919 file named custom.yaml
923 $ sudo docker run -tid --net=host -v ${PWD}/custom.config:/opt/ves/config/ves_app_config.conf \
924 -v ${PWD}/yaml/:/opt/ves/yaml/ anuket/barometer-ves custom.yaml
926 Run VES Test Collector application
927 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
929 VES Test Collector application can be used for displaying platform
930 wide metrics that are collected by barometer-ves container.
931 Setup instructions are located in: :ref:`Setup VES Test Collector`
933 Build and Run DMA and Redis Docker Images
934 -----------------------------------------
936 Download DMA docker images
937 ^^^^^^^^^^^^^^^^^^^^^^^^^^
939 If you wish to use pre-built barometer project's DMA images, you can pull the
940 images from https://hub.docker.com/r/opnfv/barometer-dma/
943 If your preference is to build images locally please see sections `Build DMA Docker Image`_
947 $ docker pull opnfv/barometer-dma
950 If you have pulled the pre-built images there is no requirement to complete steps outlined
951 in sections `Build DMA Docker Image`_ and you can proceed directly to section
952 `Run DMA Docker Image`_
954 Build DMA docker image
955 ^^^^^^^^^^^^^^^^^^^^^^
957 Build DMA docker image:
961 $ cd barometer/docker/barometer-dma
962 $ sudo docker build -t opnfv/barometer-dma --build-arg http_proxy=`echo $http_proxy` \
963 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
966 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
967 to be passed only if system is behind an HTTP or HTTPS proxy server.
969 Check the docker images:
975 Output should contain a barometer image:
979 REPOSITORY TAG IMAGE ID CREATED SIZE
980 opnfv/barometer-dma latest 2f14fbdbd498 3 hours ago 941 MB
982 Run Redis docker image
983 ^^^^^^^^^^^^^^^^^^^^^^
986 Before running DMA, Redis must be running.
988 Run Redis docker image:
992 $ sudo docker run -tid -p 6379:6379 --name barometer-redis redis
994 Check your docker image is running
1000 Run DMA docker image
1001 ^^^^^^^^^^^^^^^^^^^^
1004 Run DMA docker image with default configuration
1008 $ cd barometer/docker/barometer-dma
1009 $ sudo mkdir /etc/barometer-dma
1010 $ sudo cp ../../src/dma/examples/config.toml /etc/barometer-dma/
1011 $ sudo vi /etc/barometer-dma/config.toml
1012 (edit amqp_password and os_password:OpenStack admin password)
1015 (When there is no key for SSH access authentication)
1017 (Press Enter until done)
1018 (Backup if necessary)
1019 # cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys_org
1020 # cat ~/.ssh/authorized_keys_org ~/.ssh/id_rsa.pub \
1021 > ~/.ssh/authorized_keys
1024 $ sudo docker run -tid --net=host --name server \
1025 -v /etc/barometer-dma:/etc/barometer-dma \
1026 -v /root/.ssh/id_rsa:/root/.ssh/id_rsa \
1027 -v /etc/collectd/collectd.conf.d:/etc/collectd/collectd.conf.d \
1028 opnfv/barometer-dma /server
1030 $ sudo docker run -tid --net=host --name infofetch \
1031 -v /etc/barometer-dma:/etc/barometer-dma \
1032 -v /var/run/libvirt:/var/run/libvirt \
1033 opnfv/barometer-dma /infofetch
1035 (Execute when installing the threshold evaluation binary)
1036 $ sudo docker cp infofetch:/threshold ./
1037 $ sudo ln -s ${PWD}/threshold /usr/local/bin/
1041 .. [1] https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
1042 .. [2] https://docs.docker.com/engine/install/centos/#install-using-the-repository
1043 .. [3] https://docs.docker.com/engine/userguide/