cat异常检测器API

编辑

cat API仅供使用命令行或Kibana控制台的人员使用。它们适用于应用程序。对于应用程序使用,请使用获取异常检测作业统计信息API

返回有关异常检测作业的配置和使用信息。

请求

编辑

GET /_cat/ml/anomaly_detectors/<job_id>

GET /_cat/ml/anomaly_detectors

前提条件

编辑
  • 如果启用了Elasticsearch安全功能,则必须具有monitor_mlmonitormanage_mlmanage集群权限才能使用此API。请参阅安全权限机器学习安全权限

描述

编辑

此API最多返回10,000个作业。

有关异常检测的更多信息,请参阅查找异常

路径参数

编辑
<job_id>
(可选,字符串)异常检测作业的标识符。

查询参数

编辑
allow_no_match

(可选,布尔值)指定当请求

  • 包含通配符表达式且没有匹配的作业时该怎么做。
  • 包含_all字符串或没有标识符且没有匹配项时。
  • 包含通配符表达式且只有部分匹配时。

默认值为true,当没有匹配项时返回一个空的jobs数组,当有部分匹配项时返回结果子集。如果此参数为false,则当没有匹配项或只有部分匹配项时,请求返回404状态码。

bytes
(可选,字节大小单位)用于显示字节值的单位。
format
(可选,字符串)HTTP accept header的简短版本。有效值包括JSON、YAML等。
h

(可选,字符串)要显示的列名称的逗号分隔列表。

如果不指定要包含哪些列,则API返回默认列。如果显式指定一个或多个列,则只返回指定的列。

有效列为

assignment_explanationae
仅对于开放的异常检测作业,包含与选择运行作业的节点相关的消息。
buckets.countbcbucketsCount
(默认)作业生成的桶结果数。
buckets.time.exp_avgbteabucketsTimeExpAvg
所有桶处理时间的指数移动平均值,以毫秒为单位。
buckets.time.exp_avg_hourbteahbucketsTimeExpAvgHour
在1小时时间窗口内计算的桶处理时间的指数加权移动平均值,以毫秒为单位。
buckets.time.maxbtmaxbucketsTimeMax
所有桶处理时间中的最大值,以毫秒为单位。
buckets.time.minbtminbucketsTimeMin
所有桶处理时间中的最小值,以毫秒为单位。
buckets.time.totalbttbucketsTimeTotal
所有桶处理时间的总和,以毫秒为单位。
data.bucketsdbdataBuckets
已处理的桶数。
data.earliest_recordderdataEarliestRecord
最早按时间顺序输入文档的时间戳。
data.empty_bucketsdebdataEmptyBuckets
不包含任何数据的桶数。如果您的数据包含许多空桶,请考虑增加bucket_span或使用对数据间隙容忍的函数,例如meannon_null_sumnon_zero_count
data.input_bytesdibdataInputBytes
发布到异常检测作业的输入数据字节数。
data.input_fieldsdifdataInputFields
发布到异常检测作业的输入文档中的字段总数。此计数包括分析中未使用的字段。但是,请注意,如果您使用的是数据馈送,它会在将检索到的文档发布到作业之前仅提取所需的字段。
data.input_recordsdirdataInputRecords
发布到异常检测作业的输入文档数。
data.invalid_datesdiddataInvalidDates
缺少日期字段或无法解析的日期的输入文档数。
data.lastdldataLast
根据服务器时间,最后分析数据的的时间戳。
data.last_empty_bucketdlebdataLastEmptyBucket
不包含任何数据的最后一个桶的时间戳。
data.last_sparse_bucketdlsbdataLastSparseBucket
被认为是稀疏的最后一个桶的时间戳。
data.latest_recorddlrdataLatestRecord
最新按时间顺序输入文档的时间戳。
data.missing_fieldsdmfdataMissingFields

缺少异常检测作业配置为分析的字段的输入文档数。仍然会处理缺少字段的输入文档,因为并非所有字段都可能缺少。

如果您使用的是数据馈送或以JSON格式将数据发布到作业,则较高的missing_field_count通常并不表示数据问题。它不一定是令人担忧的原因。

