With the departure of legacy alerting (RIP ), the legacy availability monitor is no longer configurable. This means the Uptime stat in the APM SLA report may no longer be available on new accounts and apps. While Synthetics has its own marvelous SLA report, it can be nice to see everything in the same place for easy consumption. Here is a way you can put all of that into a single Insights dashboard that can be easily shared with others!
Hold on!
Before I dive into that, there is one caveat to keep in mind.
There is a limit on the number of APM transaction events that can be gathered before the agent begins to aggregate the data. This can mean that only a sample of the total events are being sent to Insights. For most agents, that limit is 2000 events per minute, but can be raised in the agent configuration. To check the defaults and configurable options for this, check your agent’s configuration documentation and look for the transaction_events
attribute (also known as analytics_events
in the past).
Alright, let’s get querying!
Here is my query to replicate the APM SLA report:
SELECT (count(*)/1000) AS 'Requests (thousands)',
(average(duration)*1000) AS 'Response Time(ms)',
apdex(duration, t: 0.1) AS Apdex,
percentage(count(*), WHERE apdexPerfZone = 'S') AS '% Satisfied',
percentage(count(*), WHERE apdexPerfZone = 'T') AS '% Tolerating',
percentage(count(*), WHERE apdexPerfZone = 'F') AS '% Frustrated'
FROM Transaction WHERE appName = '[APP NAME]'
FACET dateOf(timestamp) since 14 days ago limit 20
Here is my query for the Synthetics SLA report:
SELECT average(duration) as 'Duration',
percentage(count(*), WHERE result='SUCCESS') AS 'Uptime',
apdex((duration/1000), t:[t-value]),
percentage(count(timestamp),
WHERE (duration/1000) <= [t] AND result = 'SUCCESS')
AS '% Satisfied',
percentage(count(timestamp),
WHERE (duration/1000) > [t] AND (duration/1000) < [4t] AND result = 'SUCCESS')
AS '% Tolerating',
(percentage(count(timestamp),
WHERE (duration/1000) >= [4t]) + percentage(count(timestamp),
WHERE result != 'SUCCESS'))
AS '% Frustrated'
FROM SyntheticCheck WHERE monitorId = '[MONITOR ID]'
FACET dateOf(timestamp) since 14 days ago limit 20
Simply replace the bracketed values with your own, and you will be set!