Docs » Integrations Guide » Integrations Reference » OpenStack

image0 OpenStack

Metadata associated with the OpenStack plugin for collectd can be found here. The relevant code for the plugin can be found here.

DESCRIPTION

This is the SignalFx OpenStack plugin. Follow these instructions to install the OpenStack plugin for collectd.

The openstack-collectd plugin collects metrics from OpenStack components by hitting various endpoints. This plugin covers the following components:

  • Nova (Compute)
  • Cinder (BlockStorge)
  • Neutron (Network)

Reference for OpenStack Monitoring.

FEATURES

Built-in dashboards

  • HYPERVISOR: Provides a high-level overview of metrics for an OpenStack hypervisor.

image1

image2

  • TENANT: Provides metrics from an OpenStack project/tenant.

image3

image4

  • NEUTRON: Provides metrics from an OpenStack Neutron component.

image5

  • INSTANCE: Provides metrics from an OpenStack compute instance.

image6

image7

REQUIREMENTS AND DEPENDENCIES

Deployment Host

Identify a host on which the SignalFx agent will run. This integration collects data from OpenStack remotely via APIs, and so those API endpoints must be visible to the host on which the agent runs. We do not recommend installing the agent directly on a compute instance because a compute instance/resource under one project cannot get stats about the resources under other projects. Also, a compute instance may go down due to lack of resources in the project.

Version information

Software Version
collectd 4.9 or later
python 2.6 or later
Python plugin for collectd (included with SignalFx collectd agent)

INSTALLATION

  1. Download collectd-openstack. Place the openstack_metrics.py, NovaMetrics.py, CinderMetrics.py, and NeutronMetrics.py files into the /usr/share/collectd/collectd-openstack directory on the deployment host you have identified (see Requirements and Dependencies).
  2. Copy the sample configuration file for this plugin to /etc/collectd/managed_config directory.
  3. Modify the sample configuration file as described in Configuration, below. To avoid duplicate reporting, configure each project only once.
  4. Install the Python requirements with sudo pip install -r requirements.txt.
  5. Restart collectd.

CONFIGURATION

Using the example configuration file 20-openstack.conf as a guide, provide configuration values for each project that this integration should monitor.

Configuration option Definition Example Value
ModulePath Path on disk where collectd can find this module. “/usr/share/collectd/collectd-openstack/”
AuthURL Keystone authentication URL/endpoint for the OpenStack cloud http://localhost/identity/v3
Username Username to authenticate with keystone identity “admin”
Password Password to authenticate with keystone identity “secret”
ProjectName Specify the name of project to be monitored “demo”
ProjectDomainId Specify the project domain “default”
UserDomainId Specify the user domain “default”
Dimension Space-separated key-value pair for a user-defined dimension dimension_name dimension_value
Interval Number of seconds between calls to the OpenStack API. 10

Note: The configured user must have access to the project.

Example configuration:

LoadPlugin python
<Plugin python>
  ModulePath "/usr/share/collectd/collectd-openstack/"

  Import openstack_metrics
  <Module openstack_metrics>
        AuthURL "http://localhost/identity/v3"
        Username "admin"
        Password "secret"
        ProjectName "demo"
        ProjectDomainId "default"
        UserDomainId "default"
  </Module>
</Plugin>

The plugin can be configured to collect metrics from multiple projects in the following manner.

LoadPlugin python

<Plugin python>
  ModulePath "/usr/share/collectd/collectd-openstack/"

  Import openstack_metrics
  <Module openstack_metrics>
        AuthURL "http://localhost/identity/v3"
        Username "admin"
        Password "secret"
        ProjectName "demo"
        ProjectDomainId "default"
        UserDomainId "default"
  </Module>

  <Module openstack_metrics>
        AuthURL "http://localhost/identity/v3"
        Username "admin"
        Password "secret"
        ProjectName "alt_demo"
        ProjectDomainId "default"
        UserDomainId "default"
  </Module>
</Plugin>

USAGE

Interpreting Built-in dashboards

  • HYPERVISOR:
  • Running VMs: Shows the number of VMs running in the hypervisor.

image8

  • Load Average: Shows the average CPU load on the hypervisor.

image9

  • Memory Usage: Shows the memory usage free vs used in the hypervisor.

image10

  • Disk Usage: Shows the disk usage free vs used in the hypervisor.

image11

  • CPUs and VCPUs: Shows the number of CPUs available and VCPUs used in the hypervisor.

image12

  • Physical CPUs: Shows the number of pysical cores on the host running hypervisor.

image13

  • Total Disk: Shows the total disk available on the host running hypervisor.

image14

  • Total Memory: Shows the total RAM available on the host running hypervisor.