data.out_of_order_timestampsdootdataOutOfOrderTimestamps
时间戳在当前异常检测桶开始时间之前(按延迟窗口偏移)的输入文档数。此信息仅在您使用发布数据API向异常检测作业提供数据时适用。这些乱序文档将被丢弃,因为作业需要按升序时间顺序排列的时间序列数据。
data.processed_fieldsdpfdataProcessedFields
异常检测作业已处理的所有文档中的字段总数。只有检测器配置对象中指定的字段才计入此计数。时间戳不包含在此计数中。
data.processed_recordsdprdataProcessedRecords
(默认)异常检测作业已处理的输入文档数。此值包括缺少字段的文档,因为它们仍然会被分析。如果您使用数据馈送并在搜索查询中进行聚合,则processed_record_count是已处理的聚合结果数,而不是Elasticsearch文档数。
data.sparse_bucketsdsbdataSparseBuckets
与预期数据点数相比,包含少量数据点的桶数。如果您的数据包含许多稀疏桶,请考虑使用更长的bucket_span
forecasts.memory.avgfmavgforecastsMemoryAvg
与异常检测作业相关的预测的平均内存使用量(字节)。
forecasts.memory.maxfmmaxforecastsMemoryMax
与异常检测作业相关的预测的最大内存使用量(字节)。
forecasts.memory.minfmminforecastsMemoryMin
与异常检测作业相关的预测的最小内存使用量(字节)。
forecasts.memory.totalfmtforecastsMemoryTotal
与异常检测作业相关的预测的总内存使用量(字节)。
forecasts.records.avgfravgforecastsRecordsAvg
为与异常检测作业相关的预测写入的model_forecast文档的平均数量。
forecasts.records.maxfrmaxforecastsRecordsMax
为与异常检测作业相关的预测写入的model_forecast文档的最大数量。
forecasts.records.minfrminforecastsRecordsMin
为与异常检测作业相关的预测写入的model_forecast文档的最小数量。
forecasts.records.totalfrtforecastsRecordsTotal
为与异常检测作业相关的预测写入的model_forecast文档的总数。
forecasts.time.avgftavgforecastsTimeAvg
与异常检测作业相关的预测的平均运行时间(毫秒)。
forecasts.time.maxftmaxforecastsTimeMax
与异常检测作业相关的预测的最大运行时间(毫秒)。
forecasts.time.minftminforecastsTimeMin
与异常检测作业相关的预测的最小运行时间(毫秒)。
forecasts.time.totalfttforecastsTimeTotal
与异常检测作业相关的预测的总运行时间(毫秒)。
forecasts.totalftforecastsTotal
(默认)当前可用于作业的单个预测数。值为1或更大表示存在预测。
id
(默认)异常检测作业的标识符。
model.bucket_allocation_failuresmbafmodelBucketAllocationFailures
由于模型内存不足,无法处理传入数据中新实体的桶数。这种情况也由hard_limit: memory_status属性值表示。
model.by_fieldsmbfmodelByFields
模型分析的by字段值的个数。此值是作业中所有检测器的累积值。
model.bytesmbmodelBytes
(默认) 模型使用的内存字节数。这是自上次模型持久化以来的最大值。如果作业已关闭,则此值表示最新大小。
model.bytes_exceededmbemodelBytesExceeded
上次分配失败时内存使用量超过上限的字节数。
model.categorization_statusmcsmodelCategorizationStatus

作业分类状态。包含以下值之一:

  • ok:分类性能良好(或根本未使用)。
  • warn:分类检测到类别分布表明输入数据不适合分类。问题可能是只有一个类别,超过90%的类别很少见,类别数量大于已分类文档数量的50%,没有频繁匹配的类别,或者超过50%的类别已失效。
