From b20fa77aef9d184afa2dadba619afc12878ae67b Mon Sep 17 00:00:00 2001 From: Radoslaw Jablonski Date: Fri, 27 Jul 2018 15:32:54 +0100 Subject: Add support for 'collectd-master' container 'collectd-master' contains development versions of collectd with the latest features. It is based on master branch from collect repository. Change-Id: I720b5e5938b402281674ee73851c5f611e4d1178 Signed-off-by: Radoslaw Jablonski --- docker/README_collectd | 135 +++++++++++++++++++++++ docker/barometer-collectd-master/Dockerfile | 29 +++++ docker/barometer-collectd-master/run_collectd.sh | 15 +++ docker/barometer-collectd/README | 106 ------------------ 4 files changed, 179 insertions(+), 106 deletions(-) create mode 100644 docker/README_collectd create mode 100644 docker/barometer-collectd-master/Dockerfile create mode 100644 docker/barometer-collectd-master/run_collectd.sh delete mode 100644 docker/barometer-collectd/README (limited to 'docker') diff --git a/docker/README_collectd b/docker/README_collectd new file mode 100644 index 00000000..c922ab64 --- /dev/null +++ b/docker/README_collectd @@ -0,0 +1,135 @@ +============================================================================== +Readme for collectd docker container in barometer project +============================================================================== + +This text file includes information about environment preparation and +deployment collectd in docker container + +Table of content: +1. DESCRIPTION +2. SYSTEM REQUIREMENTS +3. INSTALLATION NOTES - barometer-collectd +4. INSTALLATION NOTES - barometer-collectd-master +5. ADDITIONAL STEPS + +------------------------------------------------------------------------------ +1. DESCRIPTION + +This Dockerfile provides instruction for building collect in isolated container. +There are currently two variants of collectd container: + - barometer-collectd - it is based on stable collect release + - barometer-collectd-master - development container that is based on + latest 'master' branch for collectd project. It contains all available + collectd plugins and features that are available on 'master' branch but + some issues with configuration or stability may occur + +------------------------------------------------------------------------------ +2. SYSTEM REQUIREMENTS + + Docker >= 17.06.0-ce + +------------------------------------------------------------------------------ +3. INSTALLATION NOTES: barometer-collectd (stable container) + +To build docker container, that is based on stable collectd release, run: +sudo docker build -f ./docker/barometer-collectd/Dockerfile ./docker/barometer-collectd +from barometer folder. + +sudo docker images # get docker image id +sudo docker run -ti --net=host -v `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \ +-v /var/run:/var/run -v /tmp:/tmp --privileged + +To make some changes run +sudo docker run -ti --net=host -v `pwd`/src/collectd/collectd_sample_configs:/opt/collectd/etc/collectd.conf.d \ +-v /var/run:/var/run -v /tmp:/tmp --privileged --entrypoint=/bin/bash + +/opt/collectd/sbin/collectd -f + +------------------------------------------------------------------------------ +4. INSTALLATION NOTES: barometer-collectd-master (development container) + +To build docker barometer-collectd-master container run (it is based on master branch from collectd): +sudo docker build -f ./docker/barometer-collectd-master/Dockerfile . +from root barometer folder. + +To run builded image run +sudo docker images # get docker image id +sudo docker run -ti --net=host -v `pwd`/src/collectd/collectd_sample_configs-master:/opt/collectd/etc/collectd.conf.d \ +-v /var/run:/var/run -v /tmp:/tmp --privileged + +NOTE: barometer-collectd-master container uses a different sample configurations files +compared to regular barometer-collectd container (src/collectd/collectd_sample_configs-master) + +To make some changes run +sudo docker run -ti --net=host -v `pwd`/src/collectd/collectd_sample_configs-master:/opt/collectd/etc/collectd.conf.d \ +-v /var/run:/var/run -v /tmp:/tmp --privileged --entrypoint=/bin/bash + +/opt/collectd/sbin/collectd -f + +------------------------------------------------------------------------------ +5. ADDITIONAL STEPS + +To check if container works properly additional packages should be installed +on host system. + +DEVELOPMENT TOOLS +sudo yum group install "Development Tools" + +MCELOG +To simulate mcelog message use instruction in http://artifacts.opnfv.org/barometer/docs/index.html#mcelog-plugin + +git clone https://github.com/andikleen/mce-inject +cd mce-inject/ +make +sudo make install +modprobe mce-inject + +go to mcelog folder +sudo make test + +if runs multiple times mcelog service shoud be restarted(cause mcelog make test exits closes mcelog) + +VIRT +http://artifacts.opnfv.org/barometer/docs/index.html#virt-plugin +Check that libvirtd is running on the remote host +systemctl status libvirtd +virsh list +virsh perf instance-00000003 +sudo virsh perf instance-00000003 --enable cpu_cycles --live +sudo virsh perf instance-00000003 --enable cmt --live +sudo virsh perf instance-00000003 --enable mbmt --live +sudo virsh perf instance-00000003 --enable mbml --live +sudo virsh perf instance-00000003 --enable instructions --live +sudo virsh perf instance-00000003 --enable cache_references --live +sudo virsh perf instance-00000003 --enable cache_mises --live +sudo virsh perf instance-00000003 --enable cache_misses --live + +OVS +To successfuly run ovs plugins in Docker you need an ovs instance to connect to + +sudo yum install -y openvswitch-switch +sudo service openvswitch-switch start +sudo ovs-vsctl set-manager ptcp:6640 + +Alternatively you can build ovs from source +yum -y install make gcc openssl-devel autoconf automake rpm-build \ + redhat-rpm-config python-devel openssl-devel kernel-devel \ + kernel-debug-devel libtool wget python-six selinux-policy-devel +mkdir -p ~/rpmbuild/SOURCES +cd ~/rpmbuild/SOURCES +wget http://openvswitch.org/releases/openvswitch-2.5.3.tar.gz +tar xfz openvswitch-2.5.3.tar.gz +sed 's/openvswitch-kmod, //g' rhel/openvswitch.spec > rhel/openvswitch_no_kmod.spec +rpmbuild -bb --nocheck rhel/openvswitch_no_kmod.spec +cd ../RPMS/x86_64/ +yum install -y openvswitch-2.5.3-1.x86_64.rpm +sudo systemctl start openvswitch.service +sudo ovs-vsctl set-manager ptcp:6640 + +To check if connection is successfull please check +sudo ovs-vsctl show +319efc53-b321-49a9-b628-e8d70f9bd8a9 + Manager "ptcp:6640" + is_connected: true - can be a marker that ovs plugins successfully connected + ovs_version: "2.5.3" +on the host. diff --git a/docker/barometer-collectd-master/Dockerfile b/docker/barometer-collectd-master/Dockerfile new file mode 100644 index 00000000..a1c957f3 --- /dev/null +++ b/docker/barometer-collectd-master/Dockerfile @@ -0,0 +1,29 @@ +FROM centos:7 +RUN yum update -y && \ + yum install -y which sudo git && \ + yum clean all && \ + git config --global http.sslVerify false + +ENV DOCKER y +ENV COLLECTD_USE_MASTER y +ENV repos_dir /src +ENV openstack_plugins /src/barometer/src/collectd-openstack-plugins + +WORKDIR ${repos_dir} +RUN mkdir -p ${repos_dir}/barometer +COPY . ${repos_dir}/barometer + +WORKDIR ${repos_dir}/barometer/systems +RUN sh ./build_base_machine.sh && \ + useradd -ms /bin/bash collectd_exec && \ + echo "collectd_exec ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + +WORKDIR ${openstack_plugins} +RUN make && \ + pip install --upgrade pip && \ + pip install -r ${openstack_plugins}/collectd-openstack-plugins/requirements.txt + +COPY docker/barometer-collectd-master/run_collectd.sh /run_collectd.sh +RUN chmod +x /run_collectd.sh + +ENTRYPOINT ["/run_collectd.sh"] diff --git a/docker/barometer-collectd-master/run_collectd.sh b/docker/barometer-collectd-master/run_collectd.sh new file mode 100644 index 00000000..001cce1a --- /dev/null +++ b/docker/barometer-collectd-master/run_collectd.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Copyright 2017 OPNFV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +/opt/collectd/sbin/collectd -f diff --git a/docker/barometer-collectd/README b/docker/barometer-collectd/README deleted file mode 100644 index 4936ad8c..00000000 --- a/docker/barometer-collectd/README +++ /dev/null @@ -1,106 +0,0 @@ -============================================================================== -Readme for collectd docker container in barometer project -============================================================================== - -This text file includes information about environment preparation and -deployment collectd in docker container - -Table of content: -1. DESCRIPTION -2. SYSTEM REQUIREMENTS -3. INSTALLATION NOTES -4. ADDITIONAL STEPS - ------------------------------------------------------------------------------- -1. DESCRIPTION - -This Dockerfile provides instruction for building collect in isolated container - ------------------------------------------------------------------------------- -2. SYSTEM REQUIREMENTS - - Docker >= 17.06.0-ce - ------------------------------------------------------------------------------- -3. INSTALLATION NOTES - -To build docker container run -sudo docker build -f ./docker/barometer-collectd/Dockerfile . -from barometer folder. - -To run builded image run -sudo docker images -Get docker image id -sudo docker run -ti --net=host -v `pwd`/../src/collectd_sample_configs:/opt/collectd/etc/collectd.d \ --v /var/run:/var/run -v /tmp:/tmp --privileged /run_collectd.sh - -To make some changes run -sudo docker run -ti --net=host -v `pwd`/../collectd_sample_configs:/opt/collectd/etc/collectd.d \ - -v /var/run:/var/run --privileged /bin/bash - -/opt/collectd/sbin/collectd -f - ------------------------------------------------------------------------------- -4. ADDITIONAL STEPS - -To check if container works properly additional packages should be installed -on host system. - -MCELOG -To simulate mcelog message use instruction in http://artifacts.opnfv.org/barometer/docs/index.html#mcelog-plugin - -git clone https://github.com/andikleen/mce-inject -cd mce-inject/ -make -sudo make install -modprobe mce-inject - -go to mcelog folder -sudo make test - -if runs multiple times mcelog service shoud be restarted(cause mcelog make test exits closes mcelog) - -VIRT -http://artifacts.opnfv.org/barometer/docs/index.html#virt-plugin -Check that libvirtd is running on the remote host -systemctl status libvirtd -virsh list -virsh perf instance-00000003 -sudo virsh perf instance-00000003 --enable cpu_cycles --live -sudo virsh perf instance-00000003 --enable cmt --live -sudo virsh perf instance-00000003 --enable mbmt --live -sudo virsh perf instance-00000003 --enable mbml --live -sudo virsh perf instance-00000003 --enable instructions --live -sudo virsh perf instance-00000003 --enable cache_references --live -sudo virsh perf instance-00000003 --enable cache_mises --live -sudo virsh perf instance-00000003 --enable cache_misses --live - -OVS -To successfuly run ovs plugins in Docker you need an ovs instance to connect to - -sudo yum install -y openvswitch-switch -sudo service openvswitch-switch start -sudo ovs-vsctl set-manager ptcp:6640 - -Alternatively you can build ovs from source -yum -y install make gcc openssl-devel autoconf automake rpm-build \ - redhat-rpm-config python-devel openssl-devel kernel-devel \ - kernel-debug-devel libtool wget python-six selinux-policy-devel -mkdir -p ~/rpmbuild/SOURCES -cd ~/rpmbuild/SOURCES -wget http://openvswitch.org/releases/openvswitch-2.5.3.tar.gz -tar xfz openvswitch-2.5.3.tar.gz -sed 's/openvswitch-kmod, //g' rhel/openvswitch.spec > rhel/openvswitch_no_kmod.spec -rpmbuild -bb --nocheck rhel/openvswitch_no_kmod.spec -cd ../RPMS/x86_64/ -yum install -y openvswitch-2.5.3-1.x86_64.rpm -sudo systemctl start openvswitch.service -sudo ovs-vsctl set-manager ptcp:6640 - -To check if connection is successfull please check -sudo ovs-vsctl show -319efc53-b321-49a9-b628-e8d70f9bd8a9 - Manager "ptcp:6640" - is_connected: true - can be a marker that ovs plugins successfully connected - ovs_version: "2.5.3" -on the host. -- cgit 1.2.3-korg