Jump to: navigation, search

Difference between revisions of "Ceilometer/blueprints/pollster-swift"

 
Line 19: Line 19:
 
|  '''Payload'''  
 
|  '''Payload'''  
 
|  '''Type'''  
 
|  '''Type'''  
|  '''Note'''
 
 
|-
 
|-
 
|  o1  
 
|  o1  
obj_volume
+
storage.objects
 
|  must  
 
|  must  
 
|  swift account id  
 
|  swift account id  
Megabytes
+
bytes
 
|   
 
|   
Cumulative
+
Gauge
|  total object volume stored
 
 
|-
 
|-
 
|  o2  
 
|  o2  
obj_in
+
storage.objects.size
 
|  must  
 
|  must  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
bytes
 
|   
 
|   
Cumulative
+
Gauge
|  volume of data received for this account (int and ext)
 
 
|-
 
|-
 
|  o3  
 
|  o3  
obj_out
+
storage.objects.containers
 
|  must  
 
|  must  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
number of containers
 +
|  Number of containers
 +
|  Gauge
 +
|-
 +
|  o4
 +
|  storage.objects
 +
|  may
 +
|  container name
 +
 +
|  container
 +
|  Gauge
 +
|-
 +
|  o5
 +
|  storage.objects.size
 +
|  may
 +
|  container name
 +
 +
|  container
 +
|  Gauge
 +
|-
 +
|  o6
 +
|  storage.objects.upload.internal
 +
|  may
 +
|  swift account id
 +
|  number of req
 
|   
 
|   
 
|  Delta  
 
|  Delta  
|  volume of data sent for this account (int and ext)
 
 
|-
 
|-
o4
+
o7
obj_in_int
+
storage.objects.download.internal
 +
|  may
 +
|  swift account id
 +
|  number of req
 +
 +
|  Delta
 +
|-
 +
|  o8
 +
|  storage.objects.update.internal
 +
|  may
 +
|  swift account id
 +
|  number of req
 +
 +
|  Delta
 +
|-
 +
|  o9
 +
|  storage.objects.delete.internal
 +
|  may
 +
|  swift account id
 +
|  number of req
 +
 +
|  Delta
 +
|-
 +
|  o10
 +
|  storage.objects.upload.size.internal
 +
|  may
 +
|  swift account id
 +
|  bytes
 +
 +
|  Delta
 +
|-
 +
|  o11
 +
|  storage.objects.download.size.internal
 +
|  may
 +
|  swift account id
 +
|  bytes
 +
 +
|  Delta
 +
|-
 +
|  o12
 +
|  storage.objects.update.size.internal
 +
|  may
 +
|  swift account id
 +
|  bytes
 +
 +
|  Delta
 +
|-
 +
|  o13
 +
|  storage.objects.delete.size.internal
 +
|  may
 +
|  swift account id
 +
|  bytes
 +
 +
|  Delta
 +
|-
 +
|  o14
 +
|  storage.objects.upload.external
 
|  may  
 
|  may  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
number of req
 
|   
 
|   
 
|  Delta  
 
|  Delta  
|  volume of data received from internal network source
 
 
|-
 
|-
o5
+
o15
obj_in_ext
+
storage.objects.download.external
 
|  may  
 
|  may  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
number of req
 
|   
 
|   
 
|  Delta  
 
|  Delta  
|  volume of data received from external network source
 
 
|-
 
|-
o6
+
o16
obj_out_int
+
storage.objects.update.external
 
|  may  
 
|  may  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
number of req
 
|   
 
|   
 
|  Delta  
 
|  Delta  
|  volume of data sent to internal network dest
 
 
|-
 
|-
o7
+
o17
obj_out_ext
+
storage.objects.delete.external
 
|  may  
 
|  may  
 
|  swift account id  
 
|  swift account id  
Kbytes
+
number of req
 
|   
 
|   
 
|  Delta  
 
|  Delta  
|  volume of data sent to external network destinations
 
 
|-
 
|-
o8
+
o18
obj_number
+
storage.objects.upload.size.external
must
+
may
 
|  swift account id  
 
|  swift account id  
 +
|  bytes
 
|   
 
|   
container
+
Delta
|  Gauge
 
|  Number of objects stored for a container. The resource_id is the container id.
 
 
|-
 
|-
o9
+
o19
obj_containers
+
storage.objects.download.size.external
must
+
may
 
|  swift account id  
 
|  swift account id  
 +
|  bytes
 
|   
 
|   
Number of containers
+
Delta
Gauge
+
|-
 +
|  o20
 +
|  storage.objects.update.size.external
 +
|  may
 +
|  swift account id
 +
bytes
 
|   
 
|   
 +
|  Delta
 
|-
 
|-
o10
+
o21
obj_requests
+
storage.objects.delete.size.external
must
+
may
|   swift account id  
+
| swift account id  
|  
+
| bytes
type
+
|   
 
|  Delta  
 
|  Delta  
|  Number of HTTP requests, type being the request type (GET/HEAD/PUT/POST…)
 
 
|}
 
|}
  
The following counters must be implemented through polling of Swift:
+
The counters o1 to o5 must be implemented through polling of Swift.
obj_volume, obj_number, obj_containers, obj_requests, obj_in, obj_out
+
 
 +
The counters o6 to o21 should be implemented via a Swift middleware counting requests and their size and publishing counters regularly.
  
In addition, if we can distinguish between external and internal networks, it would be nice to also have:
+
To distinguish network, it is suggested 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).
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)
 

Revision as of 11:43, 22 November 2012

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
o1 storage.objects must swift account id bytes Gauge
o2 storage.objects.size must swift account id bytes Gauge
o3 storage.objects.containers must swift account id number of containers Number of containers Gauge
o4 storage.objects may container name container Gauge
o5 storage.objects.size may container name container Gauge
o6 storage.objects.upload.internal may swift account id number of req Delta
o7 storage.objects.download.internal may swift account id number of req Delta
o8 storage.objects.update.internal may swift account id number of req Delta
o9 storage.objects.delete.internal may swift account id number of req Delta
o10 storage.objects.upload.size.internal may swift account id bytes Delta
o11 storage.objects.download.size.internal may swift account id bytes Delta
o12 storage.objects.update.size.internal may swift account id bytes Delta
o13 storage.objects.delete.size.internal may swift account id bytes Delta
o14 storage.objects.upload.external may swift account id number of req Delta
o15 storage.objects.download.external may swift account id number of req Delta
o16 storage.objects.update.external may swift account id number of req Delta
o17 storage.objects.delete.external may swift account id number of req Delta
o18 storage.objects.upload.size.external may swift account id bytes Delta
o19 storage.objects.download.size.external may swift account id bytes Delta
o20 storage.objects.update.size.external may swift account id bytes Delta
o21 storage.objects.delete.size.external may swift account id bytes Delta

The counters o1 to o5 must be implemented through polling of Swift.

The counters o6 to o21 should be implemented via a Swift middleware counting requests and their size and publishing counters regularly.

To distinguish network, it is suggested 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).