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 Step Process
Metering Collect usage data
Rating Transform usage data into billable
items and calculate costs
Billing Create invoice, collect payment
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 :-(
8. Ceilometer Rises
● Developed in StackForge
○ Same process as OpenStack
● Minimal set of meters defined
● Targeting OpenStack core
○ incubation pending
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 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
16. 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)
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
27. 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