Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Alerts][Docs] Added API documentation for alerts plugin #91067

Merged
merged 64 commits into from
Feb 18, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
f6a930f
Added API documentation for alerts plugin
YulNaumenko Feb 11, 2021
d448d6f
Added link to user api
YulNaumenko Feb 11, 2021
4207b22
fixed links
YulNaumenko Feb 11, 2021
2a151ea
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
aa5bc09
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
6008f3c
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
7fbb677
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
b6beab2
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
144711f
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
fc74e9a
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
230c277
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
3cf383e
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
9f00273
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
95124b3
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
5d73cd2
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
5b6f2f3
Update docs/api/alerts.asciidoc
YulNaumenko Feb 17, 2021
d79e6e4
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
677b024
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
f3a7208
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
7b3d155
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
cd64b9d
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
058624b
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
46a5a8d
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
b563b8a
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
e6be6e8
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
f96abc3
Update docs/api/alerts/create.asciidoc
YulNaumenko Feb 17, 2021
f98c3c9
Update docs/api/alerts/delete.asciidoc
YulNaumenko Feb 17, 2021
ef16edf
Update docs/api/alerts/delete.asciidoc
YulNaumenko Feb 17, 2021
9617bc3
Update docs/api/alerts/disable.asciidoc
YulNaumenko Feb 17, 2021
ff6ce3c
Update docs/api/alerts/enable.asciidoc
YulNaumenko Feb 17, 2021
e6d837c
Update docs/api/alerts/disable.asciidoc
YulNaumenko Feb 17, 2021
1d1c1d7
Update docs/api/alerts/update.asciidoc
YulNaumenko Feb 17, 2021
9bf66e3
Update docs/api/alerts/enable.asciidoc
YulNaumenko Feb 17, 2021
4fb804a
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
96c7017
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
3bec3bb
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
e180a34
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
62cce42
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
0dd56d9
Update docs/api/alerts/find.asciidoc
YulNaumenko Feb 17, 2021
3730bab
Update docs/api/alerts/get.asciidoc
YulNaumenko Feb 17, 2021
01a1585
Update docs/api/alerts/get.asciidoc
YulNaumenko Feb 17, 2021
f5a83bb
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
599a0e1
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
a63072e
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
825e926
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
e61d6c4
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
a890877
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
474c6b1
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
14d90de
Update docs/api/alerts/list.asciidoc
YulNaumenko Feb 17, 2021
273e1ec
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
4bb7965
Update docs/api/alerts/health.asciidoc
YulNaumenko Feb 17, 2021
826df7d
Update docs/api/alerts/list.asciidoc
YulNaumenko Feb 17, 2021
866aacb
Update docs/api/alerts/list.asciidoc
YulNaumenko Feb 17, 2021
379e46e
Update docs/api/alerts/list.asciidoc
YulNaumenko Feb 17, 2021
32400f8
Apply suggestions from code review
YulNaumenko Feb 17, 2021
698993e
fixed due to comments
YulNaumenko Feb 17, 2021
31affae
fixed merge
YulNaumenko Feb 17, 2021
526d5df
fixed due to comments
YulNaumenko Feb 17, 2021
51b2ab1
fixed due to comments
YulNaumenko Feb 17, 2021
8fdb2c5
Merge remote-tracking branch upstream/master
YulNaumenko Feb 17, 2021
ba03d92
fixed links
YulNaumenko Feb 17, 2021
e49aeea
Apply suggestions from code review
YulNaumenko Feb 18, 2021
37a3db3
fixed due to comments
YulNaumenko Feb 18, 2021
0f8b92b
merged
YulNaumenko Feb 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions docs/api/alerts.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[[alerts-api]]
== Alerts APIs

The following APIs are available for managing {kib} alerts.

* <<alerts-api-create, Create alert API>> to create an alert

* <<alerts-api-update, Update alert API>> to update the attributes for existing alerts

* <<alerts-api-get, Get object API>> to retrieve a single alert by ID

* <<alerts-api-delete, Delete alert API>> to permanently remove an alert

* <<alerts-api-find, Find alerts API>> to retrieve a paginated set of alerts by condition

* <<alerts-api-list, List all alert types API>> to retrieve a list of all alert types

* <<alerts-api-enable, Enable alert API>> to enable a single alert by ID

* <<alerts-api-disable, Disable alert API>> to disable a single alert by ID

* <<alerts-api-mute, Mute alert instance API>> to mute alert instances for a single alert by ID

* <<alerts-api-unmute, Unmute alert instance API>> to unmute alert instances for a single alert by ID