image15

  • TENANT:
  • Used Instances: Shows the number of used instances in the tenant/project.

image16

  • Memory Utilization: Shows the percentage of utilized memory in the tenant/project.

image17

  • Disk Utilization: Shows the percentage of utilized disk space in the tenant/project.

image18

  • Instances Available vs Used: Shows the number of available and used instances in the tenant/project.

image19

  • Memory Usage: Shows the overall memory available and used in the tenant/project.

image20

  • Disk Usage: Shows the overall disk space available and used in the tenant/project.

image21

  • Volumes Available vs Used: Shows the maximum number of block storage volumes available and used in the tenant/project.

image22

  • VCPUs Available vs Used: Shows the maximum number of virtual CPUs available and used in the tenant/project.

image23

  • Top Instances by CPU %: Shows the top five instances by CPU usage percentage in the tenant/project.

image24

  • Top Instances by Memoery Used: Shows the top five instances by memory usage in the tenant/project.

image25

  • Top Instances by VCPUs: Shows the top five instances by virtual CPUs used in the tenant/project.

image26

  • NEUTRON:
  • Networks: Shows the total number of networks created in all projects.

image27

  • Routers: Shows the total number of routers created in all projects.

image28

  • Subnets: Shows the total number of subnets created in all projects.

image29

  • Flaoting IPs Available vs Used: Shows the maximum number of floating IPs available and used in all projects.

image30

  • Security Groups Available vs Used: Shows the maximum number of security groups available and used in all projects.

image31

  • INSTANCE:
  • VCPUs: Shows the number of virtual CPUs allocated to the instance.

image32

  • CPU Used %: Shows the current percentage of CPU usage of an instance.

image33

  • CPU %: Shows the percentage of instance CPU usage over the time.

image34

  • Memory: Shows the memory usage of the instance.

image35

  • Total Bytes Sent/Received: Shows the number of bytes sent and received over the network.

image36

  • Received vs Transmitted Packers/sec: Shows the number of network packets sent and received per second.

image37

  • Virtual Disk Read and Write Requests: Shows the number of virtual disk read and write requests.

image38

  • Size of VDS Reads and Writes: Shows the size of virtual disk reads and writes.

image39

A few other details:

  • plugin is always set to openstack
  • plugin_instance will contain the project id and name of the project given in the configuration

METRICS

Metrics about a hypervisor, tenant and instances are collected by default. Note, that SignalFx does not support histogram and summary metric types (hence, metrics of these types will be skipped if provided in the configuration). See usage for details.

Metric naming

The format of default metric names reported by the plugin is <metric type>.openstack.<component>.<name of metric>.

Below is a list of all metrics.

Metric Name Brief Type
openstack.cinder.limit.maxTotalVolumeGigabytes Total available block storage at cinder component for project gauge
openstack.cinder.limit.maxTotalVolumes Maximum volume resources available at cinder component for project gauge
openstack.cinder.limit.totalGigabytesUsed Total block storage used at cinder component for project gauge
openstack.cinder.limit.totalVolumesUsed Volume resources used at cinder component for project gauge
openstack.neutron.floatingip.count Overall floating IPs used across projects gauge
openstack.neutron.network.count Overall Network resources used across projects gauge
openstack.neutron.router.count Overall router resources used across projects gauge
openstack.neutron.securitygroup.count Overall securitygroup resources used across projects gauge
openstack.neutron.subnet.count Overall subnet resources used in all projects gauge
openstack.nova.hypervisor.disk_available_least Minimum free disk space available in Gigabyte gauge
openstack.nova.hypervisor.free_disk_gb Maximum free disk space available in Gigabyte gauge
openstack.nova.hypervisor.load_average Average CPU load on the hypervisor gauge
openstack.nova.hypervisor.local_gb Maximum available local disk space in Gigabyte gauge
openstack.nova.hypervisor.local_gb_used Total disk space used in Gigabyte gauge
openstack.nova.hypervisor.memory_mb Maximum available memory in MB at hypervisor gauge
openstack.nova.hypervisor.memory_mb_used Total memory used in MB at hypervisor gauge
openstack.nova.hypervisor.running_vms Total running VMs at hypervisor gauge
openstack.nova.hypervisor.vcpus Available physical cores at hypervisor gauge
openstack.nova.hypervisor.vcpus_used Used virtual CPUs used gauge
openstack.nova.limit.maxSecurityGroups Maximum available security groups for project gauge
openstack.nova.limit.maxTotalCores Maximum available VCPUs in project gauge
openstack.nova.limit.maxTotalFloatingIps Maximum available floating IPs for project gauge
openstack.nova.limit.maxTotalInstances Maximum available instances in project gauge
openstack.nova.limit.maxTotalRAMSize Maximum available RAM size for project gauge
openstack.nova.limit.totalCoresUsed Total cores used in the project gauge
openstack.nova.limit.totalInstancesUsed Total instances used in the project gauge
openstack.nova.limit.totalRAMUsed Total RAM used in the project gauge
openstack.nova.server.cpu_time Virtual CPU time consumed in nanoseconds counter
openstack.nova.server.memory-actual Actual memory used at an instance gauge
openstack.nova.server.memory-rss Memory used not including disk pages at an instance gauge
openstack.nova.server.memory Memory provisioned at an instance gauge
openstack.nova.server.rx Size of network packet received in bytes counter
openstack.nova.server.rx_packets Received packets at an instance counter
openstack.nova.server.tx Size of network packet transmitted in bytes counter
openstack.nova.server.tx_packets Transmitted packets at an instance counter
openstack.nova.server.vda_read Size of virtual disk read requests in bytes gauge
openstack.nova.server.vda_read_req Virtual disk read requests from an instance gauge
openstack.nova.server.vda_write Size of virtual disk write requests in bytes gauge
openstack.nova.server.vda_write_req Virtual disk write requests from an instance gauge

