Ceilometer/blueprints/pollster-swift
< Ceilometer | blueprints
pollster-swift blueprint
Use Cases
- Provider wants to retrieve data about swift usage to bill his customers
- Customer wants to monitor his usage of swift
Proposed implementation
The following is a first list of meters that needs to be collected in order to allow billing systems to perform their tasks on swift. This list must be expandable over time and each administrator must have the possibility to enable or disable each meter based on his local needs
Meter name | Priority | Resource ID | Volume unit | Payload | Type | Note | |
o1 | obj_volume | must | swift account id | Megabytes | Cumulative | total object volume stored | |
o2 | obj_in | must | swift account id | Kbytes | Cumulative | volume of data received for this account (int and ext) | |
o3 | obj_out | must | swift account id | Kbytes | Delta | volume of data sent for this account (int and ext) | |
o4 | obj_in_int | may | swift account id | Kbytes | Delta | volume of data received from internal network source | |
o5 | obj_in_ext | may | swift account id | Kbytes | Delta | volume of data received from external network source | |
o6 | obj_out_int | may | swift account id | Kbytes | Delta | volume of data sent to internal network dest | |
o7 | obj_out_ext | may | swift account id | Kbytes | Delta | volume of data sent to external network destinations | |
o8 | obj_number | must | swift account id | container | Gauge | Number of objects stored for a container. The resource_id is the container id. | |
o9 | obj_containers | must | swift account id | Number of containers | Gauge | ||
o10 | obj_requests | must | swift account id | type | Delta | Number of HTTP requests, type being the request type (GET/HEAD/PUT/POST…) |
The following counters must be implemented through polling of Swift:
obj_volume, obj_number, obj_containers, obj_requests, obj_in, obj_out
In addition, if we can distinguish between external and internal networks, it would be nice to also have: obj_in_int, obj_in_ext, obj_out_int, obj_out_ext. I would suggest that we start this implementation by using a configuration file listing internal networks, which by default should list A, B and C private network class (RFC 1918)