如何通过NRQL在New Relic生成含百分位数的响应时间图表?
New Relic NRQL查询实现指定性能图表
核心查询语句
FROM Transaction WHERE transactionType = 'Web' SELECT average(duration) AS '当前时段平均响应时间', percentile(duration, 1) AS '1% 百分位数', percentile(duration, 5) AS '5% 百分位数', percentile(duration, 95) AS '95% 百分位数', percentile(duration, 99) AS '99% 百分位数' COMPARE WITH 1 WEEK, 2 WEEK, 3 WEEK, 4 WEEK, 5 WEEK, 6 WEEK, 7 WEEK, 8 WEEK TIMESERIES <时间粒度> WHERE <自定义时段过滤>
关键参数说明
<时间粒度>:替换为所需聚合粒度,比如1 MINUTE(每分钟聚合)、5 MINUTES(每5分钟),按需调整图表精度。<自定义时段过滤>:替换为指定时段,比如timestamp >= '2024-05-20T09:00:00+08:00' AND timestamp <= '2024-05-20T10:00:00+08:00',也可直接在New Relic界面选定时段,查询会自动匹配时间范围。transactionType = 'Web':过滤Web类型请求,确保仅统计目标数据。
合并百分位区间的调整方案
若需将过去60天内每周同一时段的百分位数合并为整体区间(而非分周展示),可使用子查询实现:
SELECT average(duration) AS '当前时段平均响应时间', percentile(duration, 1) AS '1% 百分位数', percentile(duration, 5) AS '5% 百分位数', percentile(duration, 95) AS '95% 百分位数', percentile(duration, 99) AS '99% 百分位数' FROM ( FROM Transaction WHERE transactionType = 'Web' AND timestamp >= ago(60 DAYS) AND hourOfDay(timestamp) BETWEEN <起始小时> AND <结束小时> AND dayOfWeek(timestamp) = dayOfWeek(now()) SELECT duration ) TIMESERIES <时间粒度> WHERE <自定义当前时段过滤>
<起始小时>和<结束小时>:替换为指定时段的小时范围,比如当前选9点到10点,就写9 AND 10。dayOfWeek(timestamp) = dayOfWeek(now()):确保仅取过去60天内与当前时段同星期几的时段数据,匹配“每周同一时段”要求。
使用步骤
- 打开New Relic的Query builder界面。
- 粘贴上述查询语句,替换对应参数。
- 选择图表类型为Line chart(折线图),即可同时展示当前平均响应时间和百分位区间线。
内容的提问来源于stack exchange,提问作者user21000666
相关产品推荐
相关产品推荐

