Metric template
Metrics are defined using a YAML manifest with the following structure:
and properties:
Field | Type | Value restrictions | Is required | Default Value | Description |
---|---|---|---|---|---|
| string | no spaces are allowed | TRUE |
| The name of the metric |
| string | A supported unit or a custom unit (see supported units of measure) | The unit of measure of the metric | ||
| 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 | |
Units of information | |
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:
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 involvedcpu unit is
millicores
when docker/Kubernetes containers are involvedcpu 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)
Last updated