У меня есть брокер 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 также можно получить с помощью ключа «Адрес» или «Имя»
Артемида использует Адрес и Очереди как отдельные объекты; для всех практических целей оба имеют одинаковое имя.
Я пытаюсь создать (простой) скрипт, который может периодически отслеживать состояние брокера (не слишком много сообщений в очередях слишком долго, очереди с потребителями и тому подобное), и все это можно получить с помощью этого единственного вызова rest; Я думаю, что с ответами на вышеуказанные вопросы я смогу понять, как это получить.