如何排查Prometheus中'strconv.ParseFloat: parsing "to": invalid syntax'错误
Prometheus指标解析错误排查:strconv.ParseFloat: parsing "to": invalid syntax
问题详情
抓取Consul Envoy(端口20200)的监控指标时,Prometheus目标出现错误:
- 目标地址:
http://192.168.62.150:20200/metrics - 错误信息:
strconv.ParseFloat: parsing "to": invalid syntax
通过curl获取该地址的部分metrics内容如下(9090是productapi服务暴露的端口):
envoy_server_initialization_time_ms_bucket{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1",le="300000"} 1 envoy_server_initialization_time_ms_bucket{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1",le="600000"} 1 envoy_server_initialization_time_ms_bucket{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1",le="1800000"} 1 envoy_server_initialization_time_ms_bucket{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1",le="3600000"} 1 envoy_server_initialization_time_ms_bucket{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1",le="+Inf"} 1 envoy_server_initialization_time_ms_sum{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1"} 1350 envoy_server_initialization_time_ms_count{local_cluster="product-api",consul_source_service="product-api",consul_source_namespace="default",consul_source_partition="default",consul_source_datacenter="dc1"} 1 failed to scrape metrics at url "http://127.0.0.1:9090/metrics"
Prometheus指标解析逻辑
Prometheus对metrics接口返回内容有严格格式要求:
- 合法行仅三类:指标行(格式为
指标名{标签键值对} 数值)、注释行(以#开头)、空行 - 解析时逐行处理,指标行的数值部分必须能被转换为浮点数(支持整数、小数、
+Inf/-Inf等特殊值) - 若某行不符合格式,或数值部分无法转成浮点数,就会触发解析错误
错误定位与解决
1. 定位错误数据
错误提示parsing "to": invalid syntax说明,Prometheus解析某一行的数值时遇到了字符串"to"而非合法数字。从你提供的curl结果看,最后一行failed to scrape metrics at url "http://127.0.0.1:9090/metrics"是Envoy抓取productapi的metrics失败后输出的错误信息,这行完全不符合Prometheus指标格式,正是解析失败的根源。
2. 解决步骤
- 先排查productapi的metrics接口:直接访问
http://127.0.0.1:9090/metrics(需在Envoy所在Pod或可访问该地址的环境测试),确认它能返回合法的Prometheus格式数据,无语法错误或非指标内容 - 检查Envoy配置:确认是否开启了后端服务metrics的抓取转发,以及是否有处理抓取失败的逻辑,避免将错误信息混入自身metrics输出
- 临时缓解:若暂时无法修复后端服务,可在Prometheus抓取配置中添加
metric_relabel_configs,过滤掉Envoy输出中的错误行,比如匹配包含"failed to scrape"的行并丢弃
内容的提问来源于stack exchange,提问作者peaqe
相关产品推荐
相关产品推荐

