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_jobs - (Необязательно, логическое значение) [7.10] Устарело в версии 7.10. Используйте
allow_no_matchвместо этого. -
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 - (целое) Общее количество полей в документах входных данных, отправленных задаче обнаружения аномалий. Это количество включает поля, не используемые в анализе. Однако следует учитывать, что при использовании datafeed, он извлекает только необходимые поля из документов, которые он получает, прежде чем отправлять их в задачу.
-
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 -
(целое) Количество документов входных данных, которым не хватает поля, которое задача обнаружения аномалий настроена анализировать. Документы входных данных с отсутствующими полями всё равно обрабатываются, так как есть возможность, что отсутствуют не все поля.
Если вы используете datafeeds или отправляете данные в задачу в формате JSON, высокое значение
missing_field_countчасто не является признаком проблем с данными. Это не обязательно повод для беспокойства.Значение
processed_record_countвключает это количество. -
out_of_order_timestamp_count - (целое) Количество документов входных данных, у которых метка времени предшествует началу текущего ведра обнаружения аномалий, с учётом временного запаздывания. Эта информация актуальна только при предоставлении данных задаче обнаружения аномалий с использованием API отправки данных. Эти документы с нарушением порядка отбрасываются, поскольку задачи требуют, чтобы временные ряды данных были в порядке возрастания по времени.
-
processed_field_count - Общее количество полей во всех обработанных документах. Только поля, указанные в конфигурации детектора, вносят вклад в это число. Метка времени не учитывается.
-
processed_record_count - (целое) Количество документов входных данных, обработанных задачей обнаружения аномалий. Это значение включает документы с отсутствующими полями, так как они всё равно анализируются. Если вы используете datafeeds и имеете агрегации в запросе поиска,
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. Если прогнозов нет, это свойство опущено. -
processing_time_ms - (объект) Время выполнения в миллисекундах для прогнозов, относящихся к этой задаче,
avg,min,maxиtotal. Если прогнозов нет, это свойство опущено. -
records - (объект) Количество документов
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конфигурации. -
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: Задача не завершилась успешно из-за ошибки. Эта ситуация может возникнуть из-за некорректных входных данных, фатальной ошибки во время анализа или внешнего взаимодействия, например, убийства процесса Linux-киллером OOM (out of memory). Если задача окончательно потерпела неудачу, она должна быть принудительно закрыта, а затем удалена. Если данные канала данных могут быть исправлены, задача может быть закрыта, а затем повторно открыта. -
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, этот код указывает на то, что по запросу нет ресурсов или есть только частичные совпадения с запросом.
Примеры
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/7.17/ml-get-job-stats.html