从Prometheus转VictoriaMetrics:用vmrange计算请求≤500ms占比
从Prometheus的le标签查询转换为VictoriaMetrics的vmrange查询
转换后的查询语句(推荐方式)
使用VictoriaMetrics提供的vm_le函数可以直接替代Prometheus中le标签的筛选逻辑,得到与原查询等价的结果:
sum(rate(vm_le(demo_service_request_duration_seconds_bucket, 0.5)[5m])) by (exported_job) / sum(rate(demo_service_request_duration_seconds_count[5m])) by (exported_job)
逻辑说明
vm_le(metric, value)函数会自动筛选出所有区间上限小于等于value(此处为0.5)的histogram bucket,完全对应Prometheus中{le="0.5"}标签的作用。- 后续的
rate、sum by (exported_job)以及除法逻辑和原PromQL保持一致,确保计算的是各exported_job下请求耗时≤0.5秒的比例。
备选方案:直接匹配vmrange标签
如果不想使用函数,也可以通过正则表达式匹配vmrange标签来筛选目标区间(注意正则的转义处理):
sum(rate(demo_service_request_duration_seconds_bucket{vmrange=~"\\[.*,0\\.5\\]|\\[.*,0\\.5\\)"}[5m])) by (exported_job) / sum(rate(demo_service_request_duration_seconds_count[5m])) by (exported_job)
这种方式需要匹配所有右边界为0.5的区间格式(VictoriaMetrics的区间为左闭右开,格式如[0,0.5)或[0.25,0.5)),但相比vm_le函数不够灵活,当区间格式变化时需要调整正则,因此更推荐使用vm_le函数。
内容的提问来源于stack exchange,提问作者Thang Ha
相关产品推荐
相关产品推荐

