我们使用简单的 curl 通过 API 获取指标。问题是,输出的参数数量是固定的,而不是它们在输出中的位置。
我们需要使用“简单”的正则表达式来做到这一点,因为该工具只接受这个。
/"name":"(.*)".*?"memory":(\d+).*?"consumer_utilisation":(\w+|\d+).*?"messages_unacknowledged":(\d+).*?"messages_ready":(\d+).*?"messages":(\d+)/s
它适用于:
{"name":"queue1","memory":89048,"consumer_utilisation":null,"messages_unacknowledged":0,"messages_ready":0,"messages":0}
但是,如果更改了输出顺序,则不再匹配:
{"name":"queue2","consumer_utilisation":null,"messages_unacknowledged":0,"messages_ready":0,"messages":0,"memory":21944}
{"name":"queue3","consumer_utilisation":null,"messages_unacknowledged":0,"messages_ready":0,"memory":21944,"messages":0}
我需要一个字符串的相对定义来匹配,因为我永远不知道它们会出现在哪个位置。它总共有 9 个不同的队列度量组。