Latest Dynatrace
This guide provides insights into migrating runtime metrics to Grail. Typically, a Grail metric is equivalent to a Metrics Classic metric. In some cases, however, there's no one-to-one relation:
When multiple Grail metric keys provide support for a single Metrics Classic metric, not all values can be converted to the respective new metric keys. For example, the following example queries return equivalent results.
Metrics Classic
builtin:tech.jvm.memory.gc.collectionTime:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),entityName.equals(~"MyGoProcessGroup-IG-1~")"))))):auto
DQL
timeseries collection_time = sum(dt.runtime.go.gc.collection_time),filter:in(dt.entity.process_group_instance, classicEntitySelector("type(process_group_instance), entityName.equals(\"MyGoProcessGroup-IG-1\")"))
Metrics Classic
builtin:tech.jvm.memory.gc.collectionTime:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),entityName.equals(~"MyGoProcessGroup-IG-1~")"))))):auto
DQL
timeseries collection_time = sum(dt.runtime.go.gc.collection_time),filter:in(dt.entity.process_group_instance, classicEntitySelector("type(process_group_instance), entityName.equals(\"MyGoProcessGroup-IG-1\")"))
Metrics Classic
builtin:tech.jvm.memory.gc.collectionTime:filter(and(or(in("dt.entity.process_group_instance",entitySelector("type(process_group_instance),entityName.equals(~"MyGoProcessGroup-IG-1~")"))))):auto
DQL
timeseries collection_time = sum(dt.runtime.go.gc.collection_time),filter:in(dt.entity.process_group_instance, classicEntitySelector("type(process_group_instance), entityName.equals(\"MyGoProcessGroup-IG-1\")"))
Java Node.js .NET Go
The following Metrics Classic metrics for memory pool and garbage collection are JVM-based. Because Grail metrics are technology-specific, there's no direct relation between Metrics Classic and Grail metrics. You need to choose a technology-dedicated metric in Grail.
ApacheIIS.NGINX
The following Metrics Classic metrics for web servers hold values for different technologies. Because Grail metrics are technology-specific, there's no direct relation between Classic and Grail metrics. You need to choose the Apache, IIS, or NGINX dedicated metric in Grail.
When a single Grail metric provides support for multiple Metrics Classic metrics, all values are converted. To obtain the equivalent results in Grail, use a metric dimension to filter the values. For example, the following metrics return equivalent results.
Metrics Classic: builtin:tech.go.http.responses5xx
DQL: dt.runtime.go.http.requests
filtered by status in the range 500–599
via DQL queries
timeseries responses5xx = sum(dt.runtime.go.http.requests),filter:{500 <= status and status <= 599}
via Notebooks
Go
failed
or started
)== 502
or >= 500 and <=599
)idle
or live
)user
or system
)Overall
, Idling
, or Spinning
).NET
Generation0
, Generation1
, or Generation2
)Generation0
, Generation1
, Generation2
, and LargeObjectHeap
)activeIOCompletionThreads
or activeWorkerThreads
)The following Metrics Classic metrics don't have a dedicated Grail metric.
NGINX
builtin:tech.nginx.cache.hitRatio
timeseriesmisses = sum(dt.runtime.nginx.plus.cache.misses),hits = sum(dt.runtime.nginx.plus.cache.hits)| fieldsAdd hit_ratio = misses[] / hits[]
builtin:tech.nginx.serverZones.active
builtin:tech.nginx.serverZones.inactive
Node.js