获取异常检测作业统计信息 API
编辑获取异常检测作业统计信息 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
- (对象) 与此作业相关的预测写入的
model_forecast
文档的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
:作业的内存需求是根据其模型内存将增长到其配置的analysis_limits
中指定的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
- (long) 分类试图创建新类别但由于作业已达到
model_memory_limit
而无法创建的次数。 此计数不跟踪哪些特定类别未创建。 因此,您无法使用此值来确定错过的唯一类别数量。 -
frequent_category_count
- (long) 与超过 1% 的分类文档匹配的类别数量。
-
job_id
- (字符串) 异常检测作业的标识符。
-
log_time
- (date)
model_size_stats
的时间戳,根据服务器时间。 -
memory_status
-
(string) 数学模型的状态,可以是以下值之一
-
ok
: 模型保持在配置值以下。 -
soft_limit
: 模型使用了超过 60% 的配置内存限制,并且将修剪旧的未使用模型以释放空间。 此外,在分类作业中,将不再存储任何其他类别示例。 -
hard_limit
: 模型使用的空间超过了配置的内存限制。 结果,并非所有传入数据都已处理。
-
-
model_bytes
- (long) 模型使用的内存字节数。 这是自上次持久化模型以来的最大值。 如果作业已关闭,则此值表示最新大小。
-
model_bytes_exceeded
- (long) 上次分配失败时内存使用量超过上限的字节数。
-
model_bytes_memory_limit
- (long) 模型内存使用量的上限,在增加值时检查。
-
peak_model_bytes
- (long) 模型使用的内存字节数的峰值。
-
rare_category_count
- (long) 仅与一个分类文档匹配的类别数量。
-
result_type
- (string) 用于内部使用。 结果类型。
-
total_by_field_count
- (long) 模型分析的
by
字段值的数量。 此值是作业中所有检测器的累积值。 -
total_category_count
- (long) 分类创建的类别数量。
-
total_over_field_count
- (long) 模型分析的
over
字段值的数量。 此值是作业中所有检测器的累积值。 -
total_partition_field_count
- (long) 模型分析的
partition
字段值的数量。 此值是作业中所有检测器的累积值。 -
timestamp
- (date) 收集模型统计信息的最后一个记录的时间戳。
-
-
node
-
(object) 包含运行作业的节点的属性。 此信息仅适用于打开的作业。
node
的属性-
attributes
- (object) 列出节点属性,例如
ml.machine_memory
或ml.max_open_jobs
设置。 -
ephemeral_id
- (string) 节点的短暂 ID。
-
id
- (string) 节点的唯一标识符。
-
name
- (string) 节点名称。
-
transport_address
- (string) 接受传输 HTTP 连接的主机和端口。
-
-
open_time
- (string) 仅适用于打开的作业,作业已打开的经过时间。
-
state
-
(string) 异常检测作业的状态,可以是以下值之一
-
closed
: 作业已成功完成,其模型状态已持久化。 作业必须先打开才能接受更多数据。 -
closing
: 作业关闭操作正在进行中,尚未完成。 关闭的作业无法接受更多数据。 -
failed
: 作业由于错误而未成功完成。 这种情况可能由于无效的输入数据、分析过程中发生的致命错误或外部交互(例如 Linux 内存不足 (OOM) 杀手进程杀死进程)而发生。 如果作业已不可逆转地失败,则必须强制关闭并删除。 如果数据馈送可以纠正,则可以关闭作业,然后重新打开。 -
opened
: 作业可用于接收和处理数据。 -
opening
: 作业打开操作正在进行中,尚未完成。
-
-
timing_stats
-
(object) 提供有关此作业的计时方面的统计信息的 对象。
timing_stats
的属性-
average_bucket_processing_time_ms
- (double) 所有桶处理时间的平均值,以毫秒为单位。
-
bucket_count
- (long) 处理的桶数。
-
exponential_average_bucket_processing_time_ms
- (double) 所有桶处理时间的指数移动平均值,以毫秒为单位。
-
exponential_average_bucket_processing_time_per_hour_ms
- (double) 在 1 小时时间窗口内计算的桶处理时间的指数加权移动平均值,以毫秒为单位。
-
job_id
- (字符串) 异常检测作业的标识符。
-
maximum_bucket_processing_time_ms
- (double) 所有桶处理时间中的最大值,以毫秒为单位。
-
minimum_bucket_processing_time_ms
- (double) 所有桶处理时间中的最小值,以毫秒为单位。
-
total_bucket_processing_time_ms
- (double) 所有桶处理时间的总和,以毫秒为单位。
-
响应代码edit
-
404
(缺少资源) - 如果
allow_no_match
为false
,则此代码表示没有与请求匹配的资源,或者请求仅部分匹配。
示例edit
response = client.ml.get_job_stats( job_id: 'low_request_rate' ) puts 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 } } ] }