代码之家  ›  专栏  ›  技术社区  ›  Michiel

用jq解析jolokia输出

  •  1
  • Michiel  · 技术社区  · 7 年前

    我有一个apacheartemis代理,我可以通过jolokia获得一些管理信息。这个响应是json格式的;我还让jq用它做“json的东西”。

    curl -s -X GET --url 'http://localhost:8161/console/jolokia/read/org.apache.activemq.artemis:*'
    

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

    我想查询的其中一个键可以得到如下结果:

     jq '."value"."org.apache.activemq.artemis:broker=\"broker1\""' broker.json
    

    "org.apache.activemq.artemis:broker=\"*\"" ? 到目前为止,我的尝试没有给我任何帮助

    第二个问题我觉得有点难。 该值以秒为单位。

    在代理上是队列,其中一些可能有消息;我想找到那些消息早于(比方说)5分钟的队列。

    我可以用这把钥匙找到一个这样的物体:

      jq '."value"."org.apache.activemq.artemis:address=\"my.queue\",broker=\"broker1\",component=addresses,queue=\"my.queue\",routing-type=\"anycast\",subcomponent=queues"' broker.json
    

    此对象包含两个可用于此目的的键: -FirstMessageTimestamp:以毫秒为单位的时间戳。

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   peak    7 年前

    "org.apache.activemq.artemis:broker=\"*\""

    with_entries to_entries . 因为你没有按照 MCVE

    .value
    | to_entries[]
    | select(.key | test("^org.apache.activemq.artemis:broker=\".*\""))
    | .value