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

Запросы

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

Ошибки и предупреждения по TLS/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": "{product_name}",
            "era": "2021.4.16",
            "rtx": "v3.2.0",
            "default_solution": "{product_name}",
            "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": "{product_name}",
    "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

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