Incorporate the rules for specifying sample units based on https://wiki.openstack.org/wiki/Ceilometer/Units Change-Id: I8ce2275b0c844393b8f03dd6909f29a96c6f1b80 Signed-off-by: Doug Hellmann <doug.hellmann@dreamhost.com>
9.9 KiB
9.9 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
- Whenever a volume is to be measured, SI approved units and their approved symbols or abbreviations should be used. Information units should be expressed in bits ('b') or bytes ('B').
- For a given meter, the units should NEVER, EVER be changed.
- When the measurement does not represent a volume, the unit description should always described WHAT is measured (ie: apples, disk, routers, floating IPs, etc.).
- When creating a new meter, if another meter exists measuring something similar, the same units and precision should be used.
- Samples (aka "meters" or "counters") should always document their units in Ceilometer (API and Documentation) and new sampling code should not be merged without the appropriate documentation.
| Dimension | Unit | Abbreviations | Note |
|---|---|---|---|
None Volume Time |
N/A byte seconds |
B s |
Dimension-less variable |
Here are the meter types by components that are currently implemented:
Compute (Nova)
| Name | Type | Unit | Resource | Note |
|---|---|---|---|---|
instance instance:<type> |
Gauge Gauge |
inst ID inst ID |
Duration of instance Duration of instance <type> (openstack types) |
|
| memory | Gauge |
|
inst ID | Volume of RAM in MB |
| cpu | Cumulative |
|
inst ID | CPU time used |
| vcpus | Gauge |
|
inst ID | Number of VCPUs |
| disk.root.size | Gauge |
|
inst ID | Size of root disk in GB |
| disk.ephemeral.size | Gauge |
|
inst ID | Size of ephemeral disk in GB |
| disk.io.requests | Cumulative | requests | inst ID | Number of disk io requests |
| disk.io.bytes | Cumulative |
|
inst ID | Volume of disk io in bytes |
| network.incoming.bytes | Cumulative |
|
iface ID | number of incoming bytes on the network |
| network.outgoing.bytes | Cumulative |
|
iface ID | number of outgoing bytes on the network |
| network.incoming.packets | Cumulative |
|
iface ID | number of incoming packets |
| network.outgoing.packets | Cumulative |
|
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
To retrieve the available meters that can be queried given the actual
resource instances available, use the meter-list
command:
$ ceilometer meter-list -s openstack
+------------+-------+--------------------------------------+---------+----------------------------------+
| Name | Type | Resource ID | User ID | Project ID |
+------------+-------+--------------------------------------+---------+----------------------------------+
| image | gauge | 09e84d97-8712-4dd2-bcce-45970b2430f7 | | 57cf6d93688e4d39bf2fe3d3c03eb326 |
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