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 接受标头 的简短版本。有效值包括 JSON、YAML 等。
h

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

如果您未指定要包含的列,则 API 将返回默认列。如果您显式指定了一个或多个列,则它将仅返回指定的列。

有效的列是

assignment_explanation, ae
仅适用于开放式异常检测作业,包含与选择运行作业的节点相关的消息。
buckets.count, bc, bucketsCount
(默认)作业生成的存储桶结果数。
buckets.time.exp_avg, btea, bucketsTimeExpAvg
所有存储桶处理时间的指数移动平均值,以毫秒为单位。
buckets.time.exp_avg_hour, bteah, bucketsTimeExpAvgHour
在 1 小时时间窗口内计算的存储桶处理时间的指数加权移动平均值,以毫秒为单位。
buckets.time.max, btmax, bucketsTimeMax
所有存储桶处理时间中的最大值,以毫秒为单位。
buckets.time.min, btmin, bucketsTimeMin
所有存储桶处理时间中的最小值,以毫秒为单位。
buckets.time.total, btt, bucketsTimeTotal
所有存储桶处理时间的总和,以毫秒为单位。
data.buckets, db, dataBuckets
已处理的存储桶数。
data.earliest_record, der, dataEarliestRecord
最早按时间顺序排列的输入文档的时间戳。
data.empty_buckets, deb, dataEmptyBuckets
不包含任何数据的存储桶数。如果您的数据包含许多空存储桶,请考虑增加您的 bucket_span 或使用容忍数据间隙的函数,例如 meannon_null_sumnon_zero_count
data.input_bytes, dib, dataInputBytes
发布到异常检测作业的输入数据的字节数。
data.input_fields, dif, dataInputFields
发布到异常检测作业的输入文档中的字段总数。此计数包括分析中未使用的字段。但是,请注意,如果您使用的是数据馈送,它会在将文档发布到作业之前,仅从检索到的文档中提取所需的字段。
data.input_records, dir, dataInputRecords
发布到异常检测作业的输入文档数。
data.invalid_dates, did, dataInvalidDates
日期字段缺失或日期无法解析的输入文档数。
data.last, dl, dataLast
根据服务器时间,上次分析数据的時間戳記。
data.last_empty_bucket, dleb, dataLastEmptyBucket
不包含任何数据的最后一个存储桶的时间戳。
data.last_sparse_bucket, dlsb, dataLastSparseBucket
被视为稀疏的最后一个存储桶的时间戳。
data.latest_record, dlr, dataLatestRecord
按时间顺序排列的最新输入文档的时间戳。
data.missing_fields, dmf, dataMissingFields

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

如果您使用的是数据馈送或以 JSON 格式将数据发布到作业,则较高的 missing_field_count 通常并不表示数据有问题。这不一定是需要担心的事情。

data.out_of_order_timestamps, doot, dataOutOfOrderTimestamps
时间戳按时间顺序排列在当前异常检测存储桶开始时间(减去延迟窗口)之前的输入文档数。仅当您使用 发布数据 API 向异常检测作业提供数据时,此信息才适用。这些乱序文档将被丢弃,因为作业要求时间序列数据按时间顺序排列。
data.processed_fields, dpf, dataProcessedFields
异常检测作业已处理的所有文档中的字段总数。只有检测器配置对象中指定的字段才会计入此计数。时间戳不包括在此计数中。
data.processed_records, dpr, dataProcessedRecords
(默认)异常检测作业已处理的输入文档数。此值包括缺少字段的文档,因为它们仍然会被分析。如果您使用数据馈送并且搜索查询中包含聚合,则 processed_record_count 是已处理的聚合结果数,而不是 Elasticsearch 文档数。
data.sparse_buckets, dsb, dataSparseBuckets
与预期数据点数相比,包含数据点较少的存储桶数。如果您的数据包含许多稀疏存储桶,请考虑使用更长的 bucket_span
forecasts.memory.avg, fmavg, forecastsMemoryAvg
与异常检测作业相关的预测的平均内存使用量(以字节为单位)。
forecasts.memory.max, fmmax, forecastsMemoryMax
与异常检测作业相关的预测的最大内存使用量(以字节为单位)。
forecasts.memory.min, fmmin, forecastsMemoryMin
与异常检测作业相关的预测的最小内存使用量(以字节为单位)。
forecasts.memory.total, fmt, forecastsMemoryTotal
与异常检测作业相关的预测的总内存使用量(以字节为单位)。
forecasts.records.avg, fravg, forecastsRecordsAvg
为与异常检测作业相关的预测编写的 model_forecast 文档的平均数量。
forecasts.records.max, frmax, forecastsRecordsMax
为与异常检测作业相关的预测编写的 model_forecast 文档的最大数量。
forecasts.records.min, frmin, forecastsRecordsMin
为与异常检测作业相关的预测编写的 model_forecast 文档的最小数量。
forecasts.records.total, frt, forecastsRecordsTotal
为与异常检测作业相关的预测编写的 model_forecast 文档的总数。
forecasts.time.avg, ftavg, forecastsTimeAvg
与异常检测作业相关的预测的平均运行时间(以毫秒为单位)。
forecasts.time.max, ftmax, forecastsTimeMax
与异常检测作业相关的预测的最大运行时间(以毫秒为单位)。
forecasts.time.min, ftmin, forecastsTimeMin
与异常检测作业相关的预测的最小运行时间(以毫秒为单位)。
forecasts.time.total, ftt, forecastsTimeTotal
与异常检测作业相关的预测的总运行时间(以毫秒为单位)。
forecasts.total, ft, forecastsTotal
(默认)当前可用于该作业的单个预测的数量。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.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
仅适用于打开的作业,作业已打开的 elapsed 时间。
states

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

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

示例编辑

response = client.cat.ml_jobs(
  h: 'id,s,dpr,mb',
  v: true
)
puts 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