Merge "Add a README for github mirrors to show"
[barometer.git] / docs / release / userguide / installguide.docker.rst
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:
5
6 ====================================
7 OPNFV Barometer Docker Install Guide
8 ====================================
9
10 .. contents::
11    :depth: 3
12    :local:
13
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:
17
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/>`_
23
24 For description of images please see section `Barometer Docker Images Description`_
25
26 For steps to build and run Collectd image please see section `Build and Run Collectd Docker Image`_
27
28 For steps to build and run InfluxDB and Grafana images please see section `Build and Run InfluxDB and Grafana Docker Images`_
29
30 For steps to build and run VES and Kafka images please see section `Build and Run VES and Kafka Docker Images`_
31
32 For overview of running VES application with Kafka please see the :ref:`VES Application User Guide <barometer-ves-userguide>`
33
34 For an alternative installation method using ansible, please see the :ref:`Barometer One Click Install Guide <barometer-oneclick-userguide>`. 
35
36 Barometer Docker Images Description
37 -----------------------------------
38
39 .. Describe the specific features and how it is realised in the scenario in a brief manner
40 .. to ensure the user understand the context for the user guide instructions to follow.
41
42 Barometer Collectd Image
43 ^^^^^^^^^^^^^^^^^^^^^^^^
44 The barometer collectd docker image gives you a collectd installation that includes all
45 the barometer plugins.
46
47 .. note::
48    The Dockerfile is available in the docker/barometer-collectd directory in the barometer repo.
49    The Dockerfile builds a CentOS 7 docker image.
50    The container MUST be run as a privileged container.
51
52 Collectd is a daemon which collects system performance statistics periodically
53 and provides a variety of mechanisms to publish the collected metrics. It
54 supports more than 90 different input and output plugins. Input plugins
55 retrieve metrics and publish them to the collectd deamon, while output plugins
56 publish the data they receive to an end point. Collectd also has infrastructure
57 to support thresholding and notification.
58
59 Collectd docker image has enabled the following collectd plugins (in addition
60 to the standard collectd plugins):
61
62 * hugepages plugin
63 * Open vSwitch events Plugin
64 * Open vSwitch stats Plugin
65 * mcelog plugin
66 * PMU plugin
67 * RDT plugin
68 * virt
69 * SNMP Agent
70 * Kafka_write plugin
71
72 Plugins and third party applications in Barometer repository that will be available in the
73 docker image:
74
75 * Open vSwitch PMD stats
76 * ONAP VES application
77 * gnocchi plugin
78 * aodh plugin
79 * Legacy/IPMI
80
81 InfluxDB + Grafana Docker Images
82 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83
84 The Barometer project's InfluxDB and Grafana docker images are 2 docker images that database and graph
85 statistics reported by the Barometer collectd docker. InfluxDB is an open-source time series database
86 tool which stores the data from collectd for future analysis via Grafana, which is a open-source
87 metrics anlytics and visualisation suite which can be accessed through any browser.
88
89 VES + Kafka Docker Images
90 ^^^^^^^^^^^^^^^^^^^^^^^^^
91
92 The Barometer project's VES application and Kafka docker images are based on a CentOS 7 image. Kafka
93 docker image has a dependancy on `Zookeeper <https://zookeeper.apache.org/>`_. Kafka must be able to
94 connect and register with an instance of Zookeeper that is either running on local or remote host.
95 Kafka recieves and stores metrics recieved from Collectd. VES application pulls latest metrics from Kafka
96 which it normalizes into VES format for sending to a VES collector. Please see details in 
97 :ref:`VES Application User Guide <barometer-ves-userguide>`
98
99 Installing Docker
100 -----------------
101 .. Describe the specific capabilities and usage for <XYZ> feature.
102 .. Provide enough information that a user will be able to operate the feature on a deployed scenario.
103
104 .. note::
105    The below sections provide steps for manual installation and configuration
106    of docker images. They are not neccessary if docker images were installed with
107    use of Ansible-Playbook.
108
109 On Ubuntu
110 ^^^^^^^^^
111 .. note::
112    * sudo permissions are required to install docker.
113    * These instructions are for Ubuntu 16.10
114
115 To install docker:
116
117 .. code:: bash
118
119     $ sudo apt-get install curl
120     $ sudo curl -fsSL https://get.docker.com/ | sh
121     $ sudo usermod -aG docker <username>
122     $ sudo systemctl status docker
123
124 Replace <username> above with an appropriate user name.
125
126 On CentOS
127 ^^^^^^^^^^
128 .. note::
129    * sudo permissions are required to install docker.
130    * These instructions are for CentOS 7
131
132 To install docker:
133
134 .. code:: bash
135
136     $ sudo yum remove docker docker-common docker-selinux docker-engine
137     $ sudo yum install -y yum-utils  device-mapper-persistent-data  lvm2
138     $ sudo yum-config-manager   --add-repo    https://download.docker.com/linux/centos/docker-ce.repo
139     $ sudo yum-config-manager --enable docker-ce-edge
140     $ sudo yum-config-manager --enable docker-ce-test
141     $ sudo yum install docker-ce
142     $ sudo usermod -aG docker <username>
143     $ sudo systemctl status docker
144
145 Replace <username> above with an appropriate user name.
146
147 .. note::
148    If this is the first time you are installing a package from a recently added
149    repository, you will be prompted to accept the GPG key, and the key’s
150    fingerprint will be shown. Verify that the fingerprint is correct, and if so,
151    accept the key. The fingerprint should match060A 61C5 1B55 8A7F 742B 77AA C52F
152    EB6B 621E 9F35.
153
154         Retrieving key from https://download.docker.com/linux/centos/gpg
155         Importing GPG key 0x621E9F35:
156          Userid     : "Docker Release (CE rpm) <docker@docker.com>"
157          Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
158          From       : https://download.docker.com/linux/centos/gpg
159         Is this ok [y/N]: y
160
161 Manual proxy configuration for docker
162 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
163
164 .. note::
165    This applies for both CentOS and Ubuntu.
166
167 If you are behind an HTTP or HTTPS proxy server, you will need to add this
168 configuration in the Docker systemd service file.
169
170 1. Create a systemd drop-in directory for the docker service:
171
172 .. code:: bash
173
174    $ sudo mkdir -p /etc/systemd/system/docker.service.d
175
176 2. Create a file
177 called /etc/systemd/system/docker.service.d/http-proxy.conf that adds
178 the HTTP_PROXY environment variable:
179
180 .. code:: bash
181
182    [Service]
183    Environment="HTTP_PROXY=http://proxy.example.com:80/"
184
185 Or, if you are behind an HTTPS proxy server, create a file
186 called /etc/systemd/system/docker.service.d/https-proxy.conf that adds
187 the HTTPS_PROXY environment variable:
188
189 .. code:: bash
190
191     [Service]
192     Environment="HTTPS_PROXY=https://proxy.example.com:443/"
193
194 Or create a single file with all the proxy configurations:
195 /etc/systemd/system/docker.service.d/proxy.conf
196
197 .. code:: bash
198
199     [Service]
200     Environment="HTTP_PROXY=http://proxy.example.com:80/"
201     Environment="HTTPS_PROXY=https://proxy.example.com:443/"
202     Environment="FTP_PROXY=ftp://proxy.example.com:443/"
203     Environment="NO_PROXY=localhost"
204
205 3. Flush changes:
206
207 .. code:: bash
208
209     $ sudo systemctl daemon-reload
210
211 4. Restart Docker:
212
213 .. code:: bash
214
215     $ sudo systemctl restart docker
216
217 5. Check docker environment variables:
218
219 .. code:: bash
220
221     sudo systemctl show --property=Environment docker
222
223 Test docker installation
224 ^^^^^^^^^^^^^^^^^^^^^^^^
225 .. note::
226    This applies for both CentOS and Ubuntu.
227
228 .. code:: bash
229
230    $ sudo docker run hello-world
231
232 The output should be something like:
233
234 .. code:: bash
235
236    Unable to find image 'hello-world:latest' locally
237    latest: Pulling from library/hello-world
238    5b0f327be733: Pull complete
239    Digest: sha256:07d5f7800dfe37b8c2196c7b1c524c33808ce2e0f74e7aa00e603295ca9a0972
240    Status: Downloaded newer image for hello-world:latest
241
242    Hello from Docker!
243    This message shows that your installation appears to be working correctly.
244
245    To generate this message, Docker took the following steps:
246     1. The Docker client contacted the Docker daemon.
247     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
248     3. The Docker daemon created a new container from that image which runs the
249        executable that produces the output you are currently reading.
250     4. The Docker daemon streamed that output to the Docker client, which sent it
251        to your terminal.
252
253 To try something more ambitious, you can run an Ubuntu container with:
254
255 .. code:: bash
256
257     $ docker run -it ubuntu bash
258
259 Build and Run Collectd Docker Image
260 -----------------------------------
261
262 Collectd-barometer flavors
263 ^^^^^^^^^^^^^^^^^^^^^^^^^^
264
265 Before starting to build and run the Collectd container, understand the available
266 flavors of Collectd containers:
267   * barometer-collectd - stable release, based on collectd 5.8
268   * barometer-collectd-master - release based on collectd 'master' branch
269   * barometer-collectd-experimental - release based on collectd 'master'
270     branch that also includes set of experimental(not yet merged into upstream)
271     pull requests
272
273 .. note::
274    Experimental container is not tested across various OS'es and the stability
275    of the container can change. Usage of experimental flavor is at users risk.
276
277 Stable barometer-collectd container is intended for work in production
278 environment as it is based on latest collectd official release.
279 `Barometer-collectd-master` and `barometer-collectd-experimental` containers
280 can be used in order to try new collectd features.
281 All flavors are located in `barometer` git repository - respective dockerfiles
282 are stored in subdirectories of 'docker/' directory
283
284
285 .. code:: bash
286
287     $ git clone https://gerrit.opnfv.org/gerrit/barometer
288     $ ls barometer/docker|grep collectd
289     barometer-collectd
290     barometer-collectd-master
291     barometer-collectd-experimental
292
293 .. note::
294    Main directory of barometer source code (directory that contains 'docker',
295    'docs', 'src' and systems sub-directories) will be referred as
296    ``<BAROMETER_REPO_DIR>``
297
298 Download the collectd docker image
299 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
300 If you wish to use a pre-built barometer image, you can pull the barometer
301 image from https://hub.docker.com/r/opnfv/barometer-collectd/
302
303 .. code:: bash
304
305     $ docker pull opnfv/barometer-collectd
306
307 Build stable collectd container
308 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
309
310 .. code:: bash
311
312     $ cd <BAROMETER_REPO_DIR>/docker/barometer-collectd
313     $ sudo docker build -t opnfv/barometer-collectd --build-arg http_proxy=`echo $http_proxy` \
314       --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
315
316 .. note::
317    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to be
318    passed only if system is behind an HTTP or HTTPS proxy server.
319
320 Check the docker images:
321
322 .. code:: bash
323
324    $ sudo docker images
325
326 Output should contain a barometer-collectd image:
327
328 .. code::
329
330    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
331    opnfv/barometer-collectd     latest              05f2a3edd96b        3 hours ago         1.2GB
332    centos                       7                   196e0ce0c9fb        4 weeks ago         197MB
333    centos                       latest              196e0ce0c9fb        4 weeks ago         197MB
334    hello-world                  latest              05a3bd381fc2        4 weeks ago         1.84kB
335
336 .. note::
337    If you do not plan to use collectd-master and collectd-experimental barometer
338    containers, then you can proceed directly to section `Run the collectd stable docker image`_
339
340
341 Build collectd-master container
342 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
343
344 .. code:: bash
345
346     $ cd <BAROMETER_REPO_DIR>
347     $ sudo docker build -t opnfv/barometer-collectd-master \
348      --build-arg http_proxy=`echo $http_proxy` \
349      --build-arg https_proxy=`echo $https_proxy` --network=host -f \
350      docker/barometer-collectd-master/Dockerfile .
351
352 .. note::
353    For `barometer-collectd-master` and `barometer-collectd-experimental` containers
354    proxy parameters should be passed only if system is behind an HTTP or HTTPS
355    proxy server (same as for stable collectd container)
356
357 Build collectd-experimental container
358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
359
360 .. code:: bash
361
362     $ cd <BAROMETER_REPO_DIR>
363     $ sudo docker build -t opnfv/barometer-collectd-experimental \
364      --build-arg http_proxy=`echo $http_proxy` \
365      --build-arg https_proxy=`echo $https_proxy` \
366      --network=host -f docker/barometer-collectd-experimental/Dockerfile .
367
368 .. note::
369    For `barometer-collectd-master` and `barometer-collectd-experimental` containers
370    proxy parameters should be passed only if system is behind an HTTP or HTTPS
371    proxy server (same as for stable collectd container)
372
373 Run the collectd stable docker image
374 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
375 .. code:: bash
376
377    $ cd <BAROMETER_REPO_DIR>
378    $ sudo docker run -ti --net=host -v \
379    `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
380    -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd
381
382 .. note::
383    The docker collectd image contains configuration for all the collectd
384    plugins. In the command above we are overriding
385    /opt/collectd/etc/collectd.conf.d by mounting a host directory
386    src/collectd/collectd_sample_configs that contains only the sample
387    configurations we are interested in running.
388
389    *If some dependencies for plugins listed in configuration directory
390    aren't met, then collectd startup may fail(collectd tries to
391    initialize plugins configurations for all given config files that can
392    be found in shared configs directory and may fail if some dependency
393    is missing).*
394
395    If `DPDK` or `RDT` can't be installed on host, then corresponding config
396    files should be removed from shared configuration directory
397    (`<BAROMETER_REPO_DIR>/src/collectd/collectd_sample_configs/`) prior
398    to starting barometer-collectd container. By example: in case of missing
399    `DPDK` functionality on the host, `dpdkstat.conf` and `dpdkevents.conf`
400    should be removed.
401
402    Sample configurations can be found at:
403    https://github.com/opnfv/barometer/tree/master/src/collectd/collectd_sample_configs
404
405    List of barometer-collectd dependencies on host for various plugins
406    can be found at:
407    https://wiki.opnfv.org/display/fastpath/Barometer-collectd+host+dependencies
408
409 Check your docker image is running
410
411 .. code:: bash
412
413    sudo docker ps
414
415 To make some changes when the container is running run:
416
417 .. code:: bash
418
419    sudo docker exec -ti <CONTAINER ID> /bin/bash
420
421 Run the barometer-collectd-master docker image
422 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
423 Run command for `barometer-collectd-master` container is very similar to command
424 used for stable container - the only differences are name of the image
425 and location of the sample configuration files(as different version of collectd
426 plugins requiring different configuration files)
427
428
429 .. code:: bash
430
431    $ cd <BAROMETER_REPO_DIR>
432    $ sudo docker run -ti --net=host -v \
433    `pwd`/src/collectd/collectd_sample_configs-master:/opt/collectd/etc/collectd.conf.d \
434    -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd-master
435
436 .. note::
437    Barometer collectd docker images are sharing some directories with host
438    (e.g. /tmp) therefore only one of collectd barometer flavors can be run
439    at a time. In other words, if you want to try `barometer-collectd-master` or
440    `barometer-collectd-experimental` image, please stop instance of
441    `barometer-collectd(stable)` image first.
442
443 Run the barometer-collectd-experimental docker image
444 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
445 Barometer-collectd-experimental container shares default configuration files
446 with 'barometer-collectd-master' equivalent but some of experimental pull
447 requests may require modified configuration. Additional configuration files that
448 are required specifically by experimental container can be found in
449 `docker/barometer-collectd-experimental/experimental-configs/`
450 directory. Content of this directory (all \*.conf files) should be copied to
451 `src/collectd/collectd_sample_configs-master` directory before first run of
452 experimental container.
453
454 .. code:: bash
455
456    $ cd <BAROMETER_REPO_DIR>
457    $ cp docker/barometer-collectd-experimental/experimental-configs/*.conf \
458      src/collectd/collectd_sample_configs-master
459
460 When configuration files are up to date for experimental container, it can be
461 launched using following command (almost identical to run-command for 'master'
462 collectd container)
463
464 .. code:: bash
465
466    $ cd <BAROMETER_REPO_DIR>
467    $ sudo docker run -ti --net=host -v \
468    `pwd`/src/collectd/collectd_sample_configs-master:/opt/collectd/etc/collectd.conf.d \
469    -v /var/run:/var/run -v /tmp:/tmp --privileged \
470    opnfv/barometer-collectd-experimental
471
472
473 Build and Run InfluxDB and Grafana docker images
474 ------------------------------------------------
475
476 Overview
477 ^^^^^^^^
478 The barometer-influxdb image is based on the influxdb:1.3.7 image from the influxdb dockerhub. To
479 view detils on the base image please visit
480 `https://hub.docker.com/_/influxdb/  <https://hub.docker.com/_/influxdb/>`_ Page includes details of
481 exposed ports and configurable enviromental variables of the base image.
482
483 The barometer-grafana image is based on grafana:4.6.3 image from the grafana dockerhub. To view
484 details on the base image please visit
485 `https://hub.docker.com/r/grafana/grafana/ <https://hub.docker.com/r/grafana/grafana/>`_ Page
486 includes details on exposed ports and configurable enviromental variables of the base image.
487
488 The barometer-grafana image includes pre-configured source and dashboards to display statistics exposed
489 by the barometer-collectd image. The default datasource is an influxdb database running on localhost
490 but the address of the influxdb server can be modified when launching the image by setting the
491 environmental variables influxdb_host to IP or hostname of host on which influxdb server is running.
492
493 Additional dashboards can be added to barometer-grafana by mapping a volume to /opt/grafana/dashboards.
494 Incase where a folder is mounted to this volume only files included in this folder will be visible
495 inside barometer-grafana. To ensure all default files are also loaded please ensure they are included in
496 volume folder been mounted. Appropriate example are given in section `Run the Grafana docker image`_
497
498 Download the InfluxDB and Grafana docker images
499 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
500 If you wish to use pre-built barometer project's influxdb and grafana images, you can pull the
501 images from https://hub.docker.com/r/opnfv/barometer-influxdb/ and https://hub.docker.com/r/opnfv/barometer-grafana/
502
503 .. note::
504    If your preference is to build images locally please see sections `Build InfluxDB Docker Image`_ and
505    `Build Grafana Docker Image`_
506
507 .. code:: bash
508
509     $ docker pull opnfv/barometer-influxdb
510     $ docker pull opnfv/barometer-grafana
511
512 .. note::
513    If you have pulled the pre-built barometer-influxdb and barometer-grafana images there is no
514    requirement to complete steps outlined in  sections `Build InfluxDB Docker Image`_ and
515    `Build Grafana Docker Image`_ and you can proceed directly to section
516    `Run the Influxdb and Grafana Images`_
517
518 Build InfluxDB docker image
519 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
520
521 Build influxdb image from Dockerfile
522
523 .. code:: bash
524
525   $ cd barometer/docker/barometer-influxdb
526   $ sudo docker build -t opnfv/barometer-influxdb --build-arg http_proxy=`echo $http_proxy` \
527     --build-arg https_proxy=`echo $https_proxy` --network=host -f Dockerfile .
528
529 .. note::
530    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
531    be passed only if system is behind an HTTP or HTTPS proxy server.
532
533 Check the docker images:
534
535 .. code:: bash
536
537    $ sudo docker images
538
539 Output should contain an influxdb image:
540
541 .. code::
542
543    REPOSITORY                   TAG                 IMAGE ID            CREATED            SIZE
544    opnfv/barometer-influxdb     latest              1e4623a59fe5        3 days ago         191MB
545
546 Build Grafana docker image
547 ^^^^^^^^^^^^^^^^^^^^^^^^^^
548
549 Build Grafana image from Dockerfile
550
551 .. code:: bash
552
553   $ cd barometer/docker/barometer-grafana
554   $ sudo docker build -t opnfv/barometer-grafana --build-arg http_proxy=`echo $http_proxy` \
555     --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
556
557 .. note::
558    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs to
559    be passed only if system is behind an HTTP or HTTPS proxy server.
560
561 Check the docker images:
562
563 .. code:: bash
564
565    $ sudo docker images
566
567 Output should contain an influxdb image:
568
569 .. code::
570
571    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
572    opnfv/barometer-grafana      latest              05f2a3edd96b        3 hours ago         1.2GB
573
574 Run the Influxdb and Grafana Images
575 -----------------------------------
576
577 Run the InfluxDB docker image
578 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
579 .. code:: bash
580
581    $ sudo docker run -tid -v /var/lib/influxdb:/var/lib/influxdb --net=host\
582     --name bar-influxdb opnfv/barometer-influxdb
583
584 Check your docker image is running
585
586 .. code:: bash
587
588    sudo docker ps
589
590 To make some changes when the container is running run:
591
592 .. code:: bash
593
594    sudo docker exec -ti <CONTAINER ID> /bin/bash
595
596 When both collectd and InfluxDB containers are located
597 on the same host, then no additional configuration have to be added and you
598 can proceed directly to `Run the Grafana docker image`_ section.
599
600 Modify collectd to support InfluxDB on another host
601 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
602 If InfluxDB and collectd containers are located on separate hosts, then
603 additional configuration have to be done in ``collectd`` container - it
604 normally sends data using network plugin to 'localhost/127.0.0.1' therefore
605 changing output location is required:
606
607 1. Stop and remove running bar-collectd container (if it is running)
608
609    .. code:: bash
610
611       $ sudo docker ps #to get collectd container name
612       $ sudo docker rm -f <COLLECTD_CONTAINER_NAME>
613
614 2. Go to location where shared collectd config files are stored
615
616    .. code:: bash
617
618       $ cd <BAROMETER_REPO_DIR>
619       $ cd src/collectd/collectd_sample_configs
620
621 3. Edit content of ``network.conf`` file.
622    By default this file looks like that:
623
624    .. code::
625
626       LoadPlugin  network
627       <Plugin network>
628       Server "127.0.0.1" "25826"
629       </Plugin>
630
631    ``127.0.0.1`` string has to be replaced with the IP address of host where
632    InfluxDB container is running (e.g. ``192.168.121.111``). Edit this using your
633    favorite text editor.
634
635 4. Start again collectd container like it is described in
636    `Run the collectd stable docker image`_ chapter
637
638    .. code:: bash
639
640       $ cd <BAROMETER_REPO_DIR>
641       $ sudo docker run -ti --name bar-collectd --net=host -v \
642       `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \
643       -v /var/run:/var/run -v /tmp:/tmp --privileged opnfv/barometer-collectd
644
645 Now collectd container will be sending data to InfluxDB container located on
646 remote Host pointed by IP configured in step 3.
647
648 Run the Grafana docker image
649 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
650
651 Connecting to an influxdb instance running on local system and adding own custom dashboards
652
653 .. code:: bash
654
655    $ cd <BAROMETER_REPO_DIR>
656    $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana \
657      -v ${PWD}/docker/barometer-grafana/dashboards:/opt/grafana/dashboards \
658      --name bar-grafana --net=host opnfv/barometer-grafana
659
660 Connecting to an influxdb instance running on remote system with hostname of someserver and IP address
661 of 192.168.121.111
662
663 .. code:: bash
664
665    $ sudo docker run -tid -v /var/lib/grafana:/var/lib/grafana --net=host -e \
666      influxdb_host=someserver --add-host someserver:192.168.121.111 --name \
667      bar-grafana opnfv/barometer-grafana
668
669 Check your docker image is running
670
671 .. code:: bash
672
673    sudo docker ps
674
675 To make some changes when the container is running run:
676
677 .. code:: bash
678
679    sudo docker exec -ti <CONTAINER ID> /bin/bash
680
681 Connect to <host_ip>:3000 with a browser and log into grafana: admin/admin
682
683 Cleanup of influxdb/grafana configuration
684 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
685
686 When user wants to remove current grafana and influxdb configuration,
687 folowing actions have to be performed
688
689 1. Stop and remove running influxdb and grafana containers
690
691 .. code:: bash
692
693    sudo docker rm -f bar-grafana bar-influxdb
694
695 2. Remove shared influxdb and grafana folders from the Host
696
697 .. code:: bash
698
699    sudo rm -rf /var/lib/grafana
700    sudo rm -rf /var/lib/influxdb
701
702 .. note::
703    Shared folders are storing configuration of grafana and influxdb
704    containers. In case of changing influxdb or grafana configuration
705    (e.g. moving influxdb to another host) it is good to perform cleanup
706    on shared folders to not affect new setup with an old configuration.
707
708 Build and Run VES and Kafka Docker Images
709 -----------------------------------------
710
711 Download VES and Kafka docker images
712 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
713
714 If you wish to use pre-built barometer project's VES and kafka images, you can pull the
715 images from https://hub.docker.com/r/opnfv/barometer-ves/ and  https://hub.docker.com/r/opnfv/barometer-kafka/
716
717 .. note::
718    If your preference is to build images locally please see sections `Build the Kafka Image`_ and
719    `Build VES Image`_
720
721 .. code:: bash
722
723     $ docker pull opnfv/barometer-kafka
724     $ docker pull opnfv/barometer-ves
725
726 .. note::
727    If you have pulled the pre-built images there is no requirement to complete steps outlined
728    in sections `Build Kafka Docker Image`_ and `Build VES Docker Image`_ and you can proceed directly to section
729    `Run Kafka Docker Image`_
730
731 Build Kafka docker image
732 ^^^^^^^^^^^^^^^^^^^^^^^^
733
734 Build Kafka docker image:
735
736 .. code:: bash
737
738     $ cd barometer/docker/barometer-kafka
739     $ sudo docker build -t opnfv/barometer-kafka --build-arg http_proxy=`echo $http_proxy` \
740       --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
741
742 .. note::
743    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
744    to be passed only if system is behind an HTTP or HTTPS proxy server.
745
746 Check the docker images:
747
748 .. code:: bash
749
750    $ sudo docker images
751
752 Output should contain a barometer image:
753
754 .. code::
755
756    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
757    opnfv/barometer-kafka     latest              05f2a3edd96b        3 hours ago         1.2GB
758
759 Build VES docker image
760 ^^^^^^^^^^^^^^^^^^^^^^
761
762 Build VES application docker image:
763
764 .. code:: bash
765
766     $ cd barometer/docker/barometer-ves
767     $ sudo docker build -t opnfv/barometer-ves --build-arg http_proxy=`echo $http_proxy` \
768       --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
769
770 .. note::
771    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
772    to be passed only if system is behind an HTTP or HTTPS proxy server.
773
774 Check the docker images:
775
776 .. code:: bash
777
778    $ sudo docker images
779
780 Output should contain a barometer image:
781
782 .. code::
783
784    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
785    opnfv/barometer-ves       latest              05f2a3edd96b        3 hours ago         1.2GB
786
787 Run Kafka docker image
788 ^^^^^^^^^^^^^^^^^^^^^^
789
790 .. note::
791    Before running Kafka an instance of Zookeeper must be running for the Kafka broker to register
792    with. Zookeeper can be running locally or on a remote platform. Kafka's broker_id and address of
793    its zookeeper instance can be configured by setting values for environmental variables 'broker_id'
794    and 'zookeeper_node'. In instance where 'broker_id' and/or 'zookeeper_node' is not set the default
795    setting of broker_id=0 and zookeeper_node=localhost is used. In intance where Zookeeper is running
796    on same node as Kafka and there is a one to one relationship between Zookeeper and Kafka, default
797    setting can be used. The docker argument `add-host` adds hostname and IP address to
798    /etc/hosts file in container
799
800 Run zookeeper docker image:
801
802 .. code:: bash
803
804    $ sudo docker run -tid --net=host -p 2181:2181 zookeeper:3.4.11
805
806 Run kafka docker image which connects with a zookeeper instance running on same node with a 1:1 relationship
807
808 .. code:: bash
809
810    $ sudo docker run -tid --net=host -p 9092:9092 opnfv/barometer-kafka
811
812
813 Run kafka docker image which connects with a zookeeper instance running on a node with IP address of
814 192.168.121.111 using broker ID of 1
815
816 .. code:: bash
817
818    $ sudo docker run -tid --net=host -p 9092:9092 --env broker_id=1 --env zookeeper_node=zookeeper --add-host \
819      zookeeper:192.168.121.111 opnfv/barometer-kafka
820
821 Run VES Application docker image
822 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
823 .. note::
824    VES application uses configuration file ves_app_config.conf from directory
825    barometer/3rd_party/collectd-ves-app/ves_app/config/ and host.yaml file from
826    barometer/3rd_party/collectd-ves-app/ves_app/yaml/ by default. If you wish to use a custom config
827    file it should be mounted to mount point /opt/ves/config/ves_app_config.conf. To use an alternative yaml
828    file from folder barometer/3rd_party/collectd-ves-app/ves_app/yaml the name of the yaml file to use
829    should be passed as an additional command. If you wish to use a custom file the file should be
830    mounted to mount point /opt/ves/yaml/ Please see examples below
831
832 Run VES docker image with default configuration
833
834 .. code:: bash
835
836    $ sudo docker run -tid --net=host opnfv/barometer-ves
837
838 Run VES docker image with guest.yaml files from barometer/3rd_party/collectd-ves-app/ves_app/yaml/
839
840 .. code:: bash
841
842    $ sudo docker run -tid --net=host opnfv/barometer-ves guest.yaml
843
844
845 Run VES docker image with using custom config and yaml files. In example below yaml/ folder cotains
846 file named custom.yaml
847
848 .. code:: bash
849
850    $ sudo docker run -tid --net=host -v ${PWD}/custom.config:/opt/ves/config/ves_app_config.conf \
851      -v ${PWD}/yaml/:/opt/ves/yaml/ opnfv/barometer-ves custom.yaml
852
853 Run VES Test Collector application
854 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
855
856 VES Test Collector application can be used for displaying platform
857 wide metrics that are collected by barometer-ves container.
858 Setup instructions are located in: :ref:`Setup VES Test Collector`
859
860 Build and Run DMA and Redis Docker Images
861 -----------------------------------------
862
863 Download DMA docker images
864 ^^^^^^^^^^^^^^^^^^^^^^^^^^
865
866 If you wish to use pre-built barometer project's DMA images, you can pull the
867 images from https://hub.docker.com/r/opnfv/barometer-dma/
868
869 .. note::
870    If your preference is to build images locally please see sections `Build DMA Docker Image`_
871
872 .. code:: bash
873
874     $ docker pull opnfv/barometer-dma
875
876 .. note::
877    If you have pulled the pre-built images there is no requirement to complete steps outlined
878    in sections `Build DMA Docker Image`_ and you can proceed directly to section
879    `Run DMA Docker Image`_
880
881 Build DMA docker image
882 ^^^^^^^^^^^^^^^^^^^^^^
883
884 Build DMA docker image:
885
886 .. code:: bash
887
888     $ cd barometer/docker/barometer-dma
889     $ sudo docker build -t opnfv/barometer-dma --build-arg http_proxy=`echo $http_proxy` \
890       --build-arg https_proxy=`echo $https_proxy` -f Dockerfile .
891
892 .. note::
893    In the above mentioned ``docker build`` command, http_proxy & https_proxy arguments needs
894    to be passed only if system is behind an HTTP or HTTPS proxy server.
895
896 Check the docker images:
897
898 .. code:: bash
899
900    $ sudo docker images
901
902 Output should contain a barometer image:
903
904 .. code::
905
906    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
907    opnfv/barometer-dma          latest              2f14fbdbd498        3 hours ago         941 MB
908
909 Run Redis docker image
910 ^^^^^^^^^^^^^^^^^^^^^^
911
912 .. note::
913    Before running DMA, Redis must be running.
914
915 Run Redis docker image:
916
917 .. code:: bash
918
919    $ sudo docker run -tid -p 6379:6379 --name barometer-redis redis
920
921 Check your docker image is running
922
923 .. code:: bash
924
925    sudo docker ps
926
927 Run DMA docker image
928 ^^^^^^^^^^^^^^^^^^^^
929 .. note::
930
931 Run DMA docker image with default configuration
932
933 .. code:: bash
934
935    $ cd barometer/docker/barometer-dma
936    $ sudo mkdir /etc/barometer-dma
937    $ sudo cp ../../src/dma/examples/config.toml /etc/barometer-dma/
938    $ sudo vi /etc/barometer-dma/config.toml
939    (edit amqp_password and os_password:OpenStack admin password)
940
941    $ sudo su -
942    (When there is no key for SSH access authentication)
943    # ssh-keygen
944    (Press Enter until done)
945    (Backup if necessary)
946    # cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys_org
947    # cat ~/.ssh/authorized_keys_org ~/.ssh/id_rsa.pub \
948      > ~/.ssh/authorized_keys
949    # exit
950
951    $ sudo docker run -tid --net=host --name server \
952      -v /etc/barometer-dma:/etc/barometer-dma \
953      -v /root/.ssh/id_rsa:/root/.ssh/id_rsa \
954      -v /etc/collectd/collectd.conf.d:/etc/collectd/collectd.conf.d \
955      opnfv/barometer-dma /server
956
957    $ sudo docker run -tid --net=host --name infofetch \
958      -v /etc/barometer-dma:/etc/barometer-dma \
959      -v /var/run/libvirt:/var/run/libvirt \
960      opnfv/barometer-dma /infofetch
961
962    (Execute when installing the threshold evaluation binary)
963    $ sudo docker cp infofetch:/threshold ./
964    $ sudo ln -s ${PWD}/threshold /usr/local/bin/
965
966 References
967 ^^^^^^^^^^
968 .. [1] https://docs.docker.com/engine/admin/systemd/#httphttps-proxy
969 .. [2] https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository
970 .. [3] https://docs.docker.com/engine/userguide/
971
972