Akamas Docs
3.2.2
Search
K

Metric template

Metrics are defined using a YAML manifest with the following structure:
1
metrics:
2
- name: "cpu_util"
3
description: "cpu utilization"
4
unit: "percent"
5
- name: "mem_util"
6
description: "memory utilization"
7
unit: "percent"
and properties:
Field
Type
Value restrictions
Is required
Default Value
Description
name
string
No spaces are allowed
TRUE
The name of the metric
unit
string
A supported unit or a custom unit (see supported units of measure)
The unit of measure of the metric
description
string
TRUE
A description characterizing the metric

Supported units of measure

The supported units of measure for metrics are:
Type
Units
Temporal units
nanoseconds
microseconds
milliseconds
seconds
minutes
hours
nanoseconds
microseconds
milliseconds
seconds
minutes
hours
nanoseconds
microseconds
milliseconds
seconds
minutes
hours
nanoseconds
microseconds
milliseconds
seconds
minutes
hours
Units of information
bits
kilobits
megabits
gigabit
terabit
petabit
bytes
kilobytes
megabytes
gigabytes
terabytes
petabytes
bits
kilobits
megabits
gigabit
terabit
petabit
bytes
kilobytes
megabytes
gigabytes
terabytes
petabytes
bits
kilobits
megabits
gigabit
terabit
petabit
bytes
kilobytes
megabytes
gigabytes
terabytes
petabytes
bits
kilobits
megabits
gigabit
terabit
petabit
bytes
kilobytes
megabytes
gigabytes
terabytes
petabytes
Others
percent
Notice that supported units of measure are automatically scaled for visualization purposes. In particular, for units of information, Akamas uses a base 2 scaling for bytes, i.e., 1 kilobyte = 1024 bytes, 1 megabyte = 1024 kilobytes, and so on. Other units of measure are only scaled up using millions or billions (e.g., 124000000 custom units become 124 Mln custom units).

Choosing the correct metric unit

The most important thing when designing custom optimization packs is to choose the correct unit of measure for every metric. In the previous paragraph you were given a full listing of the supported units of measure and the way they are scaled by Akamas UI (e.g. you may notice that, when viewing study or optimization charts memory bytes are scaled to megabytes or gigabytes, whenever needed). There is another scaling involved and this happens inside telemetry providers. Akamas integrates with several telemetry providers (such as Neoload, Loadrunner, Dynatrace, etc). The purpose of these Akamas providers is to mask the differences between scaling units used by the various telemetry providers (again: Neoload, Loadrunner, etc) and to perform a specific scaling on these measures in order to guarantee that all metrics are homogeneous when they are finally fed to the Akamas engine.
Let's take Akamas provider for Dynatrace, for example. Here's a snippet of the internal metrics mapping between Dynatrace and Akamas:
- metric: requests_response_time
datasourceMetric: builtin:service.response.time
scale: 0.001
- metric: requests_error_rate
datasourceMetric: builtin:service.errors.total.rate
scale: 0.01
This means that values coming from Dynatrace metric builtin:service.response.time will be mapped to Akamas metric requests_response_time but since Dynatrace returns microseconds with that metric, Akamas provider code will scale it multiplying by 0.001 to convert it to nanoseconds. Similarly, values coming from Dynatrace metric builtin:service.errors.total.rate which are percent values but range from 0 to 100, must be scaled (scale factor is 0,01) in order to convert them to domain [0.0, 1.0] used by Akamas
So when designing a custom optimization pack you should make sure that:
  • memory unit is bytes
  • cpu unit is CPUs when real hardware is involved
  • cpu unit is millicores when docker/Kubernetes containers are involved
  • cpu utilization unit is percent (100% being 1.00)
  • throughput unit is XXX/sec (e.g.: bytes/sec, responses/sec, collections/sec)
  • temporal unit for CPU-related metrics is nanoseconds
  • temporal unit for web-related metrics is milliseconds
  • temporal unit for human-related metric is seconds (unless otherwise noted by the telemetry provider)