* <<alerts-api-unmute-all, Unmute all alert instances API>> to unmute all alert instances for a single alert by ID

* <<alerts-api-health, Get framework health API>> to retrieve the health of the alerts framework

include::alerts/create.asciidoc[]
include::alerts/update.asciidoc[]
include::alerts/get.asciidoc[]
include::alerts/delete.asciidoc[]
include::alerts/find.asciidoc[]
include::alerts/list.asciidoc[]
include::alerts/enable.asciidoc[]
include::alerts/disable.asciidoc[]
include::alerts/mute_all.asciidoc[]
include::alerts/mute.asciidoc[]
include::alerts/unmute_all.asciidoc[]
include::alerts/unmute.asciidoc[]
include::alerts/health.asciidoc[]
189 changes: 189 additions & 0 deletions docs/api/alerts/create.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
[[alerts-api-create]]
=== Create alert API
++++
<titleabbrev>Create alert</titleabbrev>
++++

Create {kib} alerts.

[[alerts-api-create-request]]
==== Request

`POST <kibana host>:<port>/api/alerts/alert`

[[alerts-api-create-request-body]]
==== Request body

`name`::
(Required, string) A name to reference and search.

`tags`::
(Optional, string array) A list of keywords to reference and search.

`alertTypeId`::
(Required, string) The ID of the alert type that you want to call when the alert is scheduled to run.

`schedule`::
(Required, object) The schedule specifying when this alert should be run, using one of the available schedule formats specified under
+
._Schedule Formats_.
[%collapsible%open]
=====
A schedule is structured such that the key specifies the format you wish to use and its value specifies the schedule.

We currently support the _Interval format_ which specifies the interval in seconds, minutes, hours or days at which the alert should execute.
Example: `{ interval: "10s" }`, `{ interval: "5m" }`, `{ interval: "1h" }`, `{ interval: "1d" }`.

There are plans to support multiple other schedule formats in the near future.
=====

`throttle`::
(Optional, string) How often this alert should fire the same actions. This will prevent the alert from sending out the same notification over and over. For example, if an alert with a `schedule` of 1 minute stays in a triggered state for 90 minutes, setting a `throttle` of `10m` or `1h` will prevent it from sending 90 notifications during this period.

`notifyWhen`::
(Required, string) The condition for throttling the notification: `onActionGroupChange`, `onActiveAlert`, or `onThrottleInterval`.

`enabled`::
(Optional, boolean) Indicates if you want to run the alert on an interval basis after it is created.

`consumer`::
(Required, string) The name of the application that owns the alert. This name has to match the Kibana Feature name, as that dictates the required RBAC privileges.

`params`::
(Required, object) The parameters to pass to the alert type executor `params` value. This will also validate against the alert type params validator, if defined.

`actions`::
(Optional, object array) An array of the following action objects.
+
.Properties of the action objects:
[%collapsible%open]
=====
`group`:::
(Required, string) Grouping actions is recommended for escalations for different types of alert instances. If you don't need this, set this value to `default`.

`id`:::
(Required, string) The ID of the action saved object to execute.

`actionTypeId`:::
(Required, string) The ID of the <<action-types,action type>>.

`params`:::
(Required, object) The map to the `params` that the <<action-types,action type>> will receive. ` params` are handled as Mustache templates and passed a default set of context.
=====


YulNaumenko marked this conversation as resolved.
Show resolved Hide resolved
[[alerts-api-create-request-codes]]
==== Response code

`200`::
Indicates a successful call.

[[alerts-api-create-example]]
==== Example

[source,sh]
--------------------------------------------------
$ curl -X POST api/alerts/alert -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '
{
"params":{
"aggType":"avg",
"termSize":6,
"thresholdComparator":">",
"timeWindowSize":5,
"timeWindowUnit":"m",
"groupBy":"top",
"threshold":[
1000
],
"index":[
".test-index"
],
"timeField":"@timestamp",
"aggField":"sheet.version",
"termField":"name.keyword"
},
"consumer":"alerts",
"alertTypeId":".index-threshold",
"schedule":{
"interval":"1m"
},
"actions":[
{
"id":"dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2",
"actionTypeId":".server-log",
"group":"threshold met",
"params":{
"level":"info",
"message":"alert '{{alertName}}' is active for group '{{context.group}}':\n\n- Value: {{context.value}}\n- Conditions Met: {{context.conditions}} over {{params.timeWindowSize}}{{params.timeWindowUnit}}\n- Timestamp: {{context.date}}"
}
}
],
"tags":[
"cpu"
],
"notifyWhen":"onActionGroupChange",
"name":"my alert"
}'
--------------------------------------------------
// KIBANA

The API returns the following:

[source,sh]
--------------------------------------------------
{
"id": "41893910-6bca-11eb-9e0d-85d233e3ee35",
"notifyWhen": "onActionGroupChange",
"params": {
"aggType": "avg",
"termSize": 6,
"thresholdComparator": ">",
"timeWindowSize": 5,
"timeWindowUnit": "m",
"groupBy": "top",
"threshold": [
1000
],
"index": [
".kibana"
],
"timeField": "@timestamp",
"aggField": "sheet.version",
"termField": "name.keyword"
},
"consumer": "alerts",
"alertTypeId": ".index-threshold",
"schedule": {
"interval": "1m"
},
"actions": [
{
"actionTypeId": ".server-log",
"group": "threshold met",
"params": {
"level": "info",
"message": "alert {{alertName}} is active for group {{context.group}}:\n\n- Value: {{context.value}}\n- Conditions Met: {{context.conditions}} over {{params.timeWindowSize}}{{params.timeWindowUnit}}\n- Timestamp: {{context.date}}"
},
"id": "dceeb5d0-6b41-11eb-802b-85b0c1bc8ba2"
}
],
"tags": [
"cpu"
],
"name": "my alert",
"enabled": true,
"throttle": null,
"apiKeyOwner": "elastic",
"createdBy": "elastic",
"updatedBy": "elastic",
"muteAll": false,
"mutedInstanceIds": [],
"updatedAt": "2021-02-10T18:03:19.961Z",
"createdAt": "2021-02-10T18:03:19.961Z",
"scheduledTaskId": "425b0800-6bca-11eb-9e0d-85d233e3ee35",
"executionStatus": {
"lastExecutionDate": "2021-02-10T18:03:19.966Z",
"status": "pending"
}
}
--------------------------------------------------
36 changes: 36 additions & 0 deletions docs/api/alerts/delete.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[[alerts-api-delete]]
=== Delete alert API
++++
<titleabbrev>Delete alert</titleabbrev>
++++

Permanently remove an alert.

WARNING: Once you delete an alert, you cannot recover it.

[[alerts-api-delete-request]]
==== Request

`DELETE <kibana host>:<port>/api/alerts/alert/<id>`

[[alerts-api-delete-path-params]]
==== Path parameters

`id`::
(Required, string) The ID of the alert that you want to remove.

[[alerts-api-delete-response-codes]]
==== Response code

`200`::
Indicates a successful call.

==== Example

Delete an alert with ID:

[source,sh]
--------------------------------------------------
$ curl -X DELETE api/alerts/alert/41893910-6bca-11eb-9e0d-85d233e3ee35
--------------------------------------------------
// KIBANA
34 changes: 34 additions & 0 deletions docs/api/alerts/disable.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[[alerts-api-disable]]
=== Disable alert API
++++
<titleabbrev>Disable alert</titleabbrev>
++++

Disable an alert.

[[alerts-api-disable-request]]
==== Request

`POST <kibana host>:<port>/api/alerts/alert/<id>/_disable`

[[alerts-api-disable-path-params]]
==== Path parameters

`id`::
(Required, string) The ID of the alert that you want to disable.

[[alerts-api-disable-response-codes]]
==== Response code

`200`::
Indicates a successful call.

==== Example

Disable an alert with ID:

[source,sh]
--------------------------------------------------
$ curl -X POST api/alerts/alert/41893910-6bca-11eb-9e0d-85d233e3ee35/_disable
--------------------------------------------------
// KIBANA
34 changes: 34 additions & 0 deletions docs/api/alerts/enable.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[[alerts-api-enable]]
=== Enable alert API
++++
<titleabbrev>Enable alert</titleabbrev>
++++

Enable an alert.

[[alerts-api-enable-request]]
==== Request

`POST <kibana host>:<port>/api/alerts/alert/<id>/_enable`

[[alerts-api-enable-path-params]]
==== Path parameters

`id`::
(Required, string) The ID of the alert that you want to enable.

[[alerts-api-enable-response-codes]]
==== Response code

`200`::
Indicates a successful call.

==== Example

Enable an alert with ID:

[source,sh]
--------------------------------------------------
$ curl -X POST api/alerts/alert/41893910-6bca-11eb-9e0d-85d233e3ee35/_enable
--------------------------------------------------
// KIBANA
Loading