summaryrefslogtreecommitdiffstats
path: root/build/ves-barometer
diff options
context:
space:
mode:
Diffstat (limited to 'build/ves-barometer')
-rw-r--r--build/ves-barometer/Dockerfile38
-rw-r--r--build/ves-barometer/start.sh151
2 files changed, 189 insertions, 0 deletions
diff --git a/build/ves-barometer/Dockerfile b/build/ves-barometer/Dockerfile
new file mode 100644
index 0000000..4bd4c51
--- /dev/null
+++ b/build/ves-barometer/Dockerfile
@@ -0,0 +1,38 @@
+# Copyright 2018 AT&T Intellectual Property, Inc
+#
+# 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.
+#
+# What this is: A Dockerfile for building an OPFNV VES Agent container image.
+#
+# Status: this is a work in progress, under test.
+#
+FROM centos:7
+RUN yum update -y && yum install -y which sudo git
+ENV DOCKER y
+ENV repos_dir /src
+ENV openstack_plugins /src/barometer/src/collectd-openstack-plugins
+RUN git config --global http.sslVerify false
+
+WORKDIR ${repos_dir}
+RUN git clone https://gerrit.opnfv.org/gerrit/barometer
+WORKDIR ${repos_dir}/barometer/systems
+RUN sh ./build_base_machine.sh
+
+RUN useradd -ms /bin/bash collectd_exec
+RUN echo "collectd_exec ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
+
+WORKDIR ${openstack_plugins}
+RUN make
+
+COPY start.sh /opt/ves/start.sh
+ENTRYPOINT ["/bin/bash", "/opt/ves/start.sh"]
diff --git a/build/ves-barometer/start.sh b/build/ves-barometer/start.sh
new file mode 100644
index 0000000..da452bf
--- /dev/null
+++ b/build/ves-barometer/start.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+# Copyright 2018 AT&T Intellectual Property, Inc
+#
+# 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.
+#
+# What this is: Startup script for the OPNFV Barometer collectd agent running
+# under docker.
+
+rm -f /opt/collectd/etc/collectd.conf.d/*
+
+if [[ "$ves_mode" == "node" ]]; then
+ cat <<EOF >/opt/collectd/etc/collectd.conf.d/collectd.conf
+# for VES plugin
+LoadPlugin logfile
+<Plugin logfile>
+ LogLevel debug
+ File STDOUT
+ Timestamp true
+ PrintSeverity false
+</Plugin>
+
+LoadPlugin csv
+<Plugin csv>
+ DataDir "/work-dir/collectd/install/var/lib/csv"
+ StoreRates false
+</Plugin>
+
+LoadPlugin target_set
+LoadPlugin match_regex
+<Chain "PreCache">
+ <Rule "mark_memory_as_host">
+ <Match "regex">
+ Plugin "^memory$"
+ </Match>
+ <Target "set">
+ PluginInstance "host"
+ </Target>
+ </Rule>
+</Chain>
+
+LoadPlugin cpu
+<Plugin cpu>
+ ReportByCpu true
+ ReportByState true
+ ValuesPercentage true
+</Plugin>
+
+LoadPlugin interface
+LoadPlugin memory
+LoadPlugin load
+LoadPlugin disk
+# TODO: how to set this option only to apply to VMs (not nodes)
+LoadPlugin uuid
+
+LoadPlugin write_kafka
+<Plugin write_kafka>
+ Property "metadata.broker.list" "$ves_kafka_hostname:$ves_kafka_port"
+ <Topic "collectd">
+ Format JSON
+ </Topic>
+</Plugin>
+EOF
+
+ if [[ -d /etc/nova ]]; then
+ cat <<EOF >>~/collectd/collectd.conf
+LoadPlugin virt
+<Plugin virt>
+ Connection "qemu:///system"
+ RefreshInterval 60
+ HostnameFormat uuid
+ PluginInstanceFormat name
+ ExtraStats "cpu_util"
+</Plugin>
+EOF
+ fi
+else
+ cat <<EOF >/opt/collectd/etc/collectd.conf.d/collectd.conf
+# for VES plugin
+LoadPlugin logfile
+<Plugin logfile>
+ LogLevel debug
+ File STDOUT
+ Timestamp true
+ PrintSeverity false
+</Plugin>
+
+LoadPlugin cpu
+<Plugin cpu>
+ ReportByCpu true
+ ReportByState true
+ ValuesPercentage true
+</Plugin>
+
+LoadPlugin csv
+<Plugin csv>
+ DataDir "/tmp"
+</Plugin>
+
+LoadPlugin interface
+LoadPlugin memory
+LoadPlugin load
+LoadPlugin disk
+LoadPlugin uuid
+
+LoadPlugin write_kafka
+<Plugin write_kafka>
+ Property "metadata.broker.list" "$ves_kafka_hostname:$ves_kafka_port"
+ <Topic "collectd">
+ Format JSON
+ </Topic>
+</Plugin>
+
+LoadPlugin target_set
+LoadPlugin match_regex
+<Chain "PreCache">
+ <Rule "mark_memory_as_guest">
+ <Match "regex">
+ Plugin "^memory$"
+ </Match>
+ <Target "set">
+ PluginInstance "guest"
+ </Target>
+ </Rule>
+</Chain>
+EOF
+fi
+
+echo; echo "cat /opt/collectd/etc/collectd.conf.d/collectd.conf"
+cat /opt/collectd/etc/collectd.conf.d/collectd.conf
+
+#echo "Delete conf files causing collectd to fail"
+#rm -f /opt/collectd/etc/collectd.conf.d/dpdk*.conf
+#rm -f /opt/collectd/etc/collectd.conf.d/snmp*.conf
+#rm -f /opt/collectd/etc/collectd.conf.d/virt.conf
+#rm -f /opt/collectd/etc/collectd.conf.d/mcelog.conf
+#rm -f /opt/collectd/etc/collectd.conf.d/rdt.conf
+#sed -i -- 's/LoadPlugin cpufreq/#LoadPlugin cpufreq/' /opt/collectd/etc/collectd.conf.d/default_plugins.conf
+
+/opt/collectd/sbin/collectd -f
+echo "collectd has exited. sleeping for an hour to enable debugging"
+sleep 3600