Мониторинг системы

Запросы

HTTP verb Endpoint Описание

GET

/api/monitor/v1/system/state

Состояние системы

GET

/api/monitor/v1/system/node

Состояние нод системы

GET

/api/monitor/v1/system/keys

Список стратегий анализа

GET

/api/monitor/v1/system/sites

Сайты системы

GET

/api/monitor/v1/system/nodes

Ноды системы

GET

/api/monitor/v1/system/roles

Роли системы

GET

/api/monitor/v1/system/domains

Обслуживание доменов на сайтах

GET

/api/monitor/v1/system/version

Версия продукта

Для всех запросов:
Тип домена: мастер

Состояние системы

Сбор информации об отклонениях от корректного поведения системы.

Запрос

Table 1. Параметры запроса
Спецификация Описание

Имя: level
Тип: int

Уровень детализации. Применяется только в случае отсутствия keys. Возможные значения:

  • 0 – Нормальный. (по умолчанию)

  • 1 – Эвристический.

  • 2 – Файлы.

  • 3 – Полный.

Имя: keys
Тип: str

Стратегии анализа системы. Список ключей через разделитель ',' или ';'. Описание ключей

Имя: timeout
Тип: int

Таймаут на ожидание выполнения анализа системы в мс. По умолчанию вычисляется по данным из стратегий сбора.

Имя: full
Тип: bool

Возврат всех ключей, при активации будут отфильтрованы ключи с пустым значением. По умолчанию false.

Пример запроса
GET /api/monitor/v1/system/state HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": {
            {
              "unavailable_sites": [
                "slave2"
              ],
              "unavailable_servers": [
                {
                  "site": "central",
                  "servers": [
                    "192.168.0.123",
                    "192.168.0.127"
                  ]
                }
              ],
              "inactive_nodes": [
                {
                  "site": "central",
                  "nodes": [
                    "lwm5ws1@192.168.0.127",
                    "lwmrpco32@192.168.0.123"
                  ]
                }
              ],
              "cpu_usage": [
                {
                  "site": "central",
                  "servers": [
                    {
                      "server": "192.168.0.35",
                      "busy_percent": 52.49,
                      "rup_load_avg1": 5.76,
                      "rup_load_avg5": 5.45,
                      "rup_load_avg15": 6.54,
                      "cpu_count": 4
                    }
                  ]
                }
              ]
            }
        }
}
Table 2. Описание ключей
Название Описание

level = 0

unavailable_sites

Недоступные сайты.

unavailable_servers

Недоступные серверы.

inactive_nodes

Неактивные ноды.

timeout_nodes

Таймаут сбора информации с ноды.

current_time

Текущее время отличается на разных серверах более чем на 1 секунду.

disk_space

Недостаточно места на диске на сервере.
Анализируется размер на рабочем диске (место размещения каталогов с ротационными данными - лог-журналы, raw-записи, микшированные записи, данные объектной распределенной БД). Если свободного места на диске меньше 10 ГБ, то выдается сообщение 'free_mb' с указанием доступного места.
Дополнительно анализируются все доступные контейнеру разделы. На каждом из них оценивается свободное место (порог 10 ГБ) и процент свободных inodes от общего количества в файловой системе раздела (порог 40%). Выводятся данные по тем разделам, исходный полный размер которых более 1 ГБ и которые не являются 'tempfs'. Ключи 'warn_free_disk_space', 'warn_free_disk_inodes'

mem_usage

Недостаточно свободной оперативной памяти на сервере.
Анализируется объем доступной памяти. Предупреждение выводится, если объем свободной памяти (включая Cached и Buffers) менее 200 МБ, либо если объем выделенной памяти (исключаяя Cached и Buffers) более 80%.

cpu_usage

Превышение загрузки CPU.
Анализируются показатели avg1 и avg5. Предупреждение выводится при превышении любым из них значения, равного количеству ядер.

config_diffs

Конфигурация отличается на нодах.

basic_roles_not_found

Отсутствуют базовые микросервисы на сайте.

fsync_roles_not_found

Не найден экземпляр микросервиса fsync.

mgc_mg_connects

Количество подключенных медиашлюзов 'mg' к контроллеру 'mgc' не совпадает с количеством настроенных в конфигурации.

assembly_diffs

Отличается информация о версии продукта (assembly.info) на нодах.

global_sync

Отличаются глобальные имена на сайтах.

unavailable_dc_domains

Недоступные домены на нодах.

node_startup

Нода запущена менее 60 секунд назад.

role_startup

Экземпляр микросервиса запущен менее 60 секунд назад, либо возникла ошибка при запуске.

role_state

Состояния незапущенных микросервисов на нодах.
Здесь же отражаются специфические предупреждения от приложений:

* 'mg' - информация о зафиксированных сбоях в работе подключенных процессов медиашлюза: внеплановый перезапуск, вывод из сервиса на основании ошибок и таймаутов в результате запросов.
* 'mware' - информация об ошибках в процессе создания резервных копий БД и каталога :SYNC (в случае настройки режима в конфигурации).

distributed_apps

Не запущенные микросервисы Active-Passive на сайте.

unavailable_global_names

Недоступные глобальные имена сервисов в нодах.

roleapps

Информация о пользовательских приложениях, ошибки установки или процесс установки.

connects

Присутствуют кросссайтовые коннекты между нодами.

certificate

Ошибки и предупреждения по SSL сертификатам, используемым в микросервисах. Отражается информация только о сертификатах, загруженных на диск и указанных в параметрах микросервисов 'ws', 'sg' и 'esg' в конфигурации.

ext_svcscript

Проектные предупреждения, выданные по результатам выполнения специального служебного сценария. Код сценария задается параметром system_state_options.svc_script_code в настройках мастер домена.

level = 1 (включая level 0)

version_diffs

Суммарный hash бинарных файлов (*.beam) приложений платформы их зависимостей и erlang отличается на серверах.

version_files_diffs

Суммарный hash бинарных файлов (*.beam) платформы отличается на серверах.

level = 2 (включая level 0)

version_diffs

Суммарный hash бинарных файлов (*.beam) приложений платформы их зависимостей и erlang отличается на серверах.

version_all_files_diffs

Суммарный hash всех файлов платформы отличается на серверах.

Состояние нод системы

Запрос

Table 3. Параметры запроса
Спецификация Описание

Имя: node
Тип: str

Нода по которой необходимо собрать данные. Возможные значения:

  • all – все ноды.

  • <node_name>@<ip_addr> – имя ноды.

Имя: level
Тип: int

Уровень детализации. Применяется только в случае отсутствия keys. Возможные значения:

  • 0 – Нормальный. (по умолчанию)

  • 1 – Эвристический.

  • 2 – Файлы.

  • 3 – Полный.

Имя: keys
Тип: str

Стратегии анализа ноды. Список ключей через разделитель ',' или ';'. Описание ключей

Имя: roles
Тип: str

Возвращать только указанные микросервисы в ноде(ах). Список микросервисов через разделитель ',' или ';'.

Пример запроса
GET /api/monitor/v1/system/node?node=b2bua1@192.168.0.35 HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
"resultcode": 0,
"resultmsg": "OK",
"data": [
{
"site": "central",
"nodes": [
{
"node": "b2bua1@192.168.0.35",
"available": true,
"parentnode": "testserv@192.168.0.35",
"start_utc": "2019-10-21T08:02:23.38Z",
"now_utc": "2019-10-24T13:05:37.01Z",
"is_open": false,
"config_hash": 104521630,
"globals_hash": false,
"eaddr": "192.168.0.35",
"ifaces": [
"192.168.0.35",
"172.17.0.1"
],
"cpu": {
"busy": 52.49346178074708,
"nonbusy": 47.50653821925292,
"avg1": 9.37109375,
"avg5": 7.609375,
"avg15": 6.12890625,
"cpu_count": 4
},
"mem": {
"total": 33599832064,
"allocated": 32505409536,
"free": [
"!tuple!",
"free_memory",
1071202304
],
"cached": [
"!tuple!",
"cached_memory",
10312015872
],
"buffers": [
"!tuple!",
"buffered_memory",
1033371648
]
},
"disk_space": 31896128,
"roleapps": false,
"versions": {
"assembly_date": "2018-05-31T07:26:28.380Z",
"product": "2019.4.16-nightly",
"product_name": "era",
"era": "2021.4.16",
"rtx": "v3.2.0",
"default_solution": "era",
"fe-autoprovision": "v.0.0.1",
"fe-calls-statistic": "v.0.2.0",
"fe-data-manager": "v.0.4.0",
"fe-monitor": "v.0.2.0",
"fe-reporter": "v.0.1.1",
"fe-root": "v.0.0.2",
"fe-script-editor": "v.0.3.0",
"fe-selector": "v.0.2.1"
},
"connected": [
"testserv@192.168.0.35",
"statestore2@192.168.0.35",
"callstorage1@192.168.0.35"
],
"roles": [
{
"role": "environment",
"is_running": true,
"boot_state": {
"result": "wait_for_boot",
"reason": "undefined",
"utc": "undefined"
},
"app_type": "basic",
"state": "ok"
},
{
"role": "trace",
"is_running": true,
"boot_state": {
"result": "wait_for_boot",
"reason": "undefined",
"utc": "undefined"
},
"app_type": "basic",
"state": "ok"
},
{
"role": "b2bua",
"is_running": true,
"boot_state": {
"result": "ok",
"reason": "OK",
"utc": "2019-10-21T08:02:25.68Z"
},
"app_type": "sip",
"state": "ok"
}
]
}
]
}
]
}
Table 4. Описание ключей
Название Описание

level=0

node

Полное имя ноды.

available

Доступность ноды (проходит ли вызов метода с ноды сборщика статистики).

is_open

Открытая ли нода.

start_utc

Время старта ноды в UTC.

now_utc

Текущее время на ноде в UTC.

config_hash

Hash конфигурации на ноде.

connected

Список подключенных нод.

cpu

Показатели загрузки CPU на сервере с нодой.

disk_space

Свободное место на диске сервера в KB.

eaddr

Адрес на котором поднята нода.

globals_hash

Hash глобальных имен зарегестированных на ноде.

ifaces

Интерфейсы на сервере.

mem

Показатели загрузки оперативной памяти на сервере с нодой.

parentnode

Родительская нода (ServerShell).

roleapps

Информация о пользовательских приложениях либо false в случае отсутствия обслуживания на ноде.

roles

Список микросервисов, обслуживаемых на ноде.

versions

Версия продукта на сервере.

level=1 (включая level=0)

sourcecode_hash

Суммарный hash бинарных файлов (*.beam) приложений платформы их зависимостей и erlang на сервере.

level=2 (включая level=1)

sourcecode_data_beam

Суммарный hash бинарных файлов (*.beam) платформы на сервере.

level=3 (включая level=2)

sourcecode_data_all

Суммарный hash всех файлов платформы на сервере.

Список стратегий анализа

Запрос

Table 5. Параметры запроса
Спецификация Описание

Имя: mode
Тип: str

Тип стратегий анализа. Возможные значения:

  • state – стратегии состояния системы.

  • node – стратегии состояния ноды.

Имя: full
Тип: bool

Отображать системные стратегии. По умолчанию false.

Пример запроса
GET /api/monitor/v1/system/keys?mode=node HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": [
    "available",
    "config_hash",
    "connected",
    "cpu",
    "disk_space",
    "eaddr",
    "globals_hash",
    "ifaces",
    "is_open",
    "mem",
    "node",
    "now_utc",
    "parentnode",
    "roleapps",
    "roles",
    "sourcecode_data_all",
    "sourcecode_hash",
    "start_utc",
    "versions"
  ]
}

Сайты системы

Запрос

Пример запроса
GET /api/monitor/v1/system/sites HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": [
    "central",
    "slave2"
  ]
}

Ноды системы

Распределение нод по серверам на сайтах.

Запрос

Пример запроса
GET /api/monitor/v1/system/nodes HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": [
    {
      "site": "central",
      "servers": [
        {
          "server": "192.168.0.35",
          "nodes": [
            "b2bua1@192.168.0.35",
            "bgmg1@192.168.0.35"
          ]
        },
        {
          "server": "192.168.0.123",
          "nodes": [
            "lwmic2@192.168.0.123",
            "lwmrpco32@192.168.0.123",
            "lwmws1lwmgate32@192.168.0.123"
          ]
        }
      ]
    }
  ]
}

Роли системы

Роли (в том числе служебные) системы распределенные по нодам с указанием сайта.

Запрос

Table 6. Параметры запроса
Спецификация Описание

Имя: opts
Тип: bool

Отображение параметров микросервисов. По умолчанию false.

Пример запроса
GET /api/monitor/v1/system/roles HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": [
    {
      "site": "central",
      "nodes": [
        {
          "node": "b2bua1@192.168.0.35",
          "roles": ["b2bua"]
        },
        {
          "node": "bgmg1@192.168.0.35",
          "roles": ["mg"]
        },
        {
          "node": "callstorage1@192.168.0.35",
          "roles": ["mnesia","callstore"]
        }
      ]
    }
  ]
}

Обслуживание доменов на сайтах

Запрос

Пример запроса
GET /api/monitor/v1/system/domains HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
  "resultcode": 0,
  "resultmsg": "OK",
  "data": [
    {
      "domain": "ceceron.ru",
      "sites": ["central"]
    },
    {
      "domain": "ak.ceceron.ru",
      "sites": ["central"]
    },
    {
      "domain": "mmak.ceceron.ru",
      "sites": ["central"]
    },
    {
      "domain": "test.ceceron.ru",
      "sites": ["central","slave2"]
    },
    {
      "domain": "w.ceceron.ru",
      "sites": ["central"]
    }
  ]
}

Версия продукта

Запрос

Пример запроса
GET /api/monitor/v1/system/version HTTP/1.1

Ответ

Пример ответа
HTTP/1.1 200 OK

{
"resultcode": 0,
"resultmsg": "OK",
"data": {
"assembly_date": "2019-11-26T19:51:43.332Z",
"product": "era",
"projects": [
{
"branch": "develop",
"commitid": "ba102bee006b54cac8a3d4ef591f88fafe0be574",
"name": "era",
"version": "2020.11.26-nightly-build.105"
},
{
"commitid": "ecb12af3336dc15c594351cf7c9e99c95d715824",
"name": "era_assets",
"tag": "v1.8.0",
"version": "1.8.0"
},
{
"commitid": "3d39ae33036df4ee5f8d3f1ab43bcddce477a7fe",
"name": "rtx_assets",
"tag": "v3.9.0",
"version": "3.9.0"
},
{
"branch": "develop",
"commitid": "eade2bb358a0e3d8b78629f07f8e28c1e761f018",
"name": "rtx",
"version": "2019.11.26-nightly-build.105"
},
{
"branch": "master",
"commitid": "69ba462b699d18bda820b298c0f0e0fdb14e8ad0",
"name": "r_assets_www",
"version": "2019.11.26-nightly-build.105"
},
{
"branch": "develop",
"commitid": "59a61f6affa592aaa19795d2ae3e4e57ccba479b",
"name": "app-configuration",
"version": "2019.11.26-nightly-build.105"
}
],
"version": "2019.11.26-nightly-build.105"
}
}
Table 7. Описание ключей
Название Описание

product

Название продукта

version

Версия продукта.

assembly_date

Дата сборки продукта.

projects

Проекты входящие в состав продукта.

projects.name

Имя проекта.

projects.version

Версия проекта.

projects.branch

Ветка в репозитории с которого собран продукт.

projects.tag

Тэг в репозитории с которого собран продукт.

projects.commitid

Идентификатор коммита в репозитории с которого собран продукт.