首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将json值转换为prometheus?

如何将json值转换为prometheus?
EN

Stack Overflow用户
提问于 2019-09-25 04:07:12
回答 2查看 119关注 0票数 0

运行此命令后:

mtr -jnbz www.google.com |jq .report.hubs|jq -r 'keys_unsorted[] as $k | "\(.[$k])"'

我得到的结果是:

代码语言:javascript
复制
{"count":"1","host":"1.1.1.1","ASN":"AS???","Loss%":0,"Snt":10,"Last":36.28,"Avg":39.43,"Best":34.77,"Wrst":62.37,"StDev":8.15}
{"count":"2","host":"2.2.2.2","ASN":"AS???","Loss%":100,"Snt":10,"Last":0,"Avg":0,"Best":0,"Wrst":0,"StDev":0}

如何获得此结果(prometheus格式):

代码语言:javascript
复制
mtr_loss{"count"="1","host"="1.1.1.1","ASN"="AS???"} 0
mtr_snt{"count"="1","host"="1.1.1.1","ASN"="AS???"} 10
mtr_last{"count"="1","host"="1.1.1.1","ASN"="AS???"} 36.28
mtr_avg{"count"="1","host"="1.1.1.1","ASN"="AS???"} 39.43
mtr_best{"count"="1","host"="1.1.1.1","ASN"="AS???"} 34.77
mtr_wrst{"count"="1","host"="1.1.1.1","ASN"="AS???"} 67.37
mtr_stdev{"count"="1","host"="1.1.1.1","ASN"="AS???"} 8.15

对于第二个字符串,依此类推

我将非常感谢您的任何提示和技巧

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-25 06:21:58

下面的代码可能更容易遵循、维护和重用:

代码语言:javascript
复制
# produce the {"k"="value", ...} representation:
def kv:
  . as $in
  | reduce keys_unsorted[] as $k ([]; . + ["\"\($k)\"=\"\($in[$k])\""] )
  | join(",")
  | "{" + . + "}" ;

# downcase and remove %
def ht($s):
  keys_unsorted[] as $key
  | .[$key] as $value
  | "mtr_\($key|ascii_downcase|gsub("%";""))\($s) \($value)";

({count,host,ASN} | kv) as $s
| {"Loss%", Snt, Last, Avg, Best, Wrst, StDev}
| ht($s)
票数 1
EN

Stack Overflow用户

发布于 2019-09-25 05:24:19

这很简单:):

代码语言:javascript
复制
 mtr -jnbz  www.google.com | 
 tr -d "%" |
 jq -r '.report.hubs[] 
        | "mtr_loss{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Loss)\nmtr_sent{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Snt)\nmtr_last{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Last)\nmtr_avg{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Avg)\nmtr_best{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Best)\nmtr_wrst{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.Wrst)\nmtr_stdev{count=\"\(.count)\",host=\"\(.host)\",asn=\"\(.ASN)\"} \(.StDev)" '
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58087455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档