1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mqtt-rs-rmqtt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
http-api.md 23 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 14:56 2a97644
.node_name String Имя узла
.node_status String Статус узла
.uptime String Время работы RMQTT Broker, в формате «D дней, H часов, m минут, s секунд»
.version String Версия RMQTT Broker

Примеры:

Получить статус всех узлов:

$ curl -i -X GET "http://localhost:6060/api/v1/nodes"

[{"boottime":"2022-06-30 05:20:24 UTC","connections":1,"disk_free":77382381568,"disk_total":88692346880,"load1":0.0224609375,"load15":0.0,"load5":0.0263671875,"memory_free":1457954816,"memory_total":2084057088,"memory_used":626102272,"node_id":1,"node_name":"1@127.0.0.1","node_status":"Running","uptime":"5 дней 23 часа, 33 минуты, 0 секунд","version":"rmqtt/0.2.3-20220724094535"}]

Получить статус указанного узла:

$ curl -i -X GET "http://localhost:6060/api/v1/nodes/1"

{"boottime":"2022-06-30 05:20:24 UTC","connections":1,"disk_free":77382381568,"disk_total":88692346880,"load1":0.0224609375,"load15":0.0,"load5":0.0263671875,"memory_free":1457954816,"memory_total":2084057088,"memory_used":626102272,"node_id":1,"node_name":"1@127.0.0.1","node_status":"Running","uptime":"5 дней 23 часа, 33 минуты, 0 секунд","version":"rmqtt/0.2.3-20220724094535"}

Client

GET /api/v1/clients

Возвращает информацию обо всех клиентах в кластере.

Параметры строки запроса:

Имя Тип Требуется По умолчанию Описание
_limit Integer Нет 10000 Максимальное количество элементов данных, возвращаемых за один раз. Если не указано, определяется конфигурационным элементом max_row_limit плагина rmqtt-http-api.toml
Имя Тип Требуется Описание
clientid String Нет Идентификатор клиента
username String Нет Имя пользователя клиента
ip_address String Нет IP-адрес клиента
connected Bool Нет Текущий статус подключения клиента
clean_start Bool Нет Использует ли клиент новый сеанс
session_present Bool Нет Подключён ли клиент к существующему сеансу
proto_ver Integer Нет Версия протокола клиента
_like_clientid String Нет Нечёткий поиск идентификатора клиента по методу подстроки
_like_username String Нет Клиентское имя пользователя, нечёткий поиск по подстроке
_gte_created_at Integer Нет Поиск времени создания сеанса клиента методом больше или равно
_lte_created_at Integer Нет Поиск времени создания сеанса клиента методом меньше или равно
_gte_connected_at Integer Нет Поиск времени подключения клиента методом больше или равно
_lte_connected_at Integer Нет Поиск времени подключения клиента методом меньше или равно
_gte_mqueue_len Integer Нет Текущая длина очереди сообщений методом больше или равно
_lte_mqueue_len Нет
Имя Тип Описание
----------------------- ------------------ ----------------------------------------------------------------------------------------------
[] Массив объектов Информация для всех клиентов
[0].node_id Целое число Идентификатор узла, к которому подключён клиент
[0].clientid Строка Идентификатор клиента
[0].username Строка Имя пользователя при подключении
[0].proto_ver Целое число Версия протокола, используемая клиентом
[0].ip_address Строка IP-адрес клиента
[0].port Целое число Порт клиента
[0].connected_at Строка Время подключения клиента в формате «ГГГГ-ММ-ДД ЧЧ:мм:сс»
[0].disconnected_at Строка Время отключения клиента от сети в формате «ГГГГ-ММ-ДД ЧЧ:мм:сс»,
это поле действительно и возвращается только тогда, когда connected равно false
[0].disconnected_reason Строка Причина отключения клиента
[0].connected Логическое значение Указывает, подключён ли клиент
[0].keepalive Целое число время keepalive с единицей измерения секунда
[0].clean_start Логическое значение Указывает, использует ли клиент новый сеанс
[0].expiry_interval Целое число интервал истечения срока действия сеанса с единицей измерения секунда
[0].created_at Строка время создания сеанса в формате «ГГГГ-ММ-ДД ЧЧ:мм:сс»
[0].subscriptions_cnt Целое число количество подписок, установленных этим клиентом
[0].max_subscriptions Целое число максимальное количество подписок, разрешённых этому клиенту
[0].inflight Целое число текущая длина inflight
[0].max_inflight Целое число максимальная длина inflight
[0].mqueue_len Целое число текущая длина очереди сообщений
[0].max_mqueue Целое число Имя Тип
--- --- ---
[0].plugins.descr Строка Описание плагина
[0].plugins.active Логическое значение Активен ли плагин
[0].plugins.inited Логическое значение Инициализирован ли плагин
[0].plugins.immutable Логическое значение Является ли плагин неизменяемым, неизменяемые плагины не могут быть остановлены, конфигурация изменена, перезапущены и т. д.
[0].plugins.attrs JSON Другие дополнительные свойства плагина Успешный ответ (JSON):
Имя Тип Описание
[] Массив объектов Список данных о состоянии каждого узла
[0].node Объект JSON Узел

Примеры:

$ curl -i -X GET "http://localhost:6060/api/v1/stats"

[
  {
    "node": 1
  }
]
``` |  | Тип данных | Описание                                                                    |
| :-- |:--: |:--:|
| client.publish.error            | Integer   | Publish, количество ошибок                                               |
| client.subscribe.auth.error     | Integer   | Subscribe, количество сбоев при проверке правил ACL                      |
| client.subscribe.error          | Integer   | Subscribe, количество ошибок                                             |
| client.subscribe.check.acl      | Integer   | Количество проверок правил ACL                                           |
| client.subscribe                | Integer   | Количество клиентских подписок                                           |
| client.unsubscribe              | Integer   | Количество отмен клиентских подписок                                     |
| messages.publish                | Integer   | Получено пакетов PUBLISH                                                 |
| messages.publish.admin          | Integer   | Получено сообщений PUBLISH через HTTP API                                |
| messages.publish.custom         | Integer   | Получено сообщений PUBLISH от клиентов MQTT                              |
| messages.publish.lastwill       | Integer   | Получено сообщений PUBLISH с последним сообщением воли                  |
| messages.publish.retain         | Integer   | Получено сообщений PUBLISH с сохранённым пересылаемым сообщением        |
| messages.publish.system         | Integer   | Получено системных сообщений PUBLISH ($SYS/#)                            |
| messages.delivered              | Integer   | Отправленных сообщений клиенту                                           |
| messages.delivered.admin        | Integer   | Отправленных клиенту сообщений через HTTP API                            |
| messages.delivered.custom       | Integer   | Отправленных клиенту сообщений от клиентов MQTT                          |
| messages.delivered.lastwill     | Integer   | Отправленных последнему клиенту сообщений воли                           |
| messages.delivered.retain       | Integer   | Отправленных сохранённых пересылаемых сообщений клиенту                  |
| messages.delivered.system       | Integer   | Отправленных системных сообщений клиенту ($SYS/#)                        |
| messages.acked                  | Integer   | Полученных пакетов PUBACK и PUBREC                                       |
| messages.acked.admin            | Integer   | Полученных PUBACK и PUBREC для сообщений через HTTP API                  |
| messages.acked.custom           | Integer   | Полученных PUBACK и PUBREC от клиентов MQTT                             |
| messages.acked.lastwill         | Integer   | Полученных PUBACK и PUBREC с последним сообщением воли                   |
| messages.acked.retain           | Integer   | Полученных PUBACK и PUBREC сохранённых пересылаемых сообщений           |
| messages.acked.system           | Integer   | Полученных PUBACK и PUBREC системных сообщений ($SYS/#)                  |
| messages.nonsubscribed          | Integer   | PUBLISH сообщений без найденной подписки                                 |
| messages.nonsubscribed.admin    | Integer   | PUBLISH сообщений без подписки, опубликованных через HTTP API            |
| messages.nonsubscribed.custom   | Integer   | PUBLISH сообщений без подписки, опубликованных клиентами MQTT            |
| messages.nonsubscribed.lastwill | Integer   | PUBLISH сообщений без подписки с последним сообщением воли               |
| messages.nonsubscribed.system   | Integer   | PUBLISH системных сообщений без подписки ($SYS/#)                       | ### GET /api/v1/metrics/prometheus

Return the status data and statistical metrics of all nodes in the cluster in *prometheus* format.

**Path Parameters:** None

**Success Response Body (TEXT):**

В запросе представлен список метрик с числовыми значениями. 

Метрики представляют собой пары ключ-значение, где ключ — это элемент статистики, а значение — количество случаев, соответствующих этому элементу. Например:

* rmqtt_metrics{item="client.auth.anonymous",node="1"} 0

Здесь «client.auth.anonymous» — это ключ, а «0» — значение, которое показывает, что на узле с идентификатором «1» не было анонимных попыток аутентификации.

Примеры запросов к API показывают, как можно использовать эти метрики для анализа работы системы.

Пример запроса:

```bash
$ curl -i -X GET "http://localhost:6060/api/v1/metrics/prometheus"
``` rmqtt_metrics{item="messages.dropped",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed",node="1"} 0
rmqтт_metrics{item="messages.nonsubscribed",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed.admin",node="1"} 0
rmqtt_metrics{item="messages.nonsubscribed.admin",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed.admin",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed.admin",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed.bridge",node="1"} 0
rmqtt_metrics{item="messages.nonsubscribed.bridge",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed.bridge",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed.bridge",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed.custom",node="1"} 0
rmqtt_metrics{item="messages.nonsubscribed.custom",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed.custom",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed.custom",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed.lastwill",node="1"} 0
rmqtt_metrics{item="messages.nonsubscribed.lastwill",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed.lastwill",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed.lastwill",node="all"} 0
rmqtt_metrics{item="messages.nonsubscribed.system",node="1"} 0
rmqtt_metrics{item="messages.nonsubscribed.system",node="2"} 0
rmqtt_metrics{item="messages.nonsubscribed.system",node="3"} 0
rmqtt_metrics{item="messages.nonsubscribed.system",node="all"} 0
rmqtt_metrics{item="messages.publish",node="1"} 0
rmqtt_metrics{item="messages.publish",node="2"} 0
rmqtt_metrics{item="messages.publish",node="3"} 0
rmqtt_metrics{item="messages.publish",node="all"} 0
rmqtt_metrics{item="messages.publish.admin",node="1"} 0
rmqtt_metrics{item="messages.publish.admin",node="2"} 0
rmqtt_metrics{item="messages.publish.admin",node="3"} 0
rmqtt_metrics{item="messages.publish.admin",node="all"} 0
rmqtt_metrics{item="messages.publish.bridge",node="1"} 0
rmqtt_metrics{item="messages.publish.bridge",node="2"} 0
rmqtt_metrics{item="messages.publish.bridge",node="3"} 0
rmqtt_metrics{item="messages.publish.bridge",node="all"} 0
rmqtt_metrics{item="messages.publish.custom",node="1"} 0
rmqtt_metrics{item="messages.publish.custom",node="2"} 0
rmqtt_metrics{item="messages.publish.custom",node="3"} 0
rmqtt_metrics{item="messages.publish.custom",node="all"} 0
rmqtt_metrics{item="messages.publish.lastwill",node="1"} 0
rmqtt_metrics{item="messages.publish.lastwill",node="2"} 0
rmqtt_metrics{item="messages.publish.lastwill",node="3"} 0
rmqtt_metrics{item="messages.publish.lastwill",node="all"} 0
rmqtt_metrics{item="messages.publish.system",node="1"} 0
rmqtt_metrics{item="messages.publish.system",node="2"} 0
rmqtt_metrics{item="messages.publish.system",node="3"} 0
rmqtt_metrics{item="messages.publish.system",node="all"} 0
rmqtt_metrics{item="session.created",node="1"} 1
rmqtt_metrics{item="session.created",node="2"} 2
rmqtt_metrics{item="session.created",node="3"} 1
rmqtt_metrics{item="session.created",node="all"} 4
rmqtt_metrics{item="session.resumed",node="1"} 0
rmqtt_metrics{item="session.resumed",node="2"} 0
rmqtt_metrics{item="session.resumed",node="3"} 0
rmqtt_metrics{item="session.resumed",node="all"} 0
rmqtt_metrics{item="session.subscribed",node="1"} 0
rmqtt_metrics{item="session.subscribed",node="2"} 0
rmqtt_metrics{item="session.subscribed",node="3"} 0
rmqtt_metrics{item="session.subscribed",node="all"} 0
rmqtt_metrics{item="session.terminated",node="1"} 0
rmqtt_metrics{item="session.terminated",node="2"} 0
rmqtt_metrics{item="session.terminated",node="3"} 0
rmqtt_metrics{item="session.terminated",node="all"} 0
rmqtt_metrics{item="session.unsubscribed",node="1"} 0
rmqtt_metrics{item="session.unsubscribed",node="2"} 0
rmqtt_metrics{item="session.unsubscribed",node="3"} 0
rmqtt_metrics{item="session.unsubscribed",node="all"} 0
# HELP rmqtt_nodes All nodes status
# TYPE rmqtt_nodes gauge
rmqtt_nodes{item="disk_free",node="1"} 46307106816
rmqtt_nodes{item="disk_free",node="2"} **rmqtt_nodes**

* item="disk_free",node="3": 1000896192512.
* item="disk_total",node="1": 1000896192512.
* item="load1",node="all": 0.
* item="memory_free",node="2": 34070585344.
* item="running",node="all": 3.

**rmqtt_stats**

* item="connections.count",node="2": 2.
* item="handshakings.max",node="all": 0. ```
rmqtt_stats{item="in_inflights.max",node="1"} 0
rmqtt_stats{item="in_inflights.max",node="2"} 0
rmqтт_stats{item="in_inflights.max",node="3"} 0
rmqtt_stats{item="in_inflights.max",node="all"} 0
rmqtt_stats{item="message_queues.count",node="1"} 0
rmqtt_stats{item="message_queues.count",node="2"} 0
rmqtt_stats{item="message_queues.count",node="3"} 0
rmqtt_stats{item="message_queues.count",node="all"} 0
rmqtt_stats{item="message_queues.max",node="1"} 0
rmqtt_stats{item="message_queues.max",node="2"} 0
rmqtt_stats{item="message_queues.max",node="3"} 0
rmqtt_stats{item="message_queues.max",node="all"} 0
rmqtt_stats{item="message_storages.count",node="1"} -1
rmqtt_stats{item="message_storages.count",node="2"} -1
rmqtt_stats{item="message_storages.count",node="3"} -1
rmqtt_stats{item="message_storages.count",node="all"} -3
rmqtt_stats{item="message_storages.max",node="1"} 0
rmqtt_stats{item="message_storages.max",node="2"} 0
rmqtt_stats{item="message_storages.max",node="3"} 0
rmqtt_stats{item="message_storages.max",node="all"} 0
rmqtt_stats{item="out_inflights.count",node="1"} 0
rmqtt_stats{item="out_inflights.count",node="2"} 0
rmqtt_stats{item="out_inflights.count",node="3"} 0
rmqtt_stats{item="out_inflights.count",node="all"} 0
rmqtt_stats{item="out_inflights.max",node="1"} 0
rmqtt_stats{item="out_inflights.max",node="2"} 0
rmqtt_stats{item="out_inflights.max",node="3"} 0
rmqtt_stats{item="out_inflights.max",node="all"} 0
rmqtt_stats{item="retaineds.count",node="1"} 0
rmqtt_stats{item="retaineds.count",node="2"} 0
rmqtt_stats{item="retaineds.count",node="3"} 0
rmqtt_stats{item="retaineds.count",node="all"} 0
rmqtt_stats{item="retaineds.max",node="1"} 0
rmqtt_stats{item="retaineds.max",node="2"} 0
rmqtt_stats{item="retaineds.max",node="3"} 0
rmqtt_stats{item="retaineds.max",node="all"} 0
rmqtt_stats{item="routes.count",node="1"} 0
rmqtt_stats{item="routes.count",node="2"} 0
rmqtt_stats{item="routes.count",node="3"} 0
rmqtt_stats{item="routes.count",node="all"} 0
rmqtt_stats{item="routes.max",node="1"} 0
rmqtt_stats{item="routes.max",node="2"} 0
rmqtt_stats{item="routes.max",node="3"} 0
rmqtt_stats{item="routes.max",node="all"} 0
rmqtt_stats{item="sessions.count",node="1"} 1
rmqtt_stats{item="sessions.count",node="2"} 2
rmqtt_stats{item="sessions.count",node="3"} 1
rmqtt_stats{item="sessions.count",node="all"} 4
rmqtt_stats{item="sessions.max",node="1"} 1
rmqtt_stats{item="sessions.max",node="2"} 2
rmqtt_stats{item="sessions.max",node="3"} 1
rmqtt_stats{item="sessions.max",node="all"} 4
rmqtt_stats{item="subscriptions.count",node="1"} 0
rmqtt_stats{item="subscriptions.count",node="2"} 0
rmqtt_stats{item="subscriptions.count",node="3"} 0
rmqtt_stats{item="subscriptions.count",node="all"} 0
rmqtt_stats{item="subscriptions.max",node="1"} 0
rmqtt_stats{item="subscriptions.max",node="2"} 0
rmqtt_stats{item="subscriptions.max",node="3"} 0
rmqtt_stats{item="subscriptions.max",node="all"} 0
rmqtt_stats{item="subscriptions_shared.count",node="1"} 0
rmqtt_stats{item="subscriptions_shared.count",node="2"} 0
rmqtt_stats{item="subscriptions_shared.count",node="3"} 0
rmqtt_stats{item="subscriptions_shared.count",node="all"} 0
rmqtt_stats{item="subscriptions_shared.max",node="1"} 0
rmqtt_stats{item="subscriptions_shared.max",node="2"} 0
rmqtt_stats{item="subscriptions_shared.max",node="3"} 0
rmqtt_stats{item="subscriptions_shared.max",node="all"} 0
rmqtt_stats{item="topics.count",node="1"} 0
rmqtt_stats{item="topics.count",node="2"} 0
rmqtt_stats{item="topics.count",node="3"} 0
rmqtt_stats{item="topics.count",node="all"} 0
rmqtt_stats{item="topics.max",node="1"} 0
rmqtt_stats{item="topics.max",node="2"} 0
rmqtt_stats{item="topics.max",node="3"} 0
rmqtt_stats{item="topics.max",node="all"} 0

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mqtt-rs-rmqtt.git
git@api.gitlife.ru:oschina-mirror/mqtt-rs-rmqtt.git
oschina-mirror
mqtt-rs-rmqtt
mqtt-rs-rmqtt
master