prom/prom2jsonprom2json 是一个用于抓取 Prometheus 客户端指标并转换为 JSON 格式的工具。由于 Prometheus 客户端已不再维护原生 JSON 暴露格式,该工具通过抓取客户端的协议缓冲区或文本格式指标,将其转换为结构化 JSON 并输出到标准输出,解决了非 Prometheus 服务器程序(尤其是小型临时程序)处理指标的需求,同时方便人工检查指标数据。
curl 输出)或本地文件输入指标数据jq 等工具结合,便于指标分析和查询jq 等 JSON 处理工具结合,进行指标过滤、统计和查询bashdocker pull prom/prom2json
直接从 Prometheus 客户端的 HTTP 指标端点抓取并转换:
bashdocker run --rm -ti prom/prom2json [***]
结合 curl 获取指标并通过管道输入给 prom2json:
bashcurl [***] | docker run --rm -i prom/prom2json
若需处理本地文件中的指标(需挂载文件到容器):
bashdocker run --rm -ti -v /tmp/metrics.prom:/tmp/metrics.prom prom/prom2json /tmp/metrics.prom
指定证书和密钥进行 TLS 客户端认证:
bashdocker run --rm -ti -v /path/to/cert:/cert -v /path/to/key:/key prom/prom2json --cert=/cert --key=/key [***]
禁用 TLS 证书验证(仅用于测试):
bashdocker run --rm -ti prom/prom2json --accept-invalid-cert [***]
prom2json 输出的 JSON 为指标对象数组,每个对象包含以下字段:
name:指标名称help:指标帮助信息type:指标类型(如 COUNTER、SUMMARY、HISTOGRAM 等)metrics:指标数据数组,包含具体标签和值NaN、+Inf 等 Prometheus 特殊值json[ { "name": "http_request_duration_microseconds", "help": "The HTTP request latencies in microseconds.", "type": "SUMMARY", "metrics": [ { "labels": { "method": "get", "handler": "prometheus", "code": "200" }, "quantiles": { "0.99": "67542.292", "0.9": "23902.678", "0.5": "6865.718" }, "count": "743", "sum": "6936936.447000001" } ] }, { "name": "roshi_select_call_count", "help": "How many select calls have been made.", "type": "COUNTER", "metrics": [ { "value": "***" } ] } ]
查询 http_requests_total 指标家族的指标数量:
bashdocker run --rm -ti prom/prom2json [***] | jq '.[]|select(.name=="http_requests_total")|.metrics|length'
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务