.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV, Intel Corporation and others.
==============================
collectd VES plugin User Guide
==============================
The Barometer repository contains a python based write plugin for VES.
The plugin currently supports pushing platform relevant metrics through the
additional measurements field for VES.
**Please note**: Hardcoded configuration values will be modified so that they
are configurable through the configuration file.
Installation Instructions:
--------------------------
1. Clone this repo
2. Install collectd
.. code:: bash
$ sudo apt-get install collectd
3. Modify the collectd configuration script: `/etc/collectd/collectd.conf`
.. code:: bash
Globals true
ModulePath "/path/to/your/python/modules"
LogTraces true
Interactive false
Import "ves_plugin"
# VES plugin configuration (see next section below)
where "/path/to/your/python/modules" is the path to where you cloned this repo
VES python plugin configuration description:
--------------------------------------------
**Note** Details of the Vendor Event Listener REST service
REST resources are defined with respect to a ServerRoot:
.. code:: bash
ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath}
REST resources are of the form:
.. code:: bash
{ServerRoot}/eventListener/v{apiVersion}`
{ServerRoot}/eventListener/v{apiVersion}/{topicName}`
{ServerRoot}/eventListener/v{apiVersion}/eventBatch`
**Domain** *"host"*
VES domain name. It can be IP address or hostname of VES collector
(default: `127.0.0.1`)
**Port** *port*
VES port (default: `30000`)
**Path** *"path"*
Used as the "optionalRoutingPath" element in the REST path (default: `empty`)
**Topic** *"path"*
Used as the "topicName" element in the REST path (default: `empty`)
**UseHttps** *true|false*
Allow plugin to use HTTPS instead of HTTP (default: `false`)
**Username** *"username"*
VES collector user name (default: `empty`)
**Password** *"passwd"*
VES collector password (default: `empty`)
**FunctionalRole** *"role"*
Used as the 'functionalRole' field of 'commonEventHeader' event (default:
`Collectd VES Agent`)
**GuestRunning** *true|false*
This option is used if the collectd is running on a guest machine, e.g this
option should be set to `true` in this case. Defaults to `false`.
**SendEventInterval** *interval*
This configuration option controls how often (sec) collectd data is sent to
Vendor Event Listener (default: `20`)
**ApiVersion** *version*
Used as the "apiVersion" element in the REST path (default: `1`)
Other collectd.conf configurations
----------------------------------
Please ensure that FQDNLookup is set to false
.. code:: bash
FQDNLookup false
Please ensure that the virt plugin is enabled and configured as follows. This configuration
is is required only on a host side ('GuestRunning' = false).
.. code:: bash
LoadPlugin virt
Connection "qemu:///system"
RefreshInterval 60
HostnameFormat uuid
Please ensure that the cpu plugin is enabled and configured as follows
.. code:: bash
LoadPlugin cpu
ReportByCpu false
ValuesPercentage true
**Note**: The `ReportByCpu` option should be set to `true` (default) if VES pugin
is running on guest machine ('GuestRunning' = true).
Please ensure that the aggregation plugin is enabled and configured as follows
(required if 'GuestRunning' = true)
.. code:: bash
LoadPlugin aggregation
Plugin "cpu"
Type "percent"
GroupBy "Host"
GroupBy "TypeInstance"
SetPlugin "cpu-aggregation"
CalculateAverage true
If plugin is running on a guest side, it is important to enable uuid plugin
too. In this case the hostname in event message will be represented as UUID
instead of system host name.
.. code:: bash
LoadPlugin uuid
If custom UUID needs to be provided, the following configuration is required in collectd.conf
file:
.. code:: bash
UUIDFile "/etc/uuid"
Where "/etc/uuid" is a file containing custom UUID.
Please also ensure that the following plugins are enabled:
.. code:: bash
LoadPlugin disk
LoadPlugin interface
LoadPlugin memory
VES plugin notification example
-------------------------------
A good example of collectD notification is monitoring of CPU load on a host or guest using
'threshold' plugin. The following configuration will setup VES plugin to send 'Fault'
event every time a CPU idle value is out of range (e.g.: WARNING: CPU-IDLE < 50%, CRITICAL:
CPU-IDLE < 30%) and send 'Fault' NORMAL event if CPU idle value is back to normal.
.. code:: bash
LoadPlugin threshold
WarningMin 50.0
WarningMax 100.0
FailureMin 30.0
FailureMax 100.0
Instance "idle"
Hits 1
More detailed information on how to configure collectD thresholds(memory, cpu
etc.) can be found here at
https://collectd.org/documentation/manpages/collectd-threshold.5.shtml