Roll your own, use CloudKitty, Ceilometer or another tool.

A recurring question for OpenStack operators is how to best follow the money. Specifically, what tools to use for chargeback, billing and whether the best strategy is to roll your own, use CloudKitty, Cielometer or another tool.

The question came up on the operator’s mailing list — full thread here — so we broadened the discussion by opening up an Etherpad for folks who had more to say.

Stay tuned tomorrow for a Q&A with Christophe Sauthier CEO of Objectif Libre about CloudKitty, OSF’s rating-as-a-service project. If you’re coming to the Vancouver Summit, you’ll want to check out these billing-related events.

Strategy: Using Ceilometer, OSF’s metering and data collection service

  • “We do not use events but audit data from Ceilometer.”
  • Ceilometer (now Panko) VM exists events coerced to look like jobs from an HPC batch system.”
  • OVH uses Ceilometer events/audit with a custom storage backend. “We store in MongoDB using the update operators of MongoDB ($inc, $max, …) to store only the final value and not all metrics/events.”
  • We use “the billing engine that’s part of the commercial software provided by Atomia. Using Ceilometer as of now, but they recently added support for Gnocchi which we’re going to use for our newer setups.”

Strategy: Roll your own

  • Catalyst Cloud wrote Distil which takes information from Ceilometer and creates aggregated samples more useful for billing. “An additional tool is triggered monthly to collect data from Distil and generate invoices in Odoo (potentially ERPNext in the future), which all the rating information comes from products in Odoo. A long-term goal is to move the invoicing logic into Distil itself as an automatic monthly (weekly, etc.) exporter into any external system like an ERP. The accounting system is module-based, so it should be easy enough to integrate with other systems. We’ve added a number of other pollsters to Ceilometer to collect various other items we want to bill, and we also have an flow traffic metering system which allows us to bill for different classes of network traffic.”
    They’ve also
    written an API for customers to be able to retrieve their invoices etc, example client is here: https://github.com/catalyst-cloud/catalystcloud-billing and for traffic billing: https://github.com/catalyst/openstack-sflow-traffic-billing
    Catalyst Cloud’s Feilong Wang, Lingxian Kong and Adrian Turjak will be talking about this in a session titled “Lessons learned from public cloud billing” at the Vancouver Summit.
  • Cancer Genome Collaboratory developed in-house an app that pulls data from the Openstack DBs to generate simple cost and usage visualizations: https://github.com/CancerCollaboratory/billing
  • DataCentred uses  homegrown (Rails-based) application, but one which periodically polled Ceilometer for utilization information and subsequently performed a bunch of sanity checks It was open-sourced for posterity here: https://github.com/seanhandley/stronghold This was used to generate billing information with integration into Salesforce. “
  • “We use a homegrown billing system that periodically samples utilization of billable resources. (We turned off Ceilometer a few years ago because we weren’t really
    using it and found that it caused us trouble.)”
  • A combination of cASO and some low-level libvirt fabric monitoring. “The showback accounting reports are generated with merging with other compute/storage usage across various systems (HTCondor, SLURM, etc…)”
  • “We are running a cloud based on openstack-ansible and now are trying to
    integrate CloudKitty for billing. Up until now we used a self-written Python script to query Ceilometer for needed data, but that got more tedious than we are willing to handle. We hope it gets much easier once CloudKitty is set up.”

Stay tuned for tomorrow’s interview with CloudKitty.