Hardware Extension for Ceilometer

Ceilometer Introduction

Ceilometer is a monitoring tool for OpenStack cloud environments. In the next OpenStack release called Havana it will take part as a core component. However, Ceilometer is also available for the OpenStack releases Folsom and Grizzly. Currently Ceilometer offers only data of the OpenStack core components and the virtual machines of the cloud. For this reason the ICCLab decided to extend Ceilometer in a way that it is possible to collect data from hardware devices as well.

Ceilometer Extension – Concept

The collection of the data from the hardware devices should be independent and expandable. Therefore, a new Ceilometer agent with a modular structure is needed. We call this agent Hardware Agent. In the picture below the conceptual architecture is shown.

conceptual architecture

Conceptual Architecture Ceilometer Hardware Extension

As the Hardware Agent is part of Ceilometer it is installed nearly on every physical server. The Hardware Agent should be able to poll the data from various sources like IPMI, SMART or SNMP through Inspectors on different devices. This allows the Hardware Agent to get data from devices like switches or router.
It should be possible to deactivate each of these sources globally or per host. Which data will be extracted of the source should also be configurable globally or per host. The structured data is stored in Pollsters.
The Hardware Agent sends the collected data to the Ceilometer Event Bus which is in general a rabbit message queue. The central Ceilometer Collector takes the messages and stores it on a database. Through the Ceilometer API the data could be read by other systems like a billing and rating system or a graphical depiction.

Ceilometer Extension – Configuration Example

The configuration of the Hardware Agent allows the administrator to deactivate Pollsters and Inspectors globally or per device/host. The host settings take only place when no global settings are set.
To access the sources it might be necessary to set additional information like username or password. This configuration could be set globally or per host. If there is no host configuration the Hardware Agent takes the global configuration. If none of both configurations are set the inspector takes standard values to access the sources.

Configuration Sequence

Configuration Sequence of the Hardware Agent

These configurations could be set in /etc/ceilometer/hardware-agent.conf in this way:

disabled_hardware_pollsters=network
disabled_hardware_inspectors=ipmi
hardware_inspector_configurations = {“snmp” :
{“securityName”: “public”, “port”: 161}}

hardware_hosts={“10.0.0.1” :
{“disabled_pollsters”: [“cpu”],
“disabled_inspectors”: [“smart”],
“inspector_configurations”:
{“snmp” : {“port”: 163}}},
“10.0.0.2” :{…}}

Ceilometer Extension – Status and Prospect

With the programmed extension it is possible to get data of CPU (1,5 and 15 minutes usage in %), network (incoming/outcoming traffic in bytes, number of errors) storage(used/total space in bytes) and memory(used/total space in bytes) from any devices over SNMP. With new Inspectors it is imaginable to get more data of new sources like IPMI or SMART.
The base of the Ceilometer extension is currently being reviewed by other Ceilometer programmers (Review). If the review succeeds the extension take place in the Havana release of OpenStack in October 2013.

ICCLab Present on Ceilometer at 2nd Swiss OpenStack User Group Meeting

On the 19th February the 2nd Swiss OpenStack User Group Meeting took place. One of the presentations was held on Ceilometer by Toni and Lucas from the ICCLab. They talked about the history, the current and future features, the architecture and the requirements of ceilometer and explained how to use and extend it. You can take a look at the presentation here:

A video of the presentation is available here

Monitoring and OpenStack

Motivation for OpenStack monitoring

Many people think it maybe an unnecessary burden to set up a monitoring system for their infrastructure. However this, when it comes to an OpenStack installation should be considered indispensable and required. Knowing which resources are used by which VMs (and tenants) is crucial for cloud computing providers as well for their customers from billing and usage perspectives.

Customers want to be sure they get what they pay for at any time whereas the cloud provider needs the information for his billing and rating system. Furthermore this information can be useful when it comes to dimension and scalability questions.

Requirements for OpenStack monitoring

For monitoring an OpenStack environment there are different requirements:

  • An OpenStack monitoring tool must be able to monitor not only physical machines but also virtual machines or network devices.
  • The information of the monitored resources must be assignable to its tenant.
  • The metered values must be collected and correlated automatically
  • The monitoring tool must be as generic as possible to ensure support of any device.
  • The monitoring tool must offer an API.

 

architecture monitoring tool

Architecture Monitoring Tool

 

As-is state

There exist a lot of tools for network and server monitoring like Nagios, Zabbix and Munin. Most of them do not easily support OpenStack monitoring.

Zenoss is one of the few monitoring tools that supports an integration for OpenStack. It is possible to download and install an extension for OpenStack monitoring (https://github.com/zenoss/ZenPacks.zenoss.OpenStack). Unfortunately the latest version of this extension does only support the OpenStack API Version 1.1. The Folsom release ships with an OpenStack API version 2.0. The extension allows Zenoss to collect data only from a single tenant. That is not good enough because we need some more data to do rating and billing.

Another promising monitoring tool will be included in the upcoming OpenStack release Grizzly (March 2013) and is known as Ceilometer.  It will be part of the OpenStack core. Ceilometer makes it easy to monitor VMs belonging to a tenant. What Ceilometer cannot offer at the moment is physical device monitoring.

After an evaluation we decided to extend Ceilometer to monitor the physical devices as well. With this extension Ceilometer will be able to monitor the whole OpenStack environment of the ICCLab and provide the data for further systems like the billing module.