API получения статистики задач обнаружения аномалий
Получает информацию об использовании задач обнаружения аномалий.
Запрос
GET _ml/anomaly_detectors/<job_id>/_stats
GET _ml/anomaly_detectors/<job_id>,<job_id>/_stats
GET _ml/anomaly_detectors/_stats
GET _ml/anomaly_detectors/_all/_stats
Предварительные требования
Требуется привилегия кластера monitor_ml. Эта привилегия включена в встроенную роль machine_learning_user.
Описание
Этот API возвращает не более 10 000 задач.
Параметры пути
-
<job_id> - (Необязательный, строка) Идентификатор задачи обнаружения аномалий. Это может быть идентификатор задачи, имя группы или выражение с подстановкой. Вы можете получить статистику по нескольким задачам обнаружения аномалий в одном запросе API, используя имя группы, список задач через запятую или выражение с подстановкой. Вы можете получить статистику по всем задачам обнаружения аномалий, используя
_all, указав*в качестве идентификатора задачи или опуская идентификатор.
Параметры запроса
-
allow_no_match -
(Необязательный, булево) Указывает, что делать, когда запрос:
- Содержит выражения с подстановкой, и нет соответствующих задач.
- Содержит строку
_allили нет идентификаторов, и нет совпадений. - Содержит выражения с подстановкой, и есть только частичные совпадения.
Значение по умолчанию —
true, которое возвращает пустой массивjobs, когда нет совпадений, и подмножество результатов, когда совпадения частичные. Если этот параметр равенfalse, запрос возвращает код состояния404, когда нет совпадений или есть только частичные совпадения.
Тело ответа
API возвращает следующую информацию о ходе выполнения задачи:
-
assignment_explanation - (строка) Только для открытых задач обнаружения аномалий, содержит сообщения, относящиеся к выбору узла для выполнения задачи.
-
data_counts -
(объект) Объект, описывающий количество входных данных для задачи и количество связанных ошибок. Значения
data_countявляются кумулятивными на протяжении всего жизненного цикла задачи. Если снимок модели отменен или старые результаты удалены, счетчики задачи не сбрасываются.Свойства
data_counts-
bucket_count - (целое число) Количество результатов ведер, сгенерированных задачей.
-
earliest_record_timestamp - (дата) Отметка времени самого раннего входного документа в хронологическом порядке.
-
empty_bucket_count - (целое число) Количество ведер, которые не содержали данных. Если в ваших данных много пустых ведер, рассмотрите возможность увеличения
bucket_spanили использования функций, устойчивых к пробелам в данных, таких какmean,non_null_sumилиnon_zero_count. -
input_bytes - (целое число) Количество байтов входных данных, отправленных в задачу обнаружения аномалий.
-
input_field_count - (целое число) Общее количество полей во входных документах, отправленных в задачу обнаружения аномалий. Этот подсчет включает поля, которые не используются в анализе. Однако имейте в виду, что если вы используете источник данных, он извлекает только необходимые поля из извлеченных документов перед отправкой их в задачу.
-
input_record_count - (целое число) Количество входных документов, отправленных в задачу обнаружения аномалий.
-
invalid_date_count - (целое число) Количество входных документов с отсутствующим полем даты или датой, которую нельзя было разобрать.
-
job_id - (строка) Идентификатор задачи обнаружения аномалий.
-
last_data_time - (дата) Отметка времени последнего анализа данных по серверному времени.
-
latest_empty_bucket_timestamp - (дата) Отметка времени последнего ведра, которое не содержало данных.
-
latest_record_timestamp - (дата) Отметка времени последнего входного документа в хронологическом порядке.
-
latest_sparse_bucket_timestamp - (дата) Отметка времени последнего ведра, которое считалось разреженным.
-
log_time - (дата) Отметка времени
data_countsпо серверному времени. -
missing_field_count -
(целое число) Количество входных документов, которым недостает поля, которое задача обнаружения аномалий настроена анализировать. Входные документы с отсутствующими полями все равно обрабатываются, так как возможно, что отсутствуют не все поля.
Если вы используете источники данных или отправляете данные в задачу в формате JSON, высокое значение
missing_field_countчасто не является признаком проблем с данными. Это не обязательно повод для беспокойства.Значение
processed_record_countвключает этот подсчет. -
out_of_order_timestamp_count - (целое число) Количество входных документов, отметка времени которых хронологически предшествует началу текущего ведра задачи обнаружения аномалий, с учетом окна задержки. Эта информация применима только тогда, когда вы предоставляете данные задаче обнаружения аномалий с помощью API отправки данных в задачи. Эти документы с нарушенной последовательностью времени отбрасываются, так как задачи требуют, чтобы данные временных рядов были в порядке возрастания хронологического времени.
-
processed_field_count - Общее количество полей во всех документах, обработанных задачей обнаружения аномалий. В этот подсчет входят только те поля, которые указаны в объекте конфигурации детектора. Отметка времени в этот подсчет не включена.
-
processed_record_count - (целое число) Количество входных документов, обработанных задачей обнаружения аномалий. Это значение включает документы с отсутствующими полями, так как они все равно анализируются. Если вы используете источники данных и имеете агрегации в запросе поиска,
processed_record_count— это количество обработанных результатов агрегации, а не количество документов Elasticsearch. -
sparse_bucket_count - (целое число) Количество ведер, содержащих мало точек данных по сравнению с ожидаемым количеством точек данных. Если в ваших данных много разреженных ведер, рассмотрите использование более длинного
bucket_span.
-
-
deleting - (булево) Указывает, что процесс удаления задачи находится в процессе выполнения, но еще не завершен. Он сообщается только тогда, когда
true.
-
forecasts_stats -
(объект) Объект, предоставляющий статистическую информацию о прогнозах, относящихся к этой задаче. Некоторые статистические данные опускаются, если прогнозов не было сделано.
Если нет хотя бы одного прогноза, свойства
memory_bytes,records,processing_time_msиstatusопускаются.Свойства
forecasts_stats-
forecasted_jobs - (целое число) Значение
0указывает, что прогнозов для этой задачи нет. Значение1указывает, что прогнозы существуют. -
memory_bytes - (объект) Используемое
avg,min,maxиtotalпотребление памяти в байтах для прогнозов, связанных с этой задачей. Если прогнозов нет, это свойство опущено. -
records - (объект) Количество
avg,min,maxиtotalобработанных документов для прогнозов, связанных с этой задачей. Если прогнозов нет, это свойство опущено. -
processing_time_ms - (объект)
avg,min,maxиtotalвремя выполнения в миллисекундах для прогнозов, связанных с этой задачей. Если прогнозов нет, это свойство опущено. -
status - (объект) Количество прогнозов по их статусу. Например: {"finished" : 2, "started" : 1}. Если прогнозов нет, это свойство опущено.
-
total - (целое число) Количество доступных индивидуальных прогнозов для задачи. Значение
1или более указывает на существование прогнозов.
-
-
job_id - (строка) Идентификатор задачи обнаружения аномалий.
-
model_size_stats -
(объект) Объект, предоставляющий информацию о размерах и содержании модели.
Свойства
model_size_stats-
assignment_memory_basis -
(строка) Указывает, где найти требования к памяти, используемые для определения места выполнения задачи. Возможные значения:
-
model_memory_limit: Требования к памяти задачи рассчитываются на основе того, что память модели будет расти до значенияmodel_memory_limit, указанного вanalysis_limitsконфигурации. -
current_model_bytes: Требования к памяти задачи рассчитываются на основе того, что текущий размер памяти модели хорошо отражает её будущий размер. -
peak_model_bytes: Требования к памяти задачи рассчитываются на основе того, что пиковый размер памяти модели хорошо отражает будущий размер модели.
-
-
bucket_allocation_failures_count - (целое число) Количество ведер, для которых новые сущности в поступающих данных не были обработаны из-за недостаточной памяти модели. Эта ситуация также обозначается значением свойства
hard_limit: memory_status. -
categorized_doc_count - (целое число) Количество документов, у которых поле было классифицировано.
-
categorization_status -
(строка) Статус классификации для задачи. Содержит одно из следующих значений:
-
ok: Классификация выполняется приемлемо (или вообще не используется). -
warn: Классификация обнаруживает распределение категорий, которое предполагает, что входные данные неподходят для классификации. Проблемы могут заключаться в том, что существует только одна категория, более 90% категорий являются редкими, количество категорий больше 50% от количества классифицированных документов, нет часто встречающихся категорий или более 50% категорий являются устаревшими.
-
-
dead_category_count - (целое число) Количество категорий, созданных классификацией, которые больше никогда не будут присваиваться, потому что определение другой категории делает её надмножеством устаревшей категории. (Устаревшие категории являются побочным эффектом способа работы классификации без предварительного обучения.)
-
failed_category_count - (целое число) Количество раз, когда классификация хотела создать новую категорию, но не смогла, потому что задача достигла своего предела
model_memory_limit. Это счётчик не отслеживает конкретные категории, которые не удалось создать. Поэтому вы не можете использовать это значение для определения количества уникальных пропущенных категорий. -
frequent_category_count - (целое число) Количество категорий, которые совпадают более чем с 1% классифицированных документов.
-
job_id - (строка) Идентификатор задачи обнаружения аномалий.
-
log_time - (дата) Отметка времени
model_size_statsпо серверному времени. -
memory_status -
(строка) Статус математических моделей, который может иметь одно из следующих значений:
-
ok: Модели оставались ниже настроенного значения. -
soft_limit: Модели использовали более 60% от настроенного лимита памяти, и устаревшие неиспользуемые модели будут удалены, чтобы освободить место. Кроме того, в задачах классификации больше не будут храниться примеры категорий. -
hard_limit: Модели использовали больше места, чем настроенный лимит памяти. В результате не все входящие данные были обработаны.
-
-
model_bytes - (целое число) Количество байт памяти, используемой моделями. Это максимальное значение с момента последнего сохранения модели. Если задача закрыта, это значение указывает на последний размер.
-
model_bytes_exceeded - (целое число) Количество байтов, превышающих верхний предел использования памяти при последнем сбое выделения.
-
model_bytes_memory_limit - (целое число) Верхний предел использования памяти моделью, проверяемый при увеличении значений.
-
peak_model_bytes - (целое число) Пиковое количество байтов памяти, когда-либо используемых моделями.
-
rare_category_count - (целое число) Количество категорий, соответствующих только одному классифицированному документу.
-
result_type - (строка) Для внутреннего использования. Тип результата.
-
total_by_field_count - (целое число) Количество значений поля
by, проанализированных моделями. Это значение является кумулятивным для всех детекторов в задаче. -
total_category_count - (целое число) Количество созданных категорий классификацией.
-
total_over_field_count - (целое число) Количество значений поля
over, проанализированных моделями. Это значение является кумулятивным для всех детекторов в задаче. -
total_partition_field_count - (целое число) Количество значений поля
partition, проанализированных моделями. Это значение является кумулятивным для всех детекторов в задаче. -
timestamp - (дата) Отметка времени последней записи, когда были собраны статистические данные о модели.
-
-
node -
(объект) Содержит свойства узла, на котором выполняется задача. Эта информация доступна только для открытых задач.
Свойства
node-
attributes - (объект) Список атрибутов узла, таких как
ml.machine_memoryили настройкиml.max_open_jobs. -
ephemeral_id - (строка) Временный идентификатор узла.
-
id - (строка) Уникальный идентификатор узла.
-
name - (строка) Название узла.
-
transport_address - (строка) Хост и порт, где принимаются транспортные HTTP-соединения.
-
-
open_time - (строка) Только для открытых задач, время, в течение которого задача была открыта.
-
state -
(строка) Статус задачи обнаружения аномалий, который может быть одним из следующих значений:
-
closed: Задача успешно завершена, и её состояние модели сохранено. Задачу необходимо открыть перед приёмом дополнительных данных. -
closing: Действие закрытия задачи выполняется и ещё не завершено. Закрытая задача не может принимать дополнительные данные. -
failed: Задача не завершилась успешно из-за ошибки. Эта ситуация может возникнуть из-за некорректных входных данных, фатальной ошибки во время анализа или внешнего взаимодействия, например, завершения процесса операционной системой из-за недостатка памяти (OOM killer). Если задача окончательно потерпела неудачу, её необходимо принудительно закрыть и затем удалить. Если данные можно исправить, задачу можно закрыть и затем повторно открыть. -
opened: Задача доступна для получения и обработки данных. -
opening: Действие открытия задачи выполняется и ещё не завершено.
-
-
timing_stats -
(объект) Объект, предоставляющий статистическую информацию о временных аспектах этой задачи.
Свойства
timing_stats-
average_bucket_processing_time_ms - (двойное число) Среднее значение всех времен обработки ведер в миллисекундах.
-
bucket_count - (целое число) Количество обработанных ведер.
-
exponential_average_bucket_processing_time_ms - (двойное число) Экспоненциально-взвешенное скользящее среднее всех времен обработки ведер в миллисекундах.
-
exponential_average_bucket_processing_time_per_hour_ms - (двойное число) Экспоненциально-взвешенное скользящее среднее времен обработки ведер, рассчитанное за 1 час, в миллисекундах.
-
job_id - (строка) Идентификатор задачи обнаружения аномалий.
-
maximum_bucket_processing_time_ms - (двойное число) Максимальное значение среди всех времен обработки ведер в миллисекундах.
-
minimum_bucket_processing_time_ms - (двойное число) Минимальное значение среди всех времен обработки ведер в миллисекундах.
-
total_bucket_processing_time_ms - (двойное число) Сумма всех времен обработки ведер в миллисекундах.
-
Коды ответов
-
404(Отсутствующие ресурсы) - Если
allow_no_matchимеет значениеfalse, этот код указывает на то, что нет ресурсов, соответствующих запросу, или есть только частичное соответствие запросу.
Примеры
resp = client.ml.get_job_stats(
job_id="low_request_rate",
)
print(resp) response = client.ml.get_job_stats( job_id: 'low_request_rate' ) puts response
const response = await client.ml.getJobStats({
job_id: "low_request_rate",
});
console.log(response); GET _ml/anomaly_detectors/low_request_rate/_stats
API возвращает следующие результаты:
{
"count" : 1,
"jobs" : [
{
"job_id" : "low_request_rate",
"data_counts" : {
"job_id" : "low_request_rate",
"processed_record_count" : 1216,
"processed_field_count" : 1216,
"input_bytes" : 51678,
"input_field_count" : 1216,
"invalid_date_count" : 0,
"missing_field_count" : 0,
"out_of_order_timestamp_count" : 0,
"empty_bucket_count" : 242,
"sparse_bucket_count" : 0,
"bucket_count" : 1457,
"earliest_record_timestamp" : 1575172659612,
"latest_record_timestamp" : 1580417369440,
"last_data_time" : 1576017595046,
"latest_empty_bucket_timestamp" : 1580356800000,
"input_record_count" : 1216
},
"model_size_stats" : {
"job_id" : "low_request_rate",
"result_type" : "model_size_stats",
"model_bytes" : 41480,
"model_bytes_exceeded" : 0,
"model_bytes_memory_limit" : 10485760,
"total_by_field_count" : 3,
"total_over_field_count" : 0,
"total_partition_field_count" : 2,
"bucket_allocation_failures_count" : 0,
"memory_status" : "ok",
"categorized_doc_count" : 0,
"total_category_count" : 0,
"frequent_category_count" : 0,
"rare_category_count" : 0,
"dead_category_count" : 0,
"failed_category_count" : 0,
"categorization_status" : "ok",
"log_time" : 1576017596000,
"timestamp" : 1580410800000
},
"forecasts_stats" : {
"total" : 1,
"forecasted_jobs" : 1,
"memory_bytes" : {
"total" : 9179.0,
"min" : 9179.0,
"avg" : 9179.0,
"max" : 9179.0
},
"records" : {
"total" : 168.0,
"min" : 168.0,
"avg" : 168.0,
"max" : 168.0
},
"processing_time_ms" : {
"total" : 40.0,
"min" : 40.0,
"avg" : 40.0,
"max" : 40.0
},
"status" : {
"finished" : 1
}
},
"state" : "opened",
"node" : {
"id" : "7bmMXyWCRs-TuPfGJJ_yMw",
"name" : "node-0",
"ephemeral_id" : "hoXMLZB0RWKfR9UPPUCxXX",
"transport_address" : "127.0.0.1:9300",
"attributes" : {
"ml.machine_memory" : "17179869184",
"xpack.installed" : "true",
"ml.max_open_jobs" : "512"
}
},
"assignment_explanation" : "",
"open_time" : "13s",
"timing_stats" : {
"job_id" : "low_request_rate",
"bucket_count" : 1457,
"total_bucket_processing_time_ms" : 1094.000000000001,
"minimum_bucket_processing_time_ms" : 0.0,
"maximum_bucket_processing_time_ms" : 48.0,
"average_bucket_processing_time_ms" : 0.75085792724777,
"exponential_average_bucket_processing_time_ms" : 0.5571716855800993,
"exponential_average_bucket_processing_time_per_hour_ms" : 15.0
}
}
]
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/ml-get-job-stats.html