model.categorized_doc_countmcdcmodelCategorizedDocCount
已分类字段的文档数量。
model.dead_category_countmdccmodelDeadCategoryCount
由分类创建但永远不会再次分配的类别数量,因为另一个类别的定义使其成为失效类别的超集。(失效类别是分类没有预先训练的方式的副作用。)
model.failed_category_countmdccmodelFailedCategoryCount
分类想要创建新类别但由于作业已达到model_memory_limit而无法创建的次数。此计数不跟踪哪些特定类别未能创建。因此,您无法使用此值来确定错过的唯一类别的数量。
model.frequent_category_countmfccmodelFrequentCategoryCount
匹配超过1%已分类文档的类别数量。
model.log_timemltmodelLogTime
根据服务器时间收集模型统计信息的时间戳。
model.memory_limitmmlmodelMemoryLimit
模型内存使用上限,在增加值时检查。
model.memory_statusmmsmodelMemoryStatus

(默认) 数学模型的状态,可以具有以下值之一:

  • ok:模型保持在配置值以下。
  • soft_limit:模型使用了超过配置内存限制的60%,将修剪较旧的未使用模型以释放空间。此外,在分类作业中,将不再存储其他类别示例。
  • hard_limit:模型使用的空间超过配置的内存限制。结果,并非所有传入数据都已处理。
model.output_memory_allocator_bytesmomabmodelOutputMemoryAllocatorBytes
用于输出异常检测作业文档的内存量(以字节为单位)。
model.over_fieldsmofmodelOverFields
模型分析的over字段值的个数。此值是作业中所有检测器的累积值。
model.partition_fieldsmpfmodelPartitionFields
模型分析的partition字段值的个数。此值是作业中所有检测器的累积值。
model.rare_category_countmrccmodelRareCategoryCount
只匹配一个已分类文档的类别数量。
model.timestampmtmodelTimestamp
收集模型统计信息的最后一条记录的时间戳。
model.total_category_countmtccmodelTotalCategoryCount
由分类创建的类别数量。
node.addressnanodeAddress

节点的网络地址。

包含运行作业的节点的属性。此信息仅适用于打开的作业。

node.ephemeral_idnenodeEphemeralId

节点的临时ID。

包含运行作业的节点的属性。此信息仅适用于打开的作业。

node.idninodeId

节点的唯一标识符。

包含运行作业的节点的属性。此信息仅适用于打开的作业。

node.namennnodeName

节点名称。

包含运行作业的节点的属性。此信息仅适用于打开的作业。

opened_timeot
仅对于打开的作业,作业已打开的经过时间。
states

(默认) 异常检测作业的状态,可以是以下值之一:

  • closed:作业已成功完成,其模型状态已持久化。作业必须先打开才能接受更多数据。
  • closing:作业关闭操作正在进行中,尚未完成。关闭的作业无法接受更多数据。
  • failed:由于错误,作业未成功完成。这种情况可能是由于无效的输入数据、分析过程中发生的致命错误或外部交互(例如 Linux 内存不足 (OOM) 终止程序)造成的。如果作业已不可挽回地失败,则必须强制关闭并删除它。如果可以更正数据馈送,则可以关闭作业,然后重新打开它。
  • opened:作业可接收和处理数据。
  • opening:作业打开操作正在进行中,尚未完成。
帮助
(可选,布尔值) 如果true,则响应包含帮助信息。默认为false
s
(可选,字符串) 用于对响应进行排序的列名或列别名的逗号分隔列表。
时间
(可选,时间单位) 用于显示时间值的单位。
v
(可选,布尔值) 如果true,则响应包含列标题。默认为false

示例

编辑
resp = client.cat.ml_jobs(
    h="id,s,dpr,mb",
    v=True,
)
print(resp)
response = client.cat.ml_jobs(
  h: 'id,s,dpr,mb',
  v: true
)
puts response
const response = await client.cat.mlJobs({
  h: "id,s,dpr,mb",
  v: "true",
});
console.log(response);
GET _cat/ml/anomaly_detectors?h=id,s,dpr,mb&v=true
id                        s dpr   mb
high_sum_total_sales closed 14022 1.5mb
low_request_rate     closed 1216  40.5kb
response_code_rates  closed 28146 132.7kb
url_scanning         closed 28146 501.6kb