如何用Signal Flow查询计算HTTP请求4xx/5xx错误率
Signal Flow 错误率计算查询方案
要计算4xx、5xx请求占总请求的比例,需先分别统计总请求数、4xx类请求数、5xx类请求数,再通过除法计算占比并转为百分比展示。以下是具体的Signal Flow查询代码:
# 统计所有HTTP请求的总数(聚合所有Status标签的数值) total_requests = data('http_status.count').sum().publish(label='总请求数') # 统计4xx类请求总数(匹配所有以4开头的状态码) client_errors = data('http_status.count', filter=filter('Status', filter_regex('^4'))).sum().publish(label='4xx请求数') # 统计5xx类请求总数(匹配所有以5开头的状态码) server_errors = data('http_status.count', filter=filter('Status', filter_regex('^5'))).sum().publish(label='5xx请求数') # 计算4xx错误率(转为百分比) client_error_rate = (client_errors / total_requests) * 100.publish(label='4xx错误率(%)') # 计算5xx错误率(转为百分比) server_error_rate = (server_errors / total_requests) * 100.publish(label='5xx错误率(%)')
关键说明:
- 使用
filter_regex('^4')和filter_regex('^5')可批量匹配所有4xx、5xx状态码,无需逐个指定具体状态值(如400、404、500、502等)。 .sum()用于聚合同一时间窗口内的所有请求数,确保得到该时间段的总请求量。- 乘以100是为了将小数比例转为直观的百分比数值,方便在仪表盘中展示。
如果需要按服务、端点等维度拆分统计,可在sum()中指定维度参数,例如.sum(by=['service', 'endpoint']),这样会按指定维度分别计算每个维度下的错误率。
内容的提问来源于stack exchange,提问作者developer747
相关产品推荐
相关产品推荐

