如何对Prometheus指标标签值执行算术运算计算文件吞吐量
基于Prometheus标签计算单文件吞吐量的解决方案
核心结论
完全可以获取单个文件对应的标签值并执行算术运算,关键是要将字符串类型的标签转换为数值,同时通过分组保留所需标签。
分步查询实现
根据你的需求,我们可以通过以下PromQL语句完成计算:
按文件汇总处理时长(保留length标签)
同一个文件的length标签值一致,因此分组时同时指定fileName和length,确保后续能获取到对应文件的长度标签:sum by(fileName, length) (avg_treatment_duration{})计算单文件吞吐量(length与总时长的比值)
由于length是字符串类型标签,需用strtofloat()函数转换为数值后再执行除法运算:strtofloat(length) / sum by(fileName, length) (avg_treatment_duration{})该语句会输出每个文件的吞吐量(文件大小/总处理时长,即单位时间处理的数据量)。
对所有文件的吞吐量取平均值
在外层嵌套avg()函数即可实现:avg( strtofloat(length) / sum by(fileName, length) (avg_treatment_duration{}) )
对你现有查询的修正
你之前的查询avg(sum by(fileName) (avg_treatment_duration{}))仅计算了各文件总处理时长的平均值,未结合length标签进行吞吐量计算,无法满足需求。
内容的提问来源于stack exchange,提问作者user21511990
相关产品推荐
相关产品推荐

