首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jq解析jolokia输出

用jq解析jolokia输出
EN

Stack Overflow用户
提问于 2018-08-30 09:30:08
回答 1查看 203关注 0票数 1

我有一个Artemis经纪人,我可以通过jolokia获得一些管理信息。这个响应是json格式的;我还可以使用jq来处理"json内容“。

代码语言:javascript
复制
curl -s -X GET --url 'http://localhost:8161/console/jolokia/read/org.apache.activemq.artemis:*'

这是可行的,并提供了一个json响应。

我想做一种通用脚本来检查这个响应中的一些值;因此,我想问几个问题:

(为了便于测试,我将响应存储在文件broker.json中,通常只需将输出从curl传输到jq,或者将其存储在变量中,这取决于jq被调用的频率。)

我想查询的其中一个键是这样的:

代码语言:javascript
复制
 jq '."value"."org.apache.activemq.artemis:broker=\"broker1\""' broker.json

但是,在一个更通用的脚本中,我将不知道代理的名称(这里的名称是"broker1“);有什么方法可以通配符,比如"org.apache.activemq.artemis:broker=\"*\""吗?到目前为止,我的尝试并没有给我任何帮助。

我觉得第二个问题有点难。在响应中,有一个字段可以通过查询.request.timestamp来找到,该值从纪元开始以秒为单位。

代理上有队列,其中一些可能有消息;我希望找到那些消息比5分钟更早的消息。

我可以用这个键找到一个这样的对象:

代码语言:javascript
复制
  jq '."value"."org.apache.activemq.artemis:address=\"my.queue\",broker=\"broker1\",component=addresses,queue=\"my.queue\",routing-type=\"anycast\",subcomponent=queues"' broker.json

此对象包含两个可用于此目的的键:- FirstMessageAge :年龄在ms - FirstMessageTimestamp:时间戳(以毫秒为单位)。

我将如何查询这一点?理想情况下,我希望得到"my.queue的消息早于X“的答案;其中,my.queue也可以通过拥有”地址“或”名称“来获得。

Artemis使用Address和Queue作为单独的实体;在这里的所有实际用途中,两者都有相同的名称。

我正在尝试制作一个(简单的)脚本,它可以定期监视代理的运行状况(在队列上的消息不太多,队列中有消费者,诸如此类的东西;所有这些都可以从这个rest调用中得到;我认为,通过对上述问题的回答,我应该能够弄清楚如何获得这些信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-08 19:54:43

有什么办法我可以通配符的密钥如下:"org.apache.activemq.artemis:broker=\"*\""

在密钥名上匹配通配符的最佳方法是使用with_entriesto_entries。由于您没有按照MCVE准则提供示例,所以不清楚您将如何做到这一点,但与您所举的示例进行类比,您可以从以下几个方面开始:

代码语言:javascript
复制
.value
| to_entries[]
| select(.key | test("^org.apache.activemq.artemis:broker=\".*\""))
| .value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52093635

复制
相关文章

相似问题

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