json - 如何将json值转换为prometheus?
问题描述
运行此命令后:
mtr -jnbz www.google.com |jq .report.hubs|jq -r 'keys_unsorted[] as $k | "\(.[$k])"'
我得到这个结果:
{"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 格式):
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
以此类推第二个字符串
我将不胜感激任何提示和技巧
问候
解决方案
以下内容可能更易于遵循、维护和重用:
# 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)
推荐阅读
- redux - 使用 redux 从库组件访问主机存储
- python - 查找目录树结构中所有无效的json文件
- c# - 在 net.tcp://url 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的
- ios - 在我的应用中实施时 XLPagerTabStrip 出现问题
- python - 选择特征后打印列/变量名
- discord.py - How do I make my logs server specific | discord.py
- python - 带有 nginx 和 gunicorn curl 的烧瓶:(56) Recv failure: Connection reset by peer
- macros - 在 Common Lisp 中通过循环生成包括取消引用拼接的代码
- mysql - (节点:19640)UnhandledPromiseRejectionWarning:SequelizeConnectionError:未知数据库'tech_blog_db'
- flutter - 如何从元素的中心旋转堆栈?