Doug Hellmann
                      aka doughellmann/dhellmann (twitter/irc)
                         doug.hellmann@dreamhost.com
                                         Nick Barcet
                                      aka nijaba (twitter/irc)
                            nick.barcet@canonical.com




Ceilometer
The OpenStack Metering Project



                          15 Oct 2012 @ ODS Grizzly
What About Billing?
â—Ź Billing has been left out of OpenStack core so far as it
  was not the primary problem and is not a trivial one...

â—Ź Yet almost every OpenStack deployment needs a way
  to track usage information
Billing: 3 Step Process

Metering   Collect usage data

Rating     Transform usage data into billable
           items and calculate costs

Billing    Create invoice, collect payment
Ceilometer is Metering


Usage data collection is the ONLY thing
common to all clouds
Uses for Metering
â—Ź Billing

â—Ź Auditing

â—Ź Capacity Planning
Problems to Solve
â—Ź Collecting per user/tenant usage data
  â—‹ For every resource
  â—‹ From every OpenStack component
  â—‹ In a single place


â—Ź Retrieving usage data
  â—‹ From a single place


â—Ź Doing this with an open source project
  â—‹ Everyone did this in their own corner in the past :-(
Ceilometer Begins
â—Ź Started in May 2012
Ceilometer Rises
â—Ź Developed in StackForge
   â—‹   Same process as OpenStack

â—Ź Minimal set of meters defined

â—Ź Targeting OpenStack core
   â—‹   incubation pending
Design Requirements
â—Ź Scalable
  ○ …if your database is too
Design Requirements
â—Ź Scalable
  ○ …if your database is too
â—Ź Message signature
  â—‹ Non-repudiation built in
Design Requirements
â—Ź Scalable
  ○ …if your database is too
â—Ź Message signature
  â—‹ Non-repudiation built in
â—Ź Only one entry point to get data
Design Requirements
â—Ź Scalable
  ○ …if your database is too
â—Ź Message signature
  â—‹ Non-repudiation built in
â—Ź Only one entry point to get data
â—Ź Extensible, add your own:
  â—‹ Agent
  â—‹ Agent plugin
  â—‹ Storage engine
  â—‹ Meters
Design Requirements
â—Ź Scalable
  ○ …if your database is too
â—Ź Message signature
  â—‹ Non-repudiation built in
â—Ź Only one entry point to get data
â—Ź Extensible, add your own:
  â—‹ Agent
  â—‹ Agent plugin
  â—‹ Storage engine
  â—‹ Meters
â—Ź Use openstack-common components
Design Requirements
â—Ź Scalable
  ○ …if your database is too
â—Ź Message signature
  â—‹ Non-repudiation built in
â—Ź Only one entry point to get data
â—Ź Extensible, add your own:
  â—‹ Agent
  â—‹ Agent plugin
  â—‹ Storage engine
  â—‹ Meters
â—Ź Use openstack-common components
â—Ź Accept data from many sources
Data Triggers
Ceilometer inputs are generated three ways

User Action Creating, modifying, or deleting a
            resource
Audit        Regular audit events stating usage
             generated by the service
Polling      The ceilometer agent asks the service
             for data periodically
Meter Categories
Ceilometer handles 3 types of meters

Cumulative    Increasing over time (instance hours)
Gauge         Discrete items (floating IPs, image
              uploads) and fluctuating values (disk
              I/O)
Delta         Changing over time (bandwidth)
Simple REST API
Sum                              GET /v1/resources/(resource)/meters/(meter)/volume/sum



Maximum                          GET /v1/resources/(resource)/meters/(meter)/volume/max



Duration                         GET /v1/resources/(resource)/meters/(meter)/duration



Raw Events                       GET /v1/resources/(resource)/meters/(meter)




http://ceilometer.readthedocs.org/en/latest/api.html
Roadmap
         Folsom                        Grizzly                          H

â—Ź   Delivered last week      â—Ź   Incubated Project          â—Ź   Core Project
â—Ź   Collects base metering   â—Ź   User accessible API?       â—Ź   TBD
     â—‹ nova                  â—Ź   Integration example with
     â—‹ glance                    Horizon
     â—‹ cinder                â—Ź   New agents for other
     â—‹ quantum                   openstack components
â—Ź   Basic API access               â—‹ Swift
                                   â—‹ Heat?
                             â—Ź   New uses of collector?
                             â—Ź   SQLAlchemy storage
                                 driver
DreamHost Use Case
â—Ź New Public Cloud Service

â—Ź Existing Billing System

â—Ź Existing Users and Accounts
Configuring Ceilometer
â—Ź Measure exactly what we want to bill for

  â—‹ instance hours

  â—‹ block storage

  â—‹ image uploads

  â—‹ bandwidth
Customizing Ceilometer
â—Ź Custom Bandwidth Meter

  â—‹ No charge for traffic "inside" DreamHost

  â—‹ Don't expose infrastructure details to customers

  â—‹ Measure at the router, not the VIF
Consuming Meter Data
Questions?
http://launchpad.net/ceilometer
http://ceilometer.readthedocs.org

freenode: #openstack-metering
email: openstack-dev [ceilometer]

Doug Hellmann                                   Nick Barcet
aka doughellmann/dhellmann (twitter/irc)        aka nijaba (twitter/irc)
doug.hellmann@dreamhost.com                nick.barcet@canonical.com

Ceilometer presentation ODS Grizzly.pdf

  • 1.
    Doug Hellmann aka doughellmann/dhellmann (twitter/irc) doug.hellmann@dreamhost.com Nick Barcet aka nijaba (twitter/irc) nick.barcet@canonical.com Ceilometer The OpenStack Metering Project 15 Oct 2012 @ ODS Grizzly
  • 2.
    What About Billing? â—ŹBilling has been left out of OpenStack core so far as it was not the primary problem and is not a trivial one... â—Ź Yet almost every OpenStack deployment needs a way to track usage information
  • 3.
    Billing: 3 StepProcess Metering Collect usage data Rating Transform usage data into billable items and calculate costs Billing Create invoice, collect payment
  • 4.
    Ceilometer is Metering Usagedata collection is the ONLY thing common to all clouds
  • 5.
    Uses for Metering â—ŹBilling â—Ź Auditing â—Ź Capacity Planning
  • 6.
    Problems to Solve â—ŹCollecting per user/tenant usage data â—‹ For every resource â—‹ From every OpenStack component â—‹ In a single place â—Ź Retrieving usage data â—‹ From a single place â—Ź Doing this with an open source project â—‹ Everyone did this in their own corner in the past :-(
  • 7.
  • 8.
    Ceilometer Rises â—Ź Developedin StackForge â—‹ Same process as OpenStack â—Ź Minimal set of meters defined â—Ź Targeting OpenStack core â—‹ incubation pending
  • 9.
    Design Requirements ● Scalable ○ …if your database is too
  • 10.
    Design Requirements ● Scalable ○ …if your database is too ● Message signature ○ Non-repudiation built in
  • 11.
    Design Requirements ● Scalable ○ …if your database is too ● Message signature ○ Non-repudiation built in ● Only one entry point to get data
  • 12.
    Design Requirements ● Scalable ○ …if your database is too ● Message signature ○ Non-repudiation built in ● Only one entry point to get data ● Extensible, add your own: ○ Agent ○ Agent plugin ○ Storage engine ○ Meters
  • 13.
    Design Requirements ● Scalable ○ …if your database is too ● Message signature ○ Non-repudiation built in ● Only one entry point to get data ● Extensible, add your own: ○ Agent ○ Agent plugin ○ Storage engine ○ Meters ● Use openstack-common components
  • 14.
    Design Requirements ● Scalable ○ …if your database is too ● Message signature ○ Non-repudiation built in ● Only one entry point to get data ● Extensible, add your own: ○ Agent ○ Agent plugin ○ Storage engine ○ Meters ● Use openstack-common components ● Accept data from many sources
  • 15.
    Data Triggers Ceilometer inputsare generated three ways User Action Creating, modifying, or deleting a resource Audit Regular audit events stating usage generated by the service Polling The ceilometer agent asks the service for data periodically
  • 16.
    Meter Categories Ceilometer handles3 types of meters Cumulative Increasing over time (instance hours) Gauge Discrete items (floating IPs, image uploads) and fluctuating values (disk I/O) Delta Changing over time (bandwidth)
  • 23.
    Simple REST API Sum GET /v1/resources/(resource)/meters/(meter)/volume/sum Maximum GET /v1/resources/(resource)/meters/(meter)/volume/max Duration GET /v1/resources/(resource)/meters/(meter)/duration Raw Events GET /v1/resources/(resource)/meters/(meter) http://ceilometer.readthedocs.org/en/latest/api.html
  • 24.
    Roadmap Folsom Grizzly H â—Ź Delivered last week â—Ź Incubated Project â—Ź Core Project â—Ź Collects base metering â—Ź User accessible API? â—Ź TBD â—‹ nova â—Ź Integration example with â—‹ glance Horizon â—‹ cinder â—Ź New agents for other â—‹ quantum openstack components â—Ź Basic API access â—‹ Swift â—‹ Heat? â—Ź New uses of collector? â—Ź SQLAlchemy storage driver
  • 25.
    DreamHost Use Case â—ŹNew Public Cloud Service â—Ź Existing Billing System â—Ź Existing Users and Accounts
  • 26.
    Configuring Ceilometer â—Ź Measureexactly what we want to bill for â—‹ instance hours â—‹ block storage â—‹ image uploads â—‹ bandwidth
  • 27.
    Customizing Ceilometer â—Ź CustomBandwidth Meter â—‹ No charge for traffic "inside" DreamHost â—‹ Don't expose infrastructure details to customers â—‹ Measure at the router, not the VIF
  • 28.
  • 29.
    Questions? http://launchpad.net/ceilometer http://ceilometer.readthedocs.org freenode: #openstack-metering email: openstack-dev[ceilometer] Doug Hellmann Nick Barcet aka doughellmann/dhellmann (twitter/irc) aka nijaba (twitter/irc) doug.hellmann@dreamhost.com nick.barcet@canonical.com