openstack.cinder.limit.maxTotalVolumeGigabytes

gauge

Total available block storage at cinder component for project

openstack.cinder.limit.maxTotalVolumes

gauge

Maximum volume resources available at cinder component for project

openstack.cinder.limit.totalGigabytesUsed

gauge

Total block storage used at cinder component for project

openstack.cinder.limit.totalVolumesUsed

gauge

Volume resources used at cinder component for project

openstack.neutron.floatingip.count

gauge

Overall floating IPs used across projects

openstack.neutron.network.count

gauge

Overall Network resources used across projects

openstack.neutron.router.count

gauge

Overall router resources used across projects

openstack.neutron.securitygroup.count

gauge

Overall securitygroup resources used across projects

openstack.neutron.subnet.count

gauge

Overall subnet resources used in all projects

openstack.nova.hypervisor.disk_available_least

gauge

Minimum free disk space available in Gigabyte

openstack.nova.hypervisor.free_disk_gb

gauge

Maximum free disk space available in Gigabyte

openstack.nova.hypervisor.load_average

gauge

Average CPU load on the hypervisor

openstack.nova.hypervisor.local_gb

gauge

Maximum available local disk space in Gigabyte

openstack.nova.hypervisor.local_gb_used

gauge

Total disk space used in Gigabyte

openstack.nova.hypervisor.memory_mb

gauge

Maximum available memory in MB at hypervisor

openstack.nova.hypervisor.memory_mb_used

gauge

Total memory used in MB at hypervisor

openstack.nova.hypervisor.running_vms

gauge

Total running VMs at hypervisor

openstack.nova.hypervisor.vcpus

gauge

Available physical cores at hypervisor

openstack.nova.hypervisor.vcpus_used

gauge

Used virtual CPUs used

openstack.nova.limit.maxSecurityGroups

gauge

Maximum available security groups for project

openstack.nova.limit.maxTotalCores

gauge

Maximum available VCPUs in project

openstack.nova.limit.maxTotalFloatingIps

gauge

Maximum available floating IPs for project

openstack.nova.limit.maxTotalInstances

gauge

Maximum available instances in project

openstack.nova.limit.maxTotalRAMSize

gauge

Maximum available RAM size for project

openstack.nova.limit.totalCoresUsed

gauge

Total cores used in the project

openstack.nova.limit.totalInstancesUsed

gauge

Total instances used in the project

openstack.nova.limit.totalRAMUsed

gauge

Total RAM used in the project

openstack.nova.server.cpu_time

counter

Virtual CPU time consumed in nanoseconds

openstack.nova.server.memory-actual

gauge

Actual memory used at an instance

openstack.nova.server.memory-rss

gauge

Memory used not including disk pages at an instance

openstack.nova.server.memory

gauge

Memory provisioned at an instance

openstack.nova.server.rx

counter

Size of network packet received in bytes

openstack.nova.server.rx_packets

counter

Received packets at an instance

openstack.nova.server.tx

counter

Size of network packet transmitted in bytes

openstack.nova.server.tx_packets

counter

Transmitted packets at an instance

openstack.nova.server.vda_read

gauge

Size of virtual disk read requests in bytes

openstack.nova.server.vda_read_req

gauge

Virtual disk read requests from an instance

openstack.nova.server.vda_write

gauge

Size of virtual disk write requests in bytes

openstack.nova.server.vda_write_req

gauge

Virtual disk write requests from an instance