Каталог MBean ERP

В таблицах указаны JMX-атрибуты, получающиеся из методов getXxx() или isXxx(). Все объекты находятся в домене BGCRM и регистрируются только при включённом server.jmx.pools.

Основные объекты запуска

Эти MBean регистрирует Server.initJmx() до компиляции динамического кода и запуска подсистем.

Приложение

ObjectName Атрибут Содержание

type=App

SessionsCount

Количество пользовательских сессий

UsersCount

Количество уникальных вошедших пользователей, у которых есть сессии

Пулы соединений с БД

ObjectName Атрибуты Содержание

type=ConnectionPool,name=master

Active, MaxActive, Idle, MaxIdle

Основной пул ERP

type=ConnectionPool,name=slave-<slaveId>

Active, MaxActive, Idle, MaxIdle

Пул каждой настроенной slave-базы

type=ConnectionPool,name=bill-<billingId>

Active, MaxActive, Idle, MaxIdle

Пул каждого биллинга из DBInfoManager

Если чтение показателей пула завершается BGException, реализация основного пула печатает stack trace и возвращает -1.

Состояние реплик

ObjectName Атрибут Содержание

type=SlaveStatus,name=slave-<slaveId>

NotBehind

true, если ERP не считает реплику отстающей от master

Available

true, если реплика не помечена недоступной после ошибки подключения

Это внутреннее состояние ConnectionPool, которое обновляют проверки доступности и отставания. Значение не является прямым результатом SHOW SLAVE STATUS в момент чтения атрибута.

Elasticsearch

ObjectName Атрибут Содержание

type=ElasticCache,name=ElasticCacheMetrics

Rows

Всего строк в customer_elastic_cache

Errors

Строки с ошибкой синхронизации

NotCached

Строки, ещё не записанные в Elasticsearch

Статистика загружается через соединение ERP_SLAVE полным запросом по таблице и кешируется внутри MBean. TTL задаёт server.jmx.elasticcache.ttl.sec, по умолчанию 300 секунд. Первый запрос после истечения TTL может быть дорогим.

WebSocket-сессии

Эти объекты появляются при первой инициализации соответствующего Kotlin object или базового WebSocket-класса.

ObjectName Атрибуты Содержание

type=WebSocketSession,name=WebSocketAllActiveSessions,description=All sessions active web socket

CountSessions

Все WebSocket-сессии, зарегистрированные через BaseWebSocket

type=WebSocketSession,name=WizardProcessWebSocketActiveSessions,description=Sessions active web socket wizard process

CountSessions, CountWizardProcesses

Сессии мастеров и количество wizard ID

type=WebSocketSession,name=BpmnProcessWebSocketActiveSessions,description=Sessions active web socket bpmn process

CountSessions, CountBPMNProcesses

Сессии карточек BPMN-процессов и количество process ID

type=WebSocketSession,name=BpmnProcessWebSocketActiveSessions,description=Sessions active web socket bpmn process scheme

CountSessions, CountBPMNProcesses

Сессии редактора BPMN-схем и количество ID схем

У двух BPMN MBean совпадают type и name, но различается description, поэтому оба объекта могут существовать одновременно.

Компоненты API-клиентов

ApiClientComponentFactory регистрирует объект лениво, когда включённый компонент впервые запрашивается. Общий шаблон:

BGCRM:type=<componentType>,name=api-<componentKey>,description=<config.name или componentKey>

При изменении конфигурации компонент и его MBean пересоздаются под тем же именем.

componentType Атрибуты Содержание

ConnectionPool

Active, MaxActive, Idle, MaxIdle

Соединения OkHttp. MaxActive берётся из maxRequests, MaxIdle — из настройки idle

WorkerPool

MaxWorkers, ActiveWorkers, QueuedWorkers

Лимит, выполняемые и ожидающие вызовы OkHttp Dispatcher

RateLimiter

AvailablePermissions, NumberOfWaitingThreads

Текущее состояние Resilience4j RateLimiter

CircuitBreaker

State, FailureRate, NumberOfBufferedCalls, NumberOfSlowCalls, NumberOfFailedCalls, SlowCallRate, NumberOfNotPermittedCalls, NumberOfSlowSuccessfulCalls, NumberOfSuccessfulCalls

Метрики Resilience4j CircuitBreaker. State публикуется числом state.order, а не текстовым именем состояния

Тип ConnectionPool общий с пулами БД, но API-объекты отличаются префиксом name=api-…​ и наличием description.

Конструктор интеграций

ClientEngineFactory пытается зарегистрировать:

BGCRM:type=ClientEngineFactory,name=ClientEngineFactoryCaches,description=Caches ClientEngineFactory

Планируемые атрибуты:

  • CountHttpClients — число ключей кеша HTTP-клиентов;

  • CountSchemas — число схем в кеширующем загрузчике.

Реализация называется ClientEngineFactoryCaches, а интерфейс — ClientEngineFactoryCachesMbean. Для Standard MBean требуется суффикс с точным регистром MBean. Пока интерфейс не переименован, объект не следует считать доступным: MBeanServer может отклонить его как NotCompliantMBeanException.

Что не входит в каталог

Platform MBeanServer также содержит стандартные домены JVM, Tomcat, библиотек и подключённых javaagent-ов. Они не регистрируются MBeanHandler, не управляются server.jmx.pools и не являются контрактом bgcrm.