David Roberts 984323783e
[ML][7.x] Add lazy assignment job config option (#47993)
This change adds:

- A new option, allow_lazy_open, to anomaly detection jobs
- A new option, allow_lazy_start, to data frame analytics jobs

Both work in the same way: they allow a job to be
opened/started even if no ML node exists that can
accommodate the job immediately. In this situation
the job waits in the opening/starting state until ML
node capacity is available. (The starting state for data
frame analytics jobs is new in this change.)

Additionally, the ML nightly maintenance tasks now
creates audit warnings for ML jobs that are unassigned.
This means that jobs that cannot be assigned to an ML
node for a very long time will show a yellow warning
triangle in the UI.

A final change is that it is now possible to close a job
that is not assigned to a node without using force.
This is because previously jobs that were open but
not assigned to a node were an aberration, whereas
after this change they'll be relatively common.
2019-10-15 06:55:11 +01:00

133 lines
3.7 KiB
Plaintext

[role="xpack"]
[testenv="platinum"]
[[ml-get-job]]
=== Get {anomaly-jobs} API
++++
<titleabbrev>Get jobs</titleabbrev>
++++
Retrieves configuration information for {anomaly-jobs}.
[[ml-get-job-request]]
==== {api-request-title}
`GET _ml/anomaly_detectors/<job_id>` +
`GET _ml/anomaly_detectors/<job_id>,<job_id>` +
`GET _ml/anomaly_detectors/` +
`GET _ml/anomaly_detectors/_all`
[[ml-get-job-prereqs]]
==== {api-prereq-title}
* If the {es} {security-features} are enabled, you must have `monitor_ml`,
`monitor`, `manage_ml`, or `manage` cluster privileges to use this API. See
<<security-privileges>>.
[[ml-get-job-desc]]
==== {api-description-title}
You can get information for multiple {anomaly-jobs} in a single API request by
using a group name, a comma-separated list of jobs, or a wildcard expression.
You can get information for all {anomaly-jobs} by using `_all`, by specifying
`*` as the `<job_id>`, or by omitting the `<job_id>`.
IMPORTANT: This API returns a maximum of 10,000 jobs.
[[ml-get-job-path-parms]]
==== {api-path-parms-title}
`<job_id>`::
(Optional, string) Identifier for the {anomaly-job}. It can be a job
identifier, a group name, or a wildcard expression. If you do not specify one
of these options, the API returns information for all {anomaly-jobs}.
[[ml-get-job-query-parms]]
==== {api-query-parms-title}
`allow_no_jobs`::
(Optional, boolean) Specifies what to do when the request:
+
--
* Contains wildcard expressions and there are no jobs that match.
* Contains the `_all` string or no identifiers and there are no matches.
* Contains wildcard expressions and there are only partial matches.
The default value is `true`, which returns an empty `jobs` array
when there are no matches and the subset of results when there are partial
matches. If this parameter is `false`, the request returns a `404` status code
when there are no matches or only partial matches.
--
[[ml-get-job-results]]
==== {api-response-body-title}
The API returns the following information:
`jobs`::
(array) An array of {anomaly-job} resources.
For more information, see <<ml-job-resource>>.
[[ml-get-job-response-codes]]
==== {api-response-codes-title}
`404` (Missing resources)::
If `allow_no_jobs` is `false`, this code indicates that there are no
resources that match the request or only partial matches for the request.
[[ml-get-job-example]]
==== {api-examples-title}
The following example gets configuration information for the `total-requests` job:
[source,console]
--------------------------------------------------
GET _ml/anomaly_detectors/total-requests
--------------------------------------------------
// TEST[skip:setup:server_metrics_job]
The API returns the following results:
[source,console-result]
----
{
"count": 1,
"jobs": [
{
"job_id": "total-requests",
"job_type": "anomaly_detector",
"job_version": "7.0.0-alpha1",
"description": "Total sum of requests",
"create_time": 1517011406091,
"analysis_config": {
"bucket_span": "10m",
"detectors": [
{
"detector_description": "Sum of total",
"function": "sum",
"field_name": "total",
"detector_index": 0
}
],
"influencers": [ ]
},
"analysis_limits": {
"model_memory_limit": "1024mb",
"categorization_examples_limit": 4
},
"data_description": {
"time_field": "timestamp",
"time_format": "epoch_ms"
},
"model_snapshot_retention_days": 1,
"results_index_name": "shared",
"allow_lazy_open": false
}
]
}
----
// TESTRESPONSE[s/"7.0.0-alpha1"/$body.$_path/]
// TESTRESPONSE[s/1517011406091/$body.$_path/]