簡體   English   中英

用jq解析jolokia輸出

[英]Parse jolokia output with jq

我有一個Apache Artemis經紀人,可以通過jolokia獲得其中的一些管理信息。 此響應為json格式; 我也有jq用它做“ json東西”。

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

這有效; 並提供json響應。

我想制作一種通用腳本來檢查此響應中的某些值; 因此有幾個問題:

(為了便於測試,我將響應存儲在文件broker.json中,通常我會將輸出從curl傳遞到jq或將其存儲在變量中,具體取決於必須調用jq的頻率)

我要查詢的鍵之一可以像這樣:

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

但是,在更通用的腳本中,我將不知道經紀人的名稱(此處為“ broker1”)。 有什么辦法可以像這樣通配密鑰: "org.apache.activemq.artemis:broker=\\"*\\"" 到目前為止,我的嘗試並沒有給我任何東西

我認為第二個問題要難一些。 在響應中,可以通過查詢.request.timestamp找到一個字段,該值以秒為單位。

代理上有隊列,其中一些可能有消息。 我想查找那些消息早於5分鍾的消息。

我可以使用此鍵找到一個這樣的對象:

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

該對象包含兩個我可以用於此目的的鍵:-FirstMessageAge:以毫秒為單位的年齡-FirstMessageTimestamp:自紀元以來以毫秒為單位的時間戳。

我將如何查詢? 理想情況下,我希望得到答案“ my.queue的消息早於X”; 也可以通過具有鍵“地址”或“名稱”來獲取my.queue

Artemis使用“地址”和“隊列”作為單獨的實體; 出於所有實際目的,兩者的名稱相同。

我正在嘗試制作一個(簡單的)腳本,該腳本可以定期監視代理運行狀況(隊列中沒有太多消息,時間太長,隊列中沒有使用方,諸如此類;所有這些都可以從單個rest調用中獲得;我認為有了以上問題的答案,我應該能夠弄清楚如何做到這一點。

有什么辦法可以像這樣通配密鑰: "org.apache.activemq.artemis:broker=\\"*\\""

匹配鍵名上的通配符的最佳方法是使用with_entriesto_entries 由於您尚未提供符合MCVE准則的示例,因此尚不清楚您將如何使用它,但是與給出的示例類似,您可以從以下內容開始:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM