Метрики
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Движок процессов отправляет runtime-метрики в базу данных, что помогает делать выводы об использовании, нагрузке и производительности Camunda 7. Метрики записываются в таблицы базы данных ACT_RU_METER_LOG и ACT_RU_TASK_METER_LOG. Отдельные записи метрик в ACT_RU_METER_LOG состоят из идентификатора метрики, значения в виде натурального числа в диапазоне Java long, которое метрика приняла за определенный интервал времени, и имени, идентифицирующего источник метрики. Записи task-метрик в ACT_RU_TASK_METER_LOG включают псевдонимизированное значение assignee фиксированной длины и момент времени, когда оно было назначено. По умолчанию отправляется набор встроенных метрик.
Встроенные метрики
В следующей таблице описаны встроенные метрики. Идентификаторы всех встроенных метрик доступны как константы класса {{< javadocref page="org/camunda/bpm/engine/management/Metrics.html" text="io.openbpm.bpm.engine.management.Metrics" >}}.
| Категория | Идентификатор | Описание |
|---|---|---|
Выполнение BPMN |
root-process-instance-start* |
Количество запущенных выполнений корневых экземпляров процесса. Это также известно как Process Instances (PI). Корневой экземпляр процесса не имеет родительского экземпляра процесса, то есть это выполнение верхнего уровня. |
activity-instance-start* |
Количество запущенных экземпляров flow node (экземпляров активностей) (FNI). |
|
activity-instance-end |
Количество завершенных экземпляров flow node (экземпляров активностей). |
|
Выполнение DMN |
executed-decision-instances* |
Количество вычисленных экземпляров решений (DI). Экземпляр решения - это таблица решений DMN или DMN Literal Expression. |
executed-decision-elements* |
Количество элементов решения, выполненных при вычислении таблиц решений DMN. Для одной таблицы это рассчитывается как количество условий, умноженное на количество правил. |
|
Job Executor |
job-successful |
Количество job, успешно выполненных. |
job-failed |
Количество job, выполнение которых завершилось ошибкой и которые были отправлены на повторную попытку. Учитывается каждая неудачная попытка выполнения job. |
|
job-acquisition-attempt |
Количество выполненных циклов получения job. |
|
job-acquired-success |
Количество job, которые были получены и успешно заблокированы для выполнения. |
|
job-acquired-failure |
Количество job, которые были получены, но не могли быть заблокированы для выполнения из-за того, что другой job executor параллельно заблокировал/выполнял эти job. |
|
job-execution-rejected |
Количество успешно полученных job, отправленных на выполнение, но отклоненных из-за насыщения ресурсов выполнения. Это признак того, что очередь job пула потоков выполнения заполнена. |
|
job-locked-exclusive |
Количество exclusive job, которые немедленно блокируются и выполняются. |
|
Task-метрики |
unique-task-workers* |
Количество пользователей задач (TU), которые выступали assignee. |
Очистка истории |
history-cleanup-removed-process-instances |
Количество экземпляров процессов, удаленных очисткой истории. |
history-cleanup-removed-case-instances |
Количество экземпляров case, удаленных очисткой истории. |
|
history-cleanup-removed-decision-instances |
Количество экземпляров решений, удаленных очисткой истории. |
|
history-cleanup-removed-batch-operations |
Количество batch-операций, удаленных очисткой истории. |
|
history-cleanup-removed-task-metrics |
Количество task-метрик, удаленных очисткой истории. |
*Некоторые enterprise-соглашения требуют ежегодной отчетности по части метрик. Сохраняйте эти метрики как минимум 18 месяцев.
Запросы
Метрики можно запрашивать через {{< javadocref page="org/camunda/bpm/engine/management/MetricsQuery.html" text="MetricsQuery" >}}, предоставляемый ManagementService. Например, следующий запрос получает количество всех запущенных экземпляров активностей за всю историю отчетности:
long numCompletedActivityInstances = managementService
.createMetricsQuery()
.name(Metrics.ACTIVTY_INSTANCE_START)
.sum();
Запрос метрик предоставляет фильтры #startDate(Date date) и #endDate(Date date), чтобы ограничить собранные метрики определенным интервалом времени. Кроме того, с помощью фильтра #reporter(String reporterId) можно ограничить результаты метриками, собранными конкретным репортером. Эта опция может быть полезна, когда к одной базе данных подключено более одного движка, например в кластерной конфигурации.
Task-метрики можно запрашивать методом getUniqueTaskWorkerCount, предоставляемым ManagementService. Этот метод принимает необязательные значения Date для startTime и endTime, чтобы ограничить метрику определенным интервалом времени. Например, следующее выражение получает количество всех уникальных task worker на текущий момент:
long numUniqueTaskWorkers = managementService.getUniqueTaskWorkerCount(null, null);
Конфигурация
Репортер метрик
Движок процессов сбрасывает накопленные метрики в runtime-таблицы базы данных с интервалом 15 минут. Поведение отчетности метрик можно изменить, заменив экземпляр dbMetricsReporter в конфигурации движка процессов. Например, чтобы изменить интервал отчетности, можно использовать plugin движка процессов, который заменяет репортер:
public class MetricsConfigurationPlugin implements ProcessEnginePlugin {
public void preInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
}
public void postInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
DbMetricsReporter metricsReporter = new DbMetricsReporter(processEngineConfiguration.getMetricsRegistry(),
processEngineConfiguration.getCommandExecutorTxRequired());
metricsReporter.setReportingIntervalInSeconds(5);
processEngineConfiguration.setDbMetricsReporter(metricsReporter);
}
public void postProcessEngineBuild(ProcessEngine processEngine) {
}
}
|
Записи task-метрик создаются при каждом назначении пользовательской задачи. Это поведение нельзя изменить, и оно не относится к зоне ответственности репортера метрик. |
Идентификатор репортера
Метрики отправляются с идентификатором источника отчетности. Этот идентификатор позволяет привязывать
отчеты к отдельным экземплярам движка при выполнении запроса метрик. Например, в кластере метрики
нагрузки можно соотнести с отдельными узлами кластера. По умолчанию движок процессов генерирует
идентификатор репортера как <local IP>$<engine name>. Генерацию можно настроить, реализовав
интерфейс {{< javadocref page="org/camunda/bpm/engine/impl/history/event/HostnameProvider.html" text="io.openbpm.bpm.engine.impl.history.event.HostnameProvider" >}}
и установив свойство движка hostnameProvider в экземпляр этого класса.
|
Интерфейс
{{< javadocref page="org/camunda/bpm/engine/impl/metrics/MetricsReporterIdProvider.html" text="io.openbpm.bpm.engine.impl.metrics.MetricsReporterIdProvider" >}}
и соответствующее свойство движка |
Отключение отчетности
По умолчанию отправляются все встроенные метрики. Для конфигурации через XML-файл (например, standalone.xml или bpm-platform.xml) вы можете отключить отчетность, добавив свойства:
<property name="metricsEnabled">false</property>
<property name="taskMetricsEnabled">false</property>
Если вы напрямую используете Java API, можно отключить отчетность метрик с помощью флагов конфигурации движка isMetricsEnabled и isTaskMetricsEnabled, установив их в false.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org