1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) <optionally add copywriters name>
4 .. _barometer-docker-userguide:
6 ===================================
7 OPNFV Barometer Docker User 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 `OPNFV docker hub <https://hub.docker.com/u/opnfv/?page=1>`_ contains 5 docker
16 images from the Barometer project:
18 1. `Collectd docker image <https://hub.docker.com/r/opnfv/barometer-collectd/>`_
19 2. `Influxdb docker image <https://hub.docker.com/r/opnfv/barometer-influxdb/>`_
20 3. `Grafana docker image <https://hub.docker.com/r/opnfv/barometer-grafana/>`_
21 4. `Kafka docker image <https://hub.docker.com/r/opnfv/barometer-kafka/>`_
22 5. `VES application docker image <https://hub.docker.com/r/opnfv/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 Barometer Docker Images Description
35 -----------------------------------
37 .. Describe the specific features and how it is realised in the scenario in a brief manner
38 .. to ensure the user understand the context for the user guide instructions to follow.
40 Barometer Collectd Image
41 ^^^^^^^^^^^^^^^^^^^^^^^^
42 The barometer collectd docker image gives you a collectd installation that includes all
43 the barometer plugins.
46 The Dockerfile is available in the docker/barometer-collectd directory in the barometer repo.
47 The Dockerfile builds a CentOS 7 docker image.
48 The container MUST be run as a privileged container.
50 Collectd is a daemon which collects system performance statistics periodically
51 and provides a variety of mechanisms to publish the collected metrics. It
52 supports more than 90 different input and output plugins. Input plugins
53 retrieve metrics and publish them to the collectd deamon, while output plugins
54 publish the data they receive to an end point. Collectd also has infrastructure
55 to support thresholding and notification.
57 Collectd docker image has enabled the following collectd plugins (in addition
58 to the standard collectd plugins):
61 * Open vSwitch events Plugin
62 * Open vSwitch stats Plugin
70 Plugins and third party applications in Barometer repository that will be available in the
73 * Open vSwitch PMD stats
74 * ONAP VES application
79 InfluxDB + Grafana Docker Images
80 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
82 The Barometer project's InfluxDB and Grafana docker images are 2 docker images that database and graph
83 statistics reported by the Barometer collectd docker. InfluxDB is an open-source time series database
84 tool which stores the data from collectd for future analysis via Grafana, which is a open-source
85 metrics anlytics and visualisation suite which can be accessed through any browser.
87 VES + Kafka Docker Images
88 ^^^^^^^^^^^^^^^^^^^^^^^^^
90 The Barometer project's VES application and Kafka docker images are based on a CentOS 7 image. Kafka
91 docker image has a dependancy on `Zookeeper <https://zookeeper.apache.org/>`_. Kafka must be able to
92 connect and register with an instance of Zookeeper that is either running on local or remote host.
93 Kafka recieves and stores metrics recieved from Collectd. VES application pulls latest metrics from Kafka
94 which it normalizes into VES format for sending to a VES collector. Please see details in
95 :ref:`VES Application User Guide <barometer-ves-userguide>`
97 One Click Install with Ansible
98 ------------------------------
100 Proxy for package manager on host
101 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
103 This step has to be performed only if host is behind HTTP/HTTPS proxy
105 Proxy URL have to be set in dedicated config file
107 1. CentOS - /etc/yum.conf
111 proxy=http://your.proxy.domain:1234
113 2. Ubuntu - /etc/apt/apt.conf
117 Acquire::http::Proxy "http://your.proxy.domain:1234"
119 After update of config file, apt mirrors have to be updated via 'apt-get update'
123 $ sudo apt-get update
125 Proxy environment variables(for docker and pip)
126 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
128 This step has to be performed only if host is behind HTTP/HTTPS proxy
130 Configuring proxy for packaging system is not enough, also some proxy
131 environment variables have to be set in the system before ansible scripts
133 Barometer configures docker proxy automatically via ansible task as a part
134 of 'one click install' process - user only has to provide proxy URL using common
135 shell environment variables and ansible will automatically configure proxies
136 for docker(to be able to fetch barometer images). Another component used by
137 ansible (e.g. pip is used for downloading python dependencies) will also benefit
138 from setting proxy variables properly in the system.
140 Proxy variables used by ansible One Click Install:
146 Variables mentioned above have to be visible for superuser (because most
147 actions involving ansible-barometer installation require root privileges).
148 Proxy variables are commonly defined in '/etc/environment' file (but any other
149 place is good as long as variables can be seen by commands using 'su').
151 Sample proxy configuration in /etc/environment:
155 http_proxy=http://your.proxy.domain:1234
156 https_proxy=http://your.proxy.domain:1234
157 ftp_proxy=http://your.proxy.domain:1234
163 * sudo permissions or root access are required to install ansible.
164 * ansible version needs to be 2.4+, because usage of import/include statements
166 The following steps have been verified with Ansible 2.6.3 on Ubuntu 16.04 and 18.04.
167 To install Ansible 2.6.3 on Ubuntu:
171 $ sudo apt-get install python
172 $ sudo apt-get install python-pip
173 $ sudo pip install 'ansible==2.6.3'
175 The following steps have been verified with Ansible 2.6.3 on Centos 7.5.
176 To install Ansible 2.6.3 on Centos:
180 $ sudo yum install python
181 $ sudo yum install epel-release
182 $ sudo yum install python-pip
183 $ sudo pip install 'ansible==2.6.3'
190 $ git clone https://gerrit.opnfv.org/gerrit/barometer
191 $ cd barometer/docker/ansible
195 Edit inventory file and add hosts: $barometer_dir/docker/ansible/default.inv
202 [collectd_hosts:vars]
204 insert_ipmi_modules=true
221 Change localhost to different hosts where neccessary.
222 Hosts for influxdb and grafana are required only for collectd_service.yml.
223 Hosts for kafka and ves are required only for collectd_ves.yml.
225 To change host for kafka edit kafka_ip_addr in ./roles/config_files/vars/main.yml.
227 Additional plugin dependencies
228 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
230 By default ansible will try to fulfill dependencies for mcelog and ipmi plugin.
231 For mcelog plugin it installs mcelog daemon. For ipmi it tries to insert ipmi_devintf
232 and ipmi_si kernel modules.
233 This can be changed in inventory file with use of variables install_mcelog
234 and insert_ipmi_modules, both variables are independent:
238 [collectd_hosts:vars]
240 insert_ipmi_modules=false
243 On Ubuntu 18.04 to use mcelog plugin the user has to install mcelog daemon
244 manually ahead of installing from ansible scripts as the deb package is not
245 available in official Ubuntu 18.04 repo. It means that setting install_mcelog
251 Generate ssh keys if not present, otherwise move onto next step.
257 Copy ssh key to all target hosts. It requires to provide root password.
258 The example is for localhost.
262 $ sudo ssh-copy-id root@localhost
264 Verify that key is added and password is not required to connect.
268 $ sudo ssh root@localhost
271 Keys should be added to every target host and [localhost] is only used as an
272 example. For multinode installation keys need to be copied for each node:
273 [collectd_hostname], [influxdb_hostname] etc.
275 Download and run Collectd+Influxdb+Grafana containers
276 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
278 The One Click installation features easy and scalable deployment of Collectd,
279 Influxdb and Grafana containers using Ansible playbook. The following steps goes
280 through more details.
284 $ sudo ansible-playbook -i default.inv collectd_service.yml
286 Check the three containers are running, the output of docker ps should be similar to:
291 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
292 a033aeea180d opnfv/barometer-grafana "/run.sh" 9 days ago Up 7 minutes bar-grafana
293 1bca2e4562ab opnfv/barometer-influxdb "/entrypoint.sh in..." 9 days ago Up 7 minutes bar-influxdb
294 daeeb68ad1d5 opnfv/barometer-collectd "/run_collectd.sh ..." 9 days ago Up 7 minutes bar-collectd
296 To make some changes when a container is running run:
300 $ sudo docker exec -ti <CONTAINER ID> /bin/bash
302 Connect to <host_ip>:3000 with a browser and log into Grafana: admin/admin.
303 For short introduction please see the:
304 `Grafana guide <http://docs.grafana.org/guides/getting_started/>`_.
306 The collectd configuration files can be accessed directly on target system in '/opt/collectd/etc/collectd.conf.d'.
307 It can be used for manual changes or enable/disable plugins. If configuration has been modified it is required to
312 $ sudo docker restart bar-collectd
314 Download collectd+kafka+ves containers
315 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
317 Before running Kafka an instance of zookeeper is required. See `Run Kafka docker image`_ for notes on how to run it.
318 The 'zookeeper_hostname' and 'broker_id' can be set in ./roles/run_kafka/vars/main.yml.
322 $ sudo ansible-playbook -i default.inv collectd_ves.yml
324 Check the three containers are running, the output of docker ps should be similar to:
329 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
330 8b095ad94ea1 zookeeper:3.4.11 "/docker-entrypoin..." 7 minutes ago Up 7 minutes awesome_jennings
331 eb8bba3c0b76 opnfv/barometer-ves "./start_ves_app.s..." 21 minutes ago Up 6 minutes bar-ves
332 86702a96a68c opnfv/barometer-kafka "/src/start_kafka.sh" 21 minutes ago Up 6 minutes bar-kafka
333 daeeb68ad1d5 opnfv/barometer-collectd "/run_collectd.sh ..." 13 days ago Up 6 minutes bar-collectd
336 To make some changes when a container is running run:
340 $ sudo docker exec -ti <CONTAINER ID> /bin/bash
342 List of default plugins for collectd container
343 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
345 By default the collectd is started with default configuration which includes the followin plugins:
346 * csv, contextswitch, cpu, cpufreq, df, disk, ethstat, ipc, irq, load, memory, numa, processes,
347 swap, turbostat, uuid, uptime, exec, hugepages, intel_pmu, ipmi, write_kafka, logfile, mcelog,
348 network, intel_rdt, rrdtool, snmp_agent, syslog, virt, ovs_stats, ovs_events
350 Some of the plugins are loaded depending on specific system requirements and can be omitted if
351 dependency is not met, this is the case for:
352 * hugepages, ipmi, mcelog, intel_rdt, virt, ovs_stats, ovs_events
354 List and description of tags used in ansible scripts
355 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
357 Tags can be used to run a specific part of the configuration without running the whole playbook.
358 To run a specific parts only:
362 $ sudo ansible-playbook -i default.inv collectd_service.yml --tags "syslog,cpu,uuid"
364 To disable some parts or plugins:
368 $ sudo ansible-playbook -i default.inv collectd_service.yml --skip-tags "en_default_all,syslog,cpu,uuid"
370 List of available tags:
373 Install docker and required dependencies with package manager.
376 Configure proxy file for docker service if proxy is set on host environment.
379 Remove collectd config files.
381 copy_additional_configs
382 Copy additional configuration files to target system. Path to additional configuration
383 is stored in $barometer_dir/docker/ansible/roles/config_files/vars/main.yml as additional_configs_path.
386 Set of default read plugins: contextswitch, cpu, cpufreq, df, disk, ethstat, ipc, irq,
387 load, memory, numa, processes, swap, turbostat, uptime.
390 The following tags can be used to enable/disable plugins: csv, contextswitch, cpu,
391 cpufreq, df, disk, ethstat, ipc, irq, load, memory, numa, processes, swap, turbostat,
392 uptime, exec, hugepages, ipmi, kafka, logfile, mcelogs, network, pmu, rdt, rrdtool,
393 snmp, syslog, virt, ovs_stats, ovs_events, uuid.
397 .. Describe the specific capabilities and usage for <XYZ> feature.
398 .. Provide enough information that a user will be able to operate the feature on a deployed scenario.
401 The below sections provide steps for manual installation and configuration
402 of docker images. They are not neccessary if docker images were installed with
403 use of Ansible-Playbook.
408 * sudo permissions are required to install docker.
409 * These instructions are for Ubuntu 16.10
415 $ sudo apt-get install curl
416 $ sudo curl -fsSL https://get.docker.com/ | sh
417 $ sudo usermod -aG docker <username>
418 $ sudo systemctl status docker
420 Replace <username> above with an appropriate user name.
425 * sudo permissions are required to install docker.
426 * These instructions are for CentOS 7
432 $ sudo yum remove docker docker-common docker-selinux docker-engine
433 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
434 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
435 $ sudo yum-config-manager --enable docker-ce-edge
436 $ sudo yum-config-manager --enable docker-ce-test
437 $ sudo yum install docker-ce
438 $ sudo usermod -aG docker <username>
439 $ sudo systemctl status docker
441 Replace <username> above with an appropriate user name.
444 If this is the first time you are installing a package from a recently added
445 repository, you will be prompted to accept the GPG key, and the key’s
446 fingerprint will be shown. Verify that the fingerprint is correct, and if so,
447 accept the key. The fingerprint should match060A 61C5 1B55 8A7F 742B 77AA C52F
450 Retrieving key from https://download.docker.com/linux/centos/gpg
451 Importing GPG key 0x621E9F35:
452 Userid : "Docker Release (CE rpm) <docker@docker.com>"
453 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
454 From : https://download.docker.com/linux/centos/gpg
457 Manual proxy configuration for docker
458 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
461 This applies for both CentOS and Ubuntu.
463 If you are behind an HTTP or HTTPS proxy server, you will need to add this
464 configuration in the Docker systemd service file.
466 1. Create a systemd drop-in directory for the docker service:
470 $ sudo mkdir -p /etc/systemd/system/docker.service.d
473 called /etc/systemd/system/docker.service.d/http-proxy.conf that adds
474 the HTTP_PROXY environment variable:
479 Environment="HTTP_PROXY=http://proxy.example.com:80/"
481 Or, if you are behind an HTTPS proxy server, create a file
482 called /etc/systemd/system/docker.service.d/https-proxy.conf that adds
483 the HTTPS_PROXY environment variable:
488 Environment="HTTPS_PROXY=https://proxy.example.com:443/"
490 Or create a single file with all the proxy configurations:
491 /etc/systemd/system/docker.service.d/proxy.conf
496 Environment="HTTP_PROXY=http://proxy.example.com:80/"
497 Environment="HTTPS_PROXY=https://proxy.example.com:443/"
498 Environment="FTP_PROXY=ftp://proxy.example.com:443/"
499 Environment="NO_PROXY=localhost"
505 $ sudo systemctl daemon-reload
511 $ sudo systemctl restart docker
513 5. Check docker environment variables:
517 sudo systemctl show --property=Environment docker
519 Test docker installation
520 ^^^^^^^^^^^^^^^^^^^^^^^^
522 This applies for both CentOS and Ubuntu.
526 $ sudo docker run hello-world
528 The output should be something like:
532 Unable to find image 'hello-world:latest' locally
533 latest: Pulling from library/hello-world
534 5b0f327be733: Pull complete
535 Digest: sha256:07d5f7800dfe37b8c2196c7b1c524c33808ce2e0f74e7aa00e603295ca9a0972
536 Status: Downloaded newer image for hello-world:latest
539 This message shows that your installation appears to be working correctly.
541 To generate this message, Docker took the following steps:
542 1. The Docker client contacted the Docker daemon.
543 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
544 3. The Docker daemon created a new container from that image which runs the
545 executable that produces the output you are currently reading.
546 4. The Docker daemon streamed that output to the Docker client, which sent it
549 To try something more ambitious, you can run an Ubuntu container with:
553 $ docker run -it ubuntu bash
555 Build and Run Collectd Docker Image
556 -----------------------------------
558 Download the collectd docker image
559 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
560 If you wish to use a pre-built barometer image, you can pull the barometer
561 image from https://hub.docker.com/r/opnfv/barometer-collectd/
565 $ docker pull opnfv/barometer-collectd
567 Build the collectd docker image
568 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
572 $ git clone https://gerrit.opnfv.org/gerrit/barometer
573 $ cd barometer/docker/barometer-collectd
574 $ sudo docker build -t opnfv/barometer-collectd --build-arg http_proxy=`echo $http_proxy` \
575 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
578 Main directory of barometer source code (directory that contains 'docker',
579 'docs', 'src' and systems sub-directories) will be referred as
580 ``<BAROMETER_REPO_DIR>``
584 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to be
585 passed only if system is behind an HTTP or HTTPS proxy server.
587 Check the docker images:
593 Output should contain a barometer-collectd image:
597 REPOSITORY TAG IMAGE ID CREATED SIZE
598 opnfv/barometer-collectd latest 05f2a3edd96b 3 hours ago 1.2GB
599 centos 7 196e0ce0c9fb 4 weeks ago 197MB
600 centos latest 196e0ce0c9fb 4 weeks ago 197MB
601 hello-world latest 05a3bd381fc2 4 weeks ago 1.84kB
603 Run the collectd docker image
604 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
607 $ cd <BAROMETER_REPO_DIR>
608 $ sudo docker run -ti --net=host -v \
609 `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
610 -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd
613 The docker collectd image contains configuration for all the collectd
614 plugins. In the command above we are overriding
615 /opt/collectd/etc/collectd.conf.d by mounting a host directory
616 src/collectd/collectd_sample_configs that contains only the sample
617 configurations we are interested in running.
619 *If some dependencies for plugins listed in configuration directory
620 aren't met, then collectd startup may fail(collectd tries to
621 initialize plugins configurations for all given config files that can
622 be found in shared configs directory and may fail if some dependency
625 If `DPDK` or `RDT` can't be installed on host, then corresponding config
626 files should be removed from shared configuration directory
627 (`<BAROMETER_REPO_DIR>/src/collectd/collectd_sample_configs/`) prior
628 to starting barometer-collectd container. By example: in case of missing
629 `DPDK` functionality on the host, `dpdkstat.conf` and `dpdkevents.conf`
632 Sample configurations can be found at:
633 https://github.com/opnfv/barometer/tree/master/src/collectd/collectd_sample_configs
635 List of barometer-collectd dependencies on host for various plugins
637 https://wiki.opnfv.org/display/fastpath/Barometer-collectd+host+dependencies
639 Check your docker image is running
645 To make some changes when the container is running run:
649 sudo docker exec -ti <CONTAINER ID> /bin/bash
651 Build and Run InfluxDB and Grafana docker images
652 ------------------------------------------------
656 The barometer-influxdb image is based on the influxdb:1.3.7 image from the influxdb dockerhub. To
657 view detils on the base image please visit
658 `https://hub.docker.com/_/influxdb/ <https://hub.docker.com/_/influxdb/>`_ Page includes details of
659 exposed ports and configurable enviromental variables of the base image.
661 The barometer-grafana image is based on grafana:4.6.3 image from the grafana dockerhub. To view
662 details on the base image please visit
663 `https://hub.docker.com/r/grafana/grafana/ <https://hub.docker.com/r/grafana/grafana/>`_ Page
664 includes details on exposed ports and configurable enviromental variables of the base image.
666 The barometer-grafana image includes pre-configured source and dashboards to display statistics exposed
667 by the barometer-collectd image. The default datasource is an influxdb database running on localhost
668 but the address of the influxdb server can be modified when launching the image by setting the
669 environmental variables influxdb_host to IP or hostname of host on which influxdb server is running.
671 Additional dashboards can be added to barometer-grafana by mapping a volume to /opt/grafana/dashboards.
672 Incase where a folder is mounted to this volume only files included in this folder will be visible
673 inside barometer-grafana. To ensure all default files are also loaded please ensure they are included in
674 volume folder been mounted. Appropriate example are given in section `Run the Grafana docker image`_
676 Download the InfluxDB and Grafana docker images
677 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
678 If you wish to use pre-built barometer project's influxdb and grafana images, you can pull the
679 images from https://hub.docker.com/r/opnfv/barometer-influxdb/ and https://hub.docker.com/r/opnfv/barometer-grafana/
682 If your preference is to build images locally please see sections `Build InfluxDB Docker Image`_ and
683 `Build Grafana Docker Image`_
687 $ docker pull opnfv/barometer-influxdb
688 $ docker pull opnfv/barometer-grafana
691 If you have pulled the pre-built barometer-influxdb and barometer-grafana images there is no
692 requirement to complete steps outlined in sections `Build InfluxDB Docker Image`_ and
693 `Build Grafana Docker Image`_ and you can proceed directly to section
694 `Run the Influxdb and Grafana Images`_ If you wish to run the barometer-influxdb and
695 barometer-grafana images via Docker Compose proceed directly to section
698 Build InfluxDB docker image
699 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
701 Build influxdb image from Dockerfile
705 $ cd barometer/docker/barometer-influxdb
706 $ sudo docker build -t opnfv/barometer-influxdb --build-arg http_proxy=`echo $http_proxy` \
707 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
710 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
711 be passed only if system is behind an HTTP or HTTPS proxy server.
713 Check the docker images:
719 Output should contain an influxdb image:
723 REPOSITORY TAG IMAGE ID CREATED SIZE
724 opnfv/barometer-influxdb latest 1e4623a59fe5 3 days ago 191MB
726 Build Grafana docker image
727 ^^^^^^^^^^^^^^^^^^^^^^^^^^
729 Build Grafana image from Dockerfile
733 $ cd barometer/docker/barometer-grafana
734 $ sudo docker build -t opnfv/barometer-grafana --build-arg http_proxy=`echo $http_proxy` \
735 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
738 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
739 be passed only if system is behind an HTTP or HTTPS proxy server.
741 Check the docker images:
747 Output should contain an influxdb image:
751 REPOSITORY TAG IMAGE ID CREATED SIZE
752 opnfv/barometer-grafana latest 05f2a3edd96b 3 hours ago 1.2GB
754 Run the Influxdb and Grafana Images
755 -----------------------------------
757 Run the InfluxDB docker image
758 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
761 $ sudo docker run -tid -v /var/lib/influxdb:/var/lib/influxdb -p 8086:8086 -p 25826:25826 opnfv/barometer-influxdb
763 Check your docker image is running
769 To make some changes when the container is running run:
773 sudo docker exec -ti <CONTAINER ID> /bin/bash
775 Run the Grafana docker image
776 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
778 Connecting to an influxdb instance running on local system and adding own custom dashboards
782 $ cd <BAROMETER_REPO_DIR>
783 $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana -v ${PWD}/docker/barometer-grafana/dashboards:/opt/grafana/dashboards \
784 -p 3000:3000 opnfv/barometer-grafana
786 Connecting to an influxdb instance running on remote system with hostname of someserver and IP address
791 $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana -p 3000:3000 -e \
792 influxdb_host=someserver --add-host someserver:192.168.121.111 opnfv/barometer-grafana
794 Check your docker image is running
800 To make some changes when the container is running run:
804 sudo docker exec -ti <CONTAINER ID> /bin/bash
806 Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
809 Build and Run VES and Kafka Docker Images
810 ------------------------------------------
812 Download VES and Kafka docker images
813 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
815 If you wish to use pre-built barometer project's VES and kafka images, you can pull the
816 images from https://hub.docker.com/r/opnfv/barometer-ves/ and https://hub.docker.com/r/opnfv/barometer-kafka/
819 If your preference is to build images locally please see sections `Build the Kafka Image`_ and
824 $ docker pull opnfv/barometer-kafka
825 $ docker pull opnfv/barometer-ves
828 If you have pulled the pre-built images there is no requirement to complete steps outlined
829 in sections `Build Kafka Docker Image`_ and `Build VES Docker Image`_ and you can proceed directly to section
830 `Run Kafka Docker Image`_ If you wish to run the docker images via Docker Compose proceed directly to section `Docker Compose`_.
832 Build Kafka docker image
833 ^^^^^^^^^^^^^^^^^^^^^^^^
835 Build Kafka docker image:
839 $ cd barometer/docker/barometer-kafka
840 $ sudo docker build -t opnfv/barometer-kafka --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 opnfv/barometer-kafka latest 05f2a3edd96b 3 hours ago 1.2GB
860 Build VES docker image
861 ^^^^^^^^^^^^^^^^^^^^^^
863 Build VES application docker image:
867 $ cd barometer/docker/barometer-ves
868 $ sudo docker build -t opnfv/barometer-ves --build-arg http_proxy=`echo $http_proxy` \
869 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
872 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
873 to be passed only if system is behind an HTTP or HTTPS proxy server.
875 Check the docker images:
881 Output should contain a barometer image:
885 REPOSITORY TAG IMAGE ID CREATED SIZE
886 opnfv/barometer-ves latest 05f2a3edd96b 3 hours ago 1.2GB
888 Run Kafka docker image
889 ^^^^^^^^^^^^^^^^^^^^^^
892 Before running Kafka an instance of Zookeeper must be running for the Kafka broker to register
893 with. Zookeeper can be running locally or on a remote platform. Kafka's broker_id and address of
894 its zookeeper instance can be configured by setting values for environmental variables 'broker_id'
895 and 'zookeeper_node'. In instance where 'broker_id' and/or 'zookeeper_node' is not set the default
896 setting of broker_id=0 and zookeeper_node=localhost is used. In intance where Zookeeper is running
897 on same node as Kafka and there is a one to one relationship between Zookeeper and Kafka, default
898 setting can be used. The docker argument `add-host` adds hostname and IP address to
899 /etc/hosts file in container
901 Run zookeeper docker image:
905 $ sudo docker run -tid --net=host -p 2181:2181 zookeeper:3.4.11
907 Run kafka docker image which connects with a zookeeper instance running on same node with a 1:1 relationship
911 $ sudo docker run -tid --net=host -p 9092:9092 opnfv/barometer-kafka
914 Run kafka docker image which connects with a zookeeper instance running on a node with IP address of
915 192.168.121.111 using broker ID of 1
919 $ sudo docker run -tid --net=host -p 9092:9092 --env broker_id=1 --env zookeeper_node=zookeeper --add-host \
920 zookeeper:192.168.121.111 opnfv/barometer-kafka
922 Run VES Application docker image
923 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
925 VES application uses configuration file ves_app_config.conf from directory
926 barometer/3rd_party/collectd-ves-app/ves_app/config/ and host.yaml file from
927 barometer/3rd_party/collectd-ves-app/ves_app/yaml/ by default. If you wish to use a custom config
928 file it should be mounted to mount point /opt/ves/config/ves_app_config.conf. To use an alternative yaml
929 file from folder barometer/3rd_party/collectd-ves-app/ves_app/yaml the name of the yaml file to use
930 should be passed as an additional command. If you wish to use a custom file the file should be
931 mounted to mount point /opt/ves/yaml/ Please see examples below
933 Run VES docker image with default configuration
937 $ sudo docker run -tid --net=host opnfv/barometer-ves
939 Run VES docker image with guest.yaml files from barometer/3rd_party/collectd-ves-app/ves_app/yaml/
943 $ sudo docker run -tid --net=host opnfv/barometer-ves guest.yaml
946 Run VES docker image with using custom config and yaml files. In example below yaml/ folder cotains
947 file named custom.yaml
951 $ sudo docker run -tid --net=host -v ${PWD}/custom.config:/opt/ves/config/ves_app_config.conf \
952 -v ${PWD}/yaml/:/opt/ves/yaml/ opnfv/barometer-ves custom.yaml
954 Build and Run LocalAgent and Redis Docker Images
955 -----------------------------------------------------
957 Download LocalAgent docker images
958 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
960 If you wish to use pre-built barometer project's LocalAgent images, you can pull the
961 images from https://hub.docker.com/r/opnfv/barometer-localagent/
964 If your preference is to build images locally please see sections `Build LocalAgent Docker Image`_
968 $ docker pull opnfv/barometer-localagent
971 If you have pulled the pre-built images there is no requirement to complete steps outlined
972 in sections `Build LocalAgent Docker Image`_ and you can proceed directly to section
973 `Run LocalAgent Docker Image`_ If you wish to run the docker images via Docker Compose proceed directly to section `Docker Compose`_.
975 Build LocalAgent docker image
976 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
978 Build LocalAgent docker image:
982 $ cd barometer/docker/barometer-dma
983 $ sudo docker build -t opnfv/barometer-dma --build-arg http_proxy=`echo $http_proxy` \
984 --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
987 In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
988 to be passed only if system is behind an HTTP or HTTPS proxy server.
990 Check the docker images:
996 Output should contain a barometer image:
1000 REPOSITORY TAG IMAGE ID CREATED SIZE
1001 opnfv/barometer-dma latest 2f14fbdbd498 3 hours ago 941 MB
1003 Run Redis docker image
1004 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1007 Before running LocalAgent, Redis must be running.
1009 Run Redis docker image:
1013 $ sudo docker run -tid -p 6379:6379 --name barometer-redis redis
1015 Check your docker image is running
1021 Run LocalAgent docker image
1022 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1025 Run LocalAgent docker image with default configuration
1029 $ cd barometer/docker/barometer-dma
1030 $ sudo mkdir /etc/barometer-dma
1031 $ sudo cp ../../src/dma/examples/config.toml /etc/barometer-dma/
1032 $ sudo vi /etc/barometer-dma/config.toml
1033 (edit amqp_password and os_password:OpenStack admin password)
1036 (When there is no key for SSH access authentication)
1038 (Press Enter until done)
1039 (Backup if necessary)
1040 # cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys_org
1041 # cat ~/.ssh/authorized_keys_org ~/.ssh/id_rsa.pub \
1042 > ~/.ssh/authorized_keys
1045 $ sudo docker run -tid --net=host --name server \
1046 -v /etc/barometer-dma:/etc/barometer-dma \
1047 -v /root/.ssh/id_rsa:/root/.ssh/id_rsa \
1048 -v /etc/collectd/collectd.conf.d:/etc/collectd/collectd.conf.d \
1049 opnfv/barometer-dma /server
1051 $ sudo docker run -tid --net=host --name infofetch \
1052 -v /etc/barometer-dma:/etc/barometer-dma \
1053 -v /var/run/libvirt:/var/run/libvirt \
1054 opnfv/barometer-dma /infofetch
1056 (Execute when installing the threshold evaluation binary)
1057 $ sudo docker cp infofetch:/threshold ./
1058 $ sudo ln -s ${PWD}/threshold /usr/local/bin/
1063 Install docker-compose
1064 ^^^^^^^^^^^^^^^^^^^^^^
1066 On the node where you want to run influxdb + grafana or the node where you want to run the VES app
1067 zookeeper and Kafka containers together:
1070 The default configuration for all these containers is to run on the localhost. If this is not
1071 the model you want to use then please make the appropriate configuration changes before launching
1072 the docker containers.
1074 1. Start by installing docker compose
1078 $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
1081 Use the latest Compose release number in the download command. The above command is an example,
1082 and it may become out-of-date. To ensure you have the latest version, check the Compose repository
1083 release page on GitHub.
1085 2. Apply executable permissions to the binary:
1089 $ sudo chmod +x /usr/bin/docker-compose
1091 3. Test the installation.
1095 $ sudo docker-compose --version
1097 Run the InfluxDB and Grafana containers using docker compose
1098 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1104 $ cd barometer/docker/compose/influxdb-grafana/
1105 $ sudo docker-compose up -d
1107 Check your docker images are running
1113 Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
1115 Run the Kafka, zookeeper and VES containers using docker compose
1116 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1122 $ cd barometer/docker/compose/ves/
1123 $ sudo docker-compose up -d
1125 Check your docker images are running
1131 Testing the docker image
1132 ^^^^^^^^^^^^^^^^^^^^^^^^
1137 .. [1] https://docs.docker.com/engine/admin/systemd/#httphttps-proxy
1138 .. [2] https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository
1139 .. [3] https://docs.docker.com/engine/userguide/