4.3.13. AppState

Описание

Метод возвращает информацию о зонде: описание, текущее состояние, потребление системных ресурсов.

Запрос

{
  "user_id":(number),
  "methods":[
    {
      "method":"AppState",
      "params":{
        "project_id":(number),
        "app_ids":' id1 | [id1,id2] | "*" '
      }
    }
  ]
}

где:

  • user_id — целое число, идентификатор пользователя;

  • project_id — целое число, идентификатор проекта пользователя;

  • app_ids — идентификаторы зондов, поле может задаваться в одном из следующих форматов:

    • id1 — целое число, идентификатор зонда,

    • [id1,id2] — массив целых чисел, идентификаторы зондов,

    • "*" — строка, символ «звездочки», запрос информации для всех запущенных зондов.

Ответ

{
  "reply":[
    {
      "method":"AppState",
      "result":[
        {
          "app_id":(number),
          "name":(string),
          "version":(string),
          "status":(string),
          "hostname":(string),
          "hostOS": (string),
          "cpu":[
            {
              "number":(string),
              "usedPercent":(number)
            }
          ],
          "memoryUsage":{
            "totalPhys":(number),
            "usedPhys":(number),
            "usedPercent":(number),
            "availPhys":(number)
          },
          "disk":{
            "total":(number),
            "available":(number)
          }
          "interfaces":[
            {
              "loopback":(boolean),
              "iface_name":(string),
              "MAC":(string),
              "iface_description":(string),
              "iface_friendly_name":(string),
              "iface_index":(number),
              "speed":(number),
              "ip":[
                {
                  "addr":(string),
                  "mask":(number)
                }
              ]
              "ipv6":[
                {
                  "addr":(string),
                  "mask":(number)
                }
              ]
            }
          ]
          "net_usage":[
            {
              "name":(string),
              "RX": (number),
              "TX": (number)
            }
          ]
        }
      ]
    }
  ]
}

где:

  • app_id — целое число, идентификатор зонда;

  • name — строка, имя зонда;

  • version — строка, версия зонда;

  • status — строка, состояние зонда:

    • active — зонд запущен,

    • not started — зонд не запущен.

  • hostname — строка, имя хоста, ярлык устройства в сети;

  • hostOS — строка, информация об операционной системе, на которой запускается зонд;

  • cpu — объект, нагрузка на каждое логическое ядро CPU и средняя загрузка по всем ядрам. Данные о нагрузке запрашиваются зондом у операционной системы. Состоит из следующих полей:

    • number — строка, идентификатор логического ядра CPU или значение Total для средней загрузки по всем ядрам,

    • usedPercent — вещественное число, загрузка логического ядра или средняя загрузка в процентах.

  • memoryUsage — объект, состояние оперативной памяти (RAM). Состоит из следующих полей:

    • totalPhys — целое число, объем оперативной памяти, установленной на сервере, в мегабайтах,

    • usedPhys — целое число, объем памяти, использованный всеми приложениями и ОС, в мегабайтах,

    • usedPercent — вещественное число, объем использованной памяти, в процентах,

    • availPhys — целое число, оценка объема памяти, доступной для запуска новых приложений без применения SWAP-памяти.

  • disk — объект, состояние раздела жесткого диска (HDD), на котором установлен зонд. Состоит из следующих полей:

    • total — целое число, объем раздела, на котором установлен зонд, в мегабайтах,

    • available — целое число, объем свободного пространства в разделе, на котором установлен зонд, в мегабайтах.

  • interfaces — объект, описание сетевых интерфейсов, доступных операционной системе. Состоит из следующих полей:

    • loopback — логический тип, указывающий, что он является локальным. Пакеты, отправленные через такой интерфейс, возвращаются обратно в систему, не покидая устройство.,

    • iface_name — строка, имя сетевого интерфейса,

    • MAC — строка, уникальный аппаратный идентификатор сетевой карты или сетевого интерфейса,

    • iface_description — строка, описание сетевого интерфейса, используется в Windows,

    • iface_friendly_name — строка, дружественное имя сетевого интерфейса, используется в Windows,

    • iface_index — целое число, индекс сетевого интерфейса для протокола IPv4,

    • iface_v6_index — целое число, индекс сетевого интерфейса для протокола IPv6,

    • speed — целое число, скорость сетевого интерфейса в Мбит/с,

    • ip — массив интерфейсов IPv4. Состоит из следующих полей:

      • addr — строка, адрес сетевого интерфейса,

      • mask — целое число, маска подсети.

    • ipv6 — массив интерфейсов IPv6. Состоит из следующих полей:

      • addr — строка, адрес сетевого интерфейса,

      • mask — целое число, маска подсети.

  • interfaces — объект, утилизация сетевых интерфейсов, доступных операционной системе. Состоит из следующих полей:

    • name — строка, имя сетевого интерфейса,

    • RX — вещественное число, объем принятых данных за 1 секунду, в Кбит/с,

    • TX — вещественное число, объем отправленных данных за 1 секунду, в Кбит/с.

Пример

Запрос утилитой cURL
#1. Запрос информации для одного зонда
curl http://172.16.1.41/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":1,"methods":[{"method":"AppState","params":{"project_id":2,"app_ids":1}}]}'

#2. Запрос информации для нескольких зондов
curl http://172.16.1.41/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":1,"methods":[{"method":"AppState","params":{"project_id":2,"app_ids":[1,2]}}]}'

#3. Запрос информации для всех запущенных зондов
curl http://172.16.1.41/ctrl_api/v1/json \
   -H "Content-Type: application/json" \
   --data '{"user_id":1,"methods":[{"method":"AppState","params":{"project_id":2,"app_ids":"*"}}]}'
Ответ на запрос из примера #1 для одного зонда
 {
   "reply": [
     {
       "method": "AppState",
       "result": [
         {
           "app_id": 1,
           "name": "Probe Ubuntu 20",
           "version": "1.1.0-dev (2025.08.05 06:07:13 UTC)",
           "status": "active",
           "hostname": "Test-P55-UD3L",
           "hostOS": "Linux 5.4.0-198-generic (x86_64), #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024",
           "cpu": [
             {
               "number": "0",
               "usedPercent": 3.92
             },
             {
               "number": "1",
               "usedPercent": 2.02
             },
             {
               "number": "2",
               "usedPercent": 0
             },
             {
               "number": "3",
               "usedPercent": 0
             },
             {
               "number": "4",
               "usedPercent": 0
             },
             {
               "number": "5",
               "usedPercent": 2
             },
             {
               "number": "6",
               "usedPercent": 1.98
             },
             {
               "number": "7",
               "usedPercent": 6.67
             },
             {
               "number": "Total",
               "usedPercent": 2.12
             }
           ],
           "memoryUsage": {
             "totalPhys": 7936,
             "usedPhys": 1473,
             "usedPercent": 19,
             "availPhys": 6463
         },
           "disk": {
             "total": 226487,
             "available": 73805
           },
           "interfaces": [
             {
               "loopback": false,
               "iface_name": "enp4s0",
               "MAC": "1c:6f:65:8c:d7:85",
               "iface_index": 2,
               "speed": 1000,
               "ipv6": [
                 {
                   "addr": "fe80::1e6f:65ff:fe8c:d785%enp4s0",
                   "mask": 64
                 }
              ]
             },
             {
               "loopback": false,
               "iface_name": "enp4s0.100",
               "MAC": "0e:1b:65:8c:d7:85",
               "iface_index": 2,
               "speed": 1000,
               "ip": [
                 {
                   "addr": "172.16.1.198",
                   "mask": 20
                 }
               ],
               "ipv6": [
                 {
                   "addr": "fe80::c1d:65ff:fe8c:d785%enp4s0.100",
                   "mask": 64
                 }
               ]
             },
             {
               "loopback": false,
               "iface_name": "enp4s0.101",
               "MAC": "1c:6d:65:8c:d7:85",
               "iface_index": 4,
               "speed": 1000,
               "ip": [
                 {
                   "addr": "10.10.30.150",
                   "mask": 24
                 }
               ],
               "ipv6": [
                 {
                   "addr": "fe80::1e6c:65ff:fe8c:d785%enp4s0.101",
                   "mask": 64
                 }
               ]
             },
             {
               "loopback": true,
               "iface_name": "lo",
               "MAC": "00:00:00:00:00:00",
               "iface_index": 1,
               "ip": [
                 {
                   "addr": "127.0.0.1",
                   "mask": 8
                 }
               ],
               "ipv6": [
                 {
                   "addr": "::1",
                   "mask": 128
                 }
               ]
             }
           ]
         }
       ]
     }
   ]
 }