
Given that my blueprint is not publicly available, I summarize it here. Kwapi (kilowatt API) contains the following modules: - Drivers: receive values from wattmeters and forward them on a bus (ZeroMQ). Wattmeter drivers are specific to each wattmeters (Wattsup, OmegaWatt, etc). - Plugins: listen the bus and process received data. Currently, there is two plugins: the ceilometer plugin (REST API) and a visualization plugin (build graphs with RRDtool). Kwapi is part of the XLcloud project (HPC cloud). http://www.xlcloud.org Repository: https://github.com/stackforge/kwapi Change-Id: Ieaaa1db9c8c569b6ee9f0815e03879f8b3f3e282
9.2 KiB
Measurements
Three type of meters are defined in ceilometer:
double: meter; cumulative double: meter; gauge double: meter; delta
Type | Definition |
---|---|
Cumulative | Increasing over time (instance hours) |
Gauge | Discrete items (floating IPs, image uploads) and fluctuating values (disk I/O) |
Delta | Changing over time (bandwidth) |
Units should use common abbreviatons:
Dimension | Unit | Abbreviations | Note |
---|---|---|---|
None Volume Time |
N/A byte seconds |
B s |
Dimension-less variable |
Information un |
its should |
|
|
Here are the m Compute (Nova) |
eter types |
|
hat are currently implemented: |
============== Name |
|
====== ======== ======================================================= it Resource Note |
|
============== instance |
|
|
|
instance:<type memory cpu vcpus disk.root.size |
> |
|
|
disk.ephemeral | .size |
|
|
disk.io.reques disk.io.bytes |
ts |
|
|
network.incomi | ng.bytes |
|
|
network.outgoi | ng.bytes |
|
|
network.incomi | ng.packets |
|
ackets iface ID number of incoming packets |
network.outgoi | ng.packets |
|
ackets iface ID number of outgoing packets |
Network (Quantum)
Name | Type | Unit | Resource | Note |
---|---|---|---|---|
network | Gauge | network | netw ID | Duration of network |
network.create | Delta | network | netw ID | Creation requests for this network |
network.update | Delta | network | netw ID | Update requests for this network |
subnet | Gauge | subnet | subnt ID | Duration of subnet |
subnet.create | Delta | subnet | subnt ID | Creation requests for this subnet |
subnet.update | Delta | subnet | subnt ID | Update requests for this subnet |
port | Gauge | port | port ID | Duration of port |
port.create | Delta | port | port ID | Creation requests for this port |
port.update | Delta | port | port ID | Update requests for this port |
router | Gauge | router | rtr ID | Duration of router |
router.create | Delta | router | rtr ID | Creation requests for this router |
router.update | Delta | router | rtr ID | Update requests for this router |
ip.floating | Gauge | ip | ip ID | Duration of floating ip |
ip.floating.create | Delta | ip | ip ID | Creation requests for this floating ip |
ip.floating.update | Delta | ip | ip ID | Update requests for this floating ip |
Image (Glance)
Name | Type | Unit | Resource | Note |
---|---|---|---|---|
image | Gauge |
|
image ID | Image polling -> it (still) exists |
image.size | Gauge |
|
image ID | Uploaded image size |
image.update | Delta |
|
image ID | Number of update on the image |
image.upload | Delta |
|
image ID | Number of upload of the image |
image.delete | Delta |
|
image ID | Number of delete on the image |
image.download | Delta |
|
image ID | Image is downloaded |
image.serve | Delta |
|
image ID | Image is served out |
Volume (Cinder)
Name | Type | Unit | Resource | Note |
---|---|---|---|---|
volume | Gauge |
|
vol ID | Duration of volune |
volume.size | Gauge |
|
vol ID | Size of volume |
Object Storage (Swift)
Name | Type | Volume | Resource | Note |
---|---|---|---|---|
storage.objects | Gauge |
|
store ID | Number of objects |
storage.objects.size | Gauge |
|
store ID | Total size of stored objects |
storage.objects.containers | Gauge | containers | store ID | Number of containers |
storage.objects.incoming.bytes | Delta |
|
store ID | Number of incoming bytes |
storage.objects.outgoing.bytes | Delta |
|
store ID | Number of outgoing bytes |
Energy (Kwapi)
Name | Type | Volume | Resource | Note |
---|---|---|---|---|
energy | Cumulative |
|
probe ID | Amount of energy |
power | Gauge |
|
probe ID | Power consumption |
Dynamically retrieving the Meters via ceilometer client
ceilometer meter-list -s openstack +------------+-------+--------------------------------------+---------+----------------------------------+ | Name | Type | Resource ID | User ID | Project ID | +------------+-------+--------------------------------------+---------+----------------------------------+ | image | gauge | 09e84d97-8712-4dd2-bcce-45970b2430f7 | | 57cf6d93688e4d39bf2fe3d3c03eb326 |
The above command will retrieve the available meters that can be queried on given the actual resource instances available.
Naming convention
If you plan on adding meters, please follow the convention bellow:
- Always use '.' as separator and go from least to most discriminent word. For example, do not use ephemeral_disk_size but disk.ephemeral.size
- When a part of the name is a variable, it should always be at the end and start with a ':'. For example do not use <type>.image but image:<type>, where type is your variable name.
- If you have any hesitation, come and ask in #openstack-metering