summaryrefslogtreecommitdiffstats
path: root/plugins/barometer
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/barometer')
-rw-r--r--plugins/barometer/plugin.desc52
-rw-r--r--plugins/barometer/roles/collectd/tasks/collectd.yml126
-rw-r--r--plugins/barometer/roles/collectd/tasks/main.yml13
-rw-r--r--plugins/barometer/roles/collectd/templates/collectd-aodh.conf.j237
-rw-r--r--plugins/barometer/roles/collectd/templates/collectd-gnocchi.conf.j240
-rw-r--r--plugins/barometer/roles/collectd/templates/hugepages.conf.j210
-rw-r--r--plugins/barometer/roles/collectd/templates/logfile.conf.j213
-rw-r--r--plugins/barometer/roles/collectd/templates/mcelog.conf.j29
-rw-r--r--plugins/barometer/roles/collectd/templates/ovs_events.conf.j211
-rw-r--r--plugins/barometer/roles/collectd/templates/ovs_stats.conf.j210
-rw-r--r--plugins/barometer/roles/collectd/vars/main.yml16
11 files changed, 337 insertions, 0 deletions
diff --git a/plugins/barometer/plugin.desc b/plugins/barometer/plugin.desc
new file mode 100644
index 00000000..896d6f27
--- /dev/null
+++ b/plugins/barometer/plugin.desc
@@ -0,0 +1,52 @@
+# Plugin for Barometer service for Compass4nfv.
+# Barometer is a configuration of Collectd for
+# collecting metrics useful for NFV, and sending them
+# to Openstack gnocchi service, and connecting with aodh
+# to set alarms on those metrics.
+# More details can be found in the development document.
+# ##############################################################
+---
+plugin:
+ # plugin name,it is also as the switch to enable/disable plugin in scenario
+ # files
+ name: barometer
+
+ description: collect metrics and set alarms on compute nodes
+
+ maintainers:
+ - john.hinman@intel.com
+
+ # host os type: ubuntu/centos
+ os_version: ubuntu
+
+ # true: this plugin is deployed separately on a new node
+ # false: this plugin is deployed on controller or compute node
+ independent_hosts: false
+
+ # artifact: package download url for this plugin
+ artifacts:
+ url:
+
+ # orchestration
+ # A plugin can have mutiple components, each component may need to be
+ # installed on different inventory or have its own configuration.
+ # due to Compass4nfv currently only supports ansible, so each component
+ # of the installation and configuration script need to be use ansible.
+ # cm : congfiguration management tool : only ansible support
+ # role: each component corresponds to ansible script that locates in the same
+ # directory as plugin.desc.
+ # phrase: pre_openstack -- the component is installed after the OS
+ # provisioning, before the OpenStack deployment.
+ # phrase: post_openstack -- the component is installed before the OpenStack
+ # deployment.
+ # inventory: if the phrase is pre_openstack, inventory can be controller and
+ # compute. if the phrase is post_openstack, inventory can be get from the file
+ # openstack-ansible.inventory
+ orchestration:
+ cm: ansible
+ roles:
+ - role: collectd
+ phrase: post_openstack
+ inventory:
+ - compute
+
diff --git a/plugins/barometer/roles/collectd/tasks/collectd.yml b/plugins/barometer/roles/collectd/tasks/collectd.yml
new file mode 100644
index 00000000..5a2c3710
--- /dev/null
+++ b/plugins/barometer/roles/collectd/tasks/collectd.yml
@@ -0,0 +1,126 @@
+# #############################################################################
+# Copyright (c) 2017 Intel Corp.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+# #############################################################################
+---
+- name: install dependencies
+ apt:
+ name: "{{ item }}"
+ state: present
+ with_items:
+ - libltdl7
+ - init-system-helpers
+ - mcelog
+ - rrdtool
+ - libc6
+ - librrd4
+ - libvirt-bin
+ - libvirt-dev
+ - gcc
+ - git
+ - python3-pip
+
+- name: create workspace directory
+ file:
+ path: "{{ workspace }}"
+ state: directory
+ mode: 0755
+
+- name: download, unarchive and install collectd packages
+ shell: |
+ cd "{{ workspace }}";
+ wget "{{ artifacts_collectd_pkg }}";
+ su -s /bin/sh -c \
+ "tar xzf collectd_pkg.tar.gz -C {{ workspace }} --strip-components 1";
+ apt-get install ./libcollectd*.deb -y;
+ apt-get install ./collectd*.deb -y
+
+- name: make stack dir
+ file:
+ path: /opt/stack
+ state: directory
+ mode: 0755
+
+- name: check plugin dir exists
+ stat:
+ path: /opt/stack/collectd-ceilometer-plugin
+ register: stat_result
+
+- name: fetch collectd plugin source code
+ shell: |
+ cd /opt/stack;
+ git clone https://github.com/openstack/collectd-ceilometer-plugin.git;
+ cd /opt/stack/collectd-ceilometer-plugin;
+ git checkout stable/ocata
+ when: stat_result.stat.exists == False
+
+- name: configure logfile conf
+ template:
+ src: logfile.conf.j2
+ dest: /etc/collectd/collectd.conf.d/logfile.conf
+
+- name: configure collectd-aodh plugin conf
+ template:
+ src: collectd-aodh.conf.j2
+ dest: /etc/collectd/collectd.conf.d/collectd-aodh-plugin.conf
+
+- name: configure collectd-gnocchi plugin conf
+ template:
+ src: collectd-gnocchi.conf.j2
+ dest: /etc/collectd/collectd.conf.d/collectd-gnocchi-plugin.conf
+
+- name: configure hugepages conf
+ template:
+ src: hugepages.conf.j2
+ dest: /etc/collectd/collectd.conf.d/hugepages.conf
+
+- name: configure mcelog conf
+ template:
+ src: mcelog.conf.j2
+ dest: /etc/collectd/collectd.conf.d/mcelog.conf
+
+- name: configure ovs_stats conf
+ template:
+ src: ovs_stats.conf.j2
+ dest: /etc/collectd/collectd.conf.d/ovs_stats.conf
+
+- name: configure ovs_events conf
+ template:
+ src: ovs_events.conf.j2
+ dest: /etc/collectd/collectd.conf.d/ovs_events.conf
+
+- name: configure collectd conf
+ lineinfile:
+ dest: /etc/collectd/collectd.conf
+ regexp: '{{ item.regexp }}'
+ line: '{{ item.line }}'
+ with_items:
+ - regexp: '#LoadPlugin numa'
+ line: 'LoadPlugin numa'
+ - regexp: '#LoadPlugin virt'
+ line: 'LoadPlugin virt'
+ - regexp: '#LoadPlugin cpufreq'
+ line: 'LoadPlugin cpufreq'
+ - regexp: '#LoadPlugin cpusleep'
+ line: 'LoadPlugin cpusleep'
+
+- name: configure mcelog conf
+ lineinfile:
+ dest: /etc/mcelog/mcelog.conf
+ regexp: '{{ item.regexp }}'
+ line: '{{ item.line }}'
+ with_items:
+ - regexp: '#socket-path = /var/run/mcelog-client'
+ line: 'socket-path = /var/run/mcelog-client'
+
+- name: install gnocchiclient, aodhclient, set ovs manager, restart mcelog, collectd
+ shell: |
+ pip install gnocchiclient;
+ pip install aodhclient;
+ ovs-vsctl set-manager ptcp:6640:127.0.0.1;
+ systemctl restart mcelog;
+ systemctl restart collectd
diff --git a/plugins/barometer/roles/collectd/tasks/main.yml b/plugins/barometer/roles/collectd/tasks/main.yml
new file mode 100644
index 00000000..d33823ed
--- /dev/null
+++ b/plugins/barometer/roles/collectd/tasks/main.yml
@@ -0,0 +1,13 @@
+# #############################################################################
+# Copyright (c) 2017 Intel Corp.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+# #############################################################################
+---
+- include_vars: "{{ openstack_passwd_file }}"
+
+- include: collectd.yml
+ when: barometer is defined and barometer == "Enable"
diff --git a/plugins/barometer/roles/collectd/templates/collectd-aodh.conf.j2 b/plugins/barometer/roles/collectd/templates/collectd-aodh.conf.j2
new file mode 100644
index 00000000..301ba25a
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/collectd-aodh.conf.j2
@@ -0,0 +1,37 @@
+<LoadPlugin python>
+ Globals true
+</LoadPlugin>
+
+<Plugin python>
+ ModulePath "/opt/stack/collectd-ceilometer-plugin"
+ LogTraces true
+ Interactive false
+ Import "collectd_ceilometer.aodh.plugin"
+
+ <Module "collectd_ceilometer.aodh.plugin">
+
+ # Verbosity True|False
+ VERBOSE False
+
+ # Service endpoint addresses
+ OS_AUTH_URL "http://{{ internal_vip.ip }}:35357/v3/"
+
+ # Plugin address
+ #CEILOMETER_URL_TYPE "internalURL"
+
+ # Plugin timeout in ms
+ #CEILOMETER_TIMEOUT "1000"
+
+ # # Plugin user creds
+ OS_USERNAME "ceilometer"
+ OS_PASSWORD "{{ ceilometer_service_password }}"
+ OS_TENANT_NAME "service"
+
+ # Libvirt meter enabled
+ LIBVIRT_METER_ENABLED False
+
+ <ALARM_SEVERITIES>
+ </ALARM_SEVERITIES>
+ </Module>
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/collectd-gnocchi.conf.j2 b/plugins/barometer/roles/collectd/templates/collectd-gnocchi.conf.j2
new file mode 100644
index 00000000..b54e9d5a
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/collectd-gnocchi.conf.j2
@@ -0,0 +1,40 @@
+<LoadPlugin python>
+ Globals true
+</LoadPlugin>
+
+<Plugin python>
+ ModulePath "/opt/stack/collectd-ceilometer-plugin"
+ LogTraces true
+ Interactive false
+ Import "collectd_ceilometer.gnocchi.plugin"
+
+ <Module "collectd_ceilometer.gnocchi.plugin">
+
+ # Verbosity True|False
+ VERBOSE False
+
+ # Batch size
+ BATCH_SIZE "1"
+
+ # Service endpoint addresses
+ OS_AUTH_URL "http://{{ internal_vip.ip }}:35357/v3/"
+
+ # Plugin address
+ CEILOMETER_URL_TYPE "internalURL"
+
+ # Plugin timeout in ms
+ CEILOMETER_TIMEOUT "1000"
+
+ # # Plugin user creds
+ OS_USERNAME "ceilometer"
+ OS_PASSWORD "{{ ceilometer_service_password }}"
+ OS_TENANT_NAME "service"
+
+ # Libvirt meter enabled
+ LIBVIRT_METER_ENABLED False
+
+ <UNITS>
+ </UNITS>
+ </Module>
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/hugepages.conf.j2 b/plugins/barometer/roles/collectd/templates/hugepages.conf.j2
new file mode 100644
index 00000000..cefcc25d
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/hugepages.conf.j2
@@ -0,0 +1,10 @@
+LoadPlugin hugepages
+
+<Plugin hugepages>
+ ReportPerNodeHP true
+ ReportRootHP true
+ ValuesPages true
+ ValuesBytes false
+ ValuesPercentage false
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/logfile.conf.j2 b/plugins/barometer/roles/collectd/templates/logfile.conf.j2
new file mode 100644
index 00000000..77d86a99
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/logfile.conf.j2
@@ -0,0 +1,13 @@
+LoadPlugin "logfile"
+
+<Plugin "logfile">
+ LogLevel "info"
+ File "/var/log/collectd.log"
+ Timestamp true
+</Plugin>
+
+# Decrease syslog verbosity, to avoid duplicate logging
+<Plugin "syslog">
+ LogLevel "err"
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/mcelog.conf.j2 b/plugins/barometer/roles/collectd/templates/mcelog.conf.j2
new file mode 100644
index 00000000..3a043ec8
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/mcelog.conf.j2
@@ -0,0 +1,9 @@
+LoadPlugin mcelog
+
+<Plugin mcelog>
+ <Memory>
+ McelogClientSocket "/var/run/mcelog-client"
+ PersistentNotification false
+ </Memory>
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/ovs_events.conf.j2 b/plugins/barometer/roles/collectd/templates/ovs_events.conf.j2
new file mode 100644
index 00000000..d72e2004
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/ovs_events.conf.j2
@@ -0,0 +1,11 @@
+<LoadPlugin ovs_events>
+ Interval 1
+</LoadPlugin>
+<Plugin "ovs_events">
+ Port 6640
+ Socket "/var/run/openvswitch/db.sock"
+ Interfaces "br0" "veth0"
+ SendNotification false
+ DispatchValues true
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/templates/ovs_stats.conf.j2 b/plugins/barometer/roles/collectd/templates/ovs_stats.conf.j2
new file mode 100644
index 00000000..945c4e92
--- /dev/null
+++ b/plugins/barometer/roles/collectd/templates/ovs_stats.conf.j2
@@ -0,0 +1,10 @@
+<LoadPlugin ovs_stats>
+ Interval 1
+</LoadPlugin>
+<Plugin ovs_stats>
+ Port "6640"
+ Address "127.0.0.1"
+ Socket "/var/run/openvswitch/db.sock"
+ Bridges "br0" "br_ext"
+</Plugin>
+
diff --git a/plugins/barometer/roles/collectd/vars/main.yml b/plugins/barometer/roles/collectd/vars/main.yml
new file mode 100644
index 00000000..9fc0687d
--- /dev/null
+++ b/plugins/barometer/roles/collectd/vars/main.yml
@@ -0,0 +1,16 @@
+# #############################################################################
+# Copyright (c) 2017 Intel Corp.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+# #############################################################################
+---
+openstack_passwd_file: /etc/openstack_deploy/user_secrets.yml
+
+workspace: /tmp/plugin
+
+artifacts_collectd_pkg: http://artifacts.opnfv.org/compass4nfv/package/master/collectd_pkg.tar.gz
+
+collectd_ver: 5.8.0.23.g576797d-1~xenial_amd64.deb