diff --git a/config/_default/menus/menus.en.yaml b/config/_default/menus/menus.en.yaml index 3673c3e6263..43c8f15a791 100644 --- a/config/_default/menus/menus.en.yaml +++ b/config/_default/menus/menus.en.yaml @@ -698,10 +698,23 @@ main: weight: 6 parent: "alerting" + ## MONITORS - SLOs + - name: "Service Level Objectives" - url: "monitors/slos/" + url: "monitors/service_level_objectives/" weight: 7 parent: "alerting" + identifier: "slos" + + - name: "Monitor SLO" + url: "monitors/service_level_objectives/monitor/" + parent: "slos" + weight: 7.1 + + - name: "Event SLO" + url: "monitors/service_level_objectives/event/" + parent: "slos" + weight: 7.2 ## MONITORS - Guides @@ -710,8 +723,6 @@ main: weight: 100 parent: "alerting" - - ################# ## TRACING/APM ## ################# diff --git a/config/_default/menus/menus.fr.yaml b/config/_default/menus/menus.fr.yaml index e0445afe7e0..a54351ea705 100644 --- a/config/_default/menus/menus.fr.yaml +++ b/config/_default/menus/menus.fr.yaml @@ -588,10 +588,6 @@ main: url: monitors/downtimes/ weight: 6 parent: alerting - - name: Service Level Objectives - url: monitors/slos/ - weight: 7 - parent: alerting - name: Guides url: monitors/guide/ weight: 100 diff --git a/config/_default/menus/menus.ja.yaml b/config/_default/menus/menus.ja.yaml index 8e11f9ea260..4b9a3b1a105 100644 --- a/config/_default/menus/menus.ja.yaml +++ b/config/_default/menus/menus.ja.yaml @@ -17,7 +17,7 @@ main: url: "getting_started/integrations/" parent: "getting_started" weight: 3 - + ## GETTING STARTED - Traces - name: "トレースの収集" @@ -30,7 +30,7 @@ main: url: "getting_started/learning_center/" parent: "getting_started" weight: 6 - + - name: "Prometheus/Openmetrics" identifier: "getting_started_prometheus" url: "getting_started/integrations/prometheus" @@ -562,11 +562,6 @@ main: weight: 6 parent: "alerting" - - name: "SLO ウィジェット" - url: "monitors/slo_widget/" - weight: 7 - parent: "alerting" - - name: "ガイド" url: "monitors/guide/" weight: 8 diff --git a/content/en/agent/guide/python-3.md b/content/en/agent/guide/python-3.md index 6a9ce631091..1a560d7fe99 100644 --- a/content/en/agent/guide/python-3.md +++ b/content/en/agent/guide/python-3.md @@ -169,7 +169,7 @@ f = open('textfile.txt', encoding='utf-8') contents = f.read() # contents will be decoded to unicode using ‘utf-8’; these are not bytes! ``` -Consult Ned Batchelder’s [Pragmatic Unicode][10] for further details. +Consult Ned Batchelder’s [Pragmatic Unicode][11] for further details. ### Print diff --git a/content/en/api/service_level_objectives/_index.md b/content/en/api/service_level_objectives/_index.md new file mode 100644 index 00000000000..140f9c6bd82 --- /dev/null +++ b/content/en/api/service_level_objectives/_index.md @@ -0,0 +1,5 @@ +--- +title: Service Level Objectives +external_redirect: /api/ +--- + diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.py b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.py new file mode 100644 index 00000000000..9c4e1e0203b --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.py @@ -0,0 +1,18 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +slo_id_1 = '' +slo_id_2 = '' + +initialize(**options) + +delete_timeframes = { + slo_id_1: ["7d"] + slo_id_2: ["7d", "30d"] +} + +api.ServiceLevelObjective.bulk_delete(delete_timeframes) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.rb new file mode 100644 index 00000000000..d2f12825a2f --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.rb @@ -0,0 +1,17 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' + +slo_id_1 = ''.freeze +slo_id_2 = ''.freeze + +dog = Dogapi::Client.new(api_key, app_key) + +# Delete multiple timeframes +thresholds = { + slo_id_1: ["7d"] + slo_id_2: ["7d", "30d"] +} +dog.delete_timeframes_service_level_objective(thresholds) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.sh new file mode 100644 index 00000000000..afd6b09c6cf --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-bulk-delete.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= + +# Bulk Delete SLOs +curl -X POST -H "Content-Type: application/json" \ + -d '{"12341234123412341234123412341234": ["7d"], "43210000432100004321000043210000": ["30d"]}}' \ + "https://api.datadoghq.com/api/v1/slo/bulk_delete?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-create.py b/content/en/api/service_level_objectives/code_snippets/api-slo-create.py new file mode 100644 index 00000000000..1393c8fa1cd --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-create.py @@ -0,0 +1,24 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +initialize(**options) + +# Create a new SLO +thresholds = [ + {"timeframe": "7d", "target": 95}, + {"timeframe": "30d", "target": 95, "warning": 97}, +] +tags = ["app:webserver", "frontend"] +api.ServiceLevelObjective.create( + type="metric", + name="Custom Metric SLO", + description="SLO tracking custom service SLO", + numerator="sum:my.custom.metric{type:good}.as_count()", + denominator="sum:my.custom.metric{*}.as_count()", + tags=tags, + thresholds=thresholds +) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-create.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-create.rb new file mode 100644 index 00000000000..a2053799a83 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-create.rb @@ -0,0 +1,23 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' + +dog = Dogapi::Client.new(api_key, app_key) + +# Create a new SLO +thresholds = [ + {:timeframe => "7d", :target => 95}, + {:timeframe => "30d", :target => 95, :warning => 97}, +] +tags = ['app:webserver', 'frontend'] +dog.create_service_level_objective( + :type => "metric", + :name => "Custom Metric SLO", + :description => "SLO tracking custom service SLO", + :numerator => "sum:my.custom.metric{type:good}.as_count()", + :denominator => "sum:my.custom.metric{*}.as_count()", + :tags => tags, + :thresholds => thresholds +) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-create.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-create.sh new file mode 100644 index 00000000000..83f67f73910 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-create.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= + +curl -X POST -H "Content-type: application/json" \ +-d '{ + "type": "monitor", + "name": "Critical Foo Host Uptime", + "description": "Track the uptime of host foo which is critical to the core business.", + "tags": ["app:core", "kpi"], + "monitor_ids": [42], + "thresholds": [ + {"timeframe": "30d", "target": 95, "warning": 98} + ] +}' \ + "https://api.datadoghq.com/api/v1/slo?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.py b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.py new file mode 100644 index 00000000000..dbb4e15bf37 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.py @@ -0,0 +1,12 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +slo_ids = ["", ""] + +initialize(**options) + +api.ServiceLevelObjective.delete_many(slo_ids) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.rb new file mode 100644 index 00000000000..c08347e95db --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.rb @@ -0,0 +1,12 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' +slo_ids = ['', ''] + +dog = Dogapi::Client.new(api_key, app_key) + +# Delete multiple timeframes + +dog.delete_many_service_level_objective(thresholds) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.sh new file mode 100644 index 00000000000..e0263cf0e61 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete-many.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= +slo_ids= + +# Delete a SLO +curl -X DELETE -H "Content-Type: applicaton/json" -d '[${slo_ids}]' \ + "https://api.datadoghq.com/api/v1/slo/?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete.py b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.py new file mode 100644 index 00000000000..a6306a49b58 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.py @@ -0,0 +1,12 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +slo_id = '' + +initialize(**options) + +api.ServiceLevelObjective.delete(slo_id) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.rb new file mode 100644 index 00000000000..3873b4fdafa --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.rb @@ -0,0 +1,10 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' +slo_id = '' + +dog = Dogapi::Client.new(api_key, app_key) + +dog.delete_service_level_objective(slo_id) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-delete.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.sh new file mode 100644 index 00000000000..b5366d720c6 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-delete.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= +slo_id= + +# Delete a SLO +curl -X DELETE "https://api.datadoghq.com/api/v1/slo/${slo_id}?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-edit.py b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.py new file mode 100644 index 00000000000..408b6b3a3f2 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.py @@ -0,0 +1,28 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +slo_id = "" + +initialize(**options) + +# Update an existing SLO (cannot change the 'type') + +thresholds = [ + {"timeframe": "7d", "target": 95}, + {"timeframe": "30d", "target": 95, "warning": 97}, +] +tags = ["app:webserver", "frontend"] +api.ServiceLevelObjective.update( + id=slo_id, + type="metric", + name="Custom Metric SLO", + description="SLO tracking custom service SLO", + numerator="sum:my.custom.metric{type:good}.as_count()", + denominator="sum:my.custom.metric{*}.as_count()", + tags=tags, + thresholds=thresholds +) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-edit.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.rb new file mode 100644 index 00000000000..9962d75d8b4 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.rb @@ -0,0 +1,26 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' +slo_id = '' + +dog = Dogapi::Client.new(api_key, app_key) + +# Update an existing SLO (cannot change the 'type') +thresholds = [ + {:timeframe => "7d", :target => 95}, + {:timeframe => "30d", :target => 95, :warning => 97}, +] +tags = ['app:webserver', 'frontend'] + +dog.update_service_level_objective( + slo_id, + :type => "metric", + :name => "Custom Metric SLO", + :description => "SLO tracking custom service SLO", + :numerator => "sum:my.custom.metric{type:good}.as_count()", + :denominator => "sum:my.custom.metric{*}.as_count()", + :tags => tags, + :thresholds => thresholds +) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-edit.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.sh new file mode 100644 index 00000000000..3d5ce0c2dc1 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-edit.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= +slo_id= + +# Edit a SLO +curl -X PUT -H "Content-type: application/json" \ +-d '{ + "name": "Host0 uptime", + "description": "We may need to replace this host if it is constantly down." +}' \ + "https://api.datadoghq.com/api/v1/slo/${slo_id}?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-get.py b/content/en/api/service_level_objectives/code_snippets/api-slo-get.py new file mode 100644 index 00000000000..bbebb2f5a6f --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-get.py @@ -0,0 +1,12 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +slo_id = '' + +initialize(**options) + +api.ServiceLevelObjective.get(slo_id) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-get.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-get.rb new file mode 100644 index 00000000000..ee2f6b031d6 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-get.rb @@ -0,0 +1,10 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' +slo_id = '' + +dog = Dogapi::Client.new(api_key, app_key) + +dog.get_service_level_objective(slo_id) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-get.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-get.sh new file mode 100644 index 00000000000..4521bffe78f --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-get.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= +slo_id= + +# Get a SLO +curl -X GET "https://api.datadoghq.com/api/v1/slo/${slo_id}?api_key=${api_key}&application_key=${app_key}" diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-search.py b/content/en/api/service_level_objectives/code_snippets/api-slo-search.py new file mode 100644 index 00000000000..da271577b0a --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-search.py @@ -0,0 +1,18 @@ +from datadog import initialize, api + +options = { + 'api_key': '', + 'app_key': '' +} + +initialize(**options) + + +# search with a list of IDs +slo_ids = ["", ""] + +api.ServiceLevelObjective.get_all(ids=slo_ids, offset=0) + +# search with a query +query = "tags:app:frontend" +api.ServiceLevelObjective.get_all(query=query, offset=0) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-search.rb b/content/en/api/service_level_objectives/code_snippets/api-slo-search.rb new file mode 100644 index 00000000000..756ff85409d --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-search.rb @@ -0,0 +1,17 @@ +require 'rubygems' +require 'dogapi' + +api_key = '' +app_key = '' + +dog = Dogapi::Client.new(api_key, app_key) + +# search with a list of IDs +slo_ids = ["", ""] + +api.search_service_level_objective(:slo_ids => slo_ids, :offset => 0) + +# search with a query +query = "tags:app:frontend" + +dog.search_service_level_objective(:query => query, :offset => 0) diff --git a/content/en/api/service_level_objectives/code_snippets/api-slo-search.sh b/content/en/api/service_level_objectives/code_snippets/api-slo-search.sh new file mode 100644 index 00000000000..ab403b03375 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/api-slo-search.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Replace the API and APP keys below +# with the ones for your account + +api_key= +app_key= + +query= +offset= +limit= + +curl -X GET \ + "https://api.datadoghq.com/api/v1/slo?api_key=${api_key}&application_key=${app_key}&query=${query}&offset=${page}&limit=${per_page}" diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.py new file mode 100644 index 00000000000..d34de92e5e5 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.py @@ -0,0 +1,7 @@ +{ + "data": { + "deleted": ["43210000432100004321000043210000"], + "updated": ["12341234123412341234123412341234"], + }, + "errors": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.rb new file mode 100644 index 00000000000..d34de92e5e5 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.rb @@ -0,0 +1,7 @@ +{ + "data": { + "deleted": ["43210000432100004321000043210000"], + "updated": ["12341234123412341234123412341234"], + }, + "errors": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.sh new file mode 100644 index 00000000000..d34de92e5e5 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-bulk-delete.sh @@ -0,0 +1,7 @@ +{ + "data": { + "deleted": ["43210000432100004321000043210000"], + "updated": ["12341234123412341234123412341234"], + }, + "errors": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.py new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.py @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.rb new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.rb @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.sh new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-create.sh @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.py new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.py @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.rb new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.rb @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.sh new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete-many.sh @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.py new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.py @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.rb new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.rb @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.sh new file mode 100644 index 00000000000..47d32328765 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-delete.sh @@ -0,0 +1,4 @@ +{ + "data": ["12341234123412341234123412341234"], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.py new file mode 100644 index 00000000000..aad0ec759aa --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.py @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T18:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.rb new file mode 100644 index 00000000000..aad0ec759aa --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.rb @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T18:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.sh new file mode 100644 index 00000000000..aad0ec759aa --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-edit.sh @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T18:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.py new file mode 100644 index 00000000000..19a85f86cb4 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.py @@ -0,0 +1,26 @@ +{ + "data": { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + }, + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.rb new file mode 100644 index 00000000000..19a85f86cb4 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.rb @@ -0,0 +1,26 @@ +{ + "data": { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + }, + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.sh new file mode 100644 index 00000000000..19a85f86cb4 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-get.sh @@ -0,0 +1,26 @@ +{ + "data": { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + }, + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.py b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.py new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.py @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.rb b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.rb new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.rb @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.sh b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.sh new file mode 100644 index 00000000000..39a5d8f24a0 --- /dev/null +++ b/content/en/api/service_level_objectives/code_snippets/result.api-slo-search.sh @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": "12341234123412341234123412341234", + "description": "Track the uptime of host foo which is critical to the core business.", + "name": "Critical Foo Host Uptime", + "tags": ["app:core", "kpi"], + "type": "monitor", + "type_id": 0, + "monitor_ids": [42], + "thresholds": [ + { + "timeframe": "30d", + "target": 95, + "warning": 98 + } + ], + "creator": { + "handle": "foo", + "email": "foo@foo.example.com", + "id": 42, + }, + "created": "2015-12-18T16:34:14.014039+00:00", + "modified": "2015-12-18T16:34:14.014039+00:00" + } + ], + "error": null +} diff --git a/content/en/api/service_level_objectives/service_level_objectives.md b/content/en/api/service_level_objectives/service_level_objectives.md new file mode 100644 index 00000000000..f457dee28ef --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives.md @@ -0,0 +1,17 @@ +--- +title: Service Level Objectives +type: apicontent +order: 29 +external_redirect: /api/#servicelevelobjectives +--- +## Service Level Objectives + +[Service Level Objectives][1] (or SLOs) are a key part of the site reliability engineering toolkit. SLOs provide a +framework for defining clear targets around application performance, which ultimately help teams provide a consistent +customer experience, balance feature development with platform stability, and improve communication with internal and +external users. + +For more information on creating SLOs, see the [Configuring Service Level Objectives info][2]. + +[1]: /monitors/service_level_objectives +[2]: /monitors/service_level_objectives/#configuration diff --git a/content/en/api/service_level_objectives/service_level_objectives_bulk_delete.md b/content/en/api/service_level_objectives/service_level_objectives_bulk_delete.md new file mode 100644 index 00000000000..d0bcaff768a --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_bulk_delete.md @@ -0,0 +1,13 @@ +--- +title: Bulk Delete Service Level Objective Timeframes +type: apicontent +order: 29.06 +external_redirect: /api/#bulk-delete-service-level-objectives-timeframes +--- + +## Bulk Delete Service Level Objective Timeframes + +**ARGUMENTS**: + +An non-empty object is expected in the arguments with the `key` as the `SLO ID` and the `value` as +a non-empty list of `timeframe`(s) to remove. diff --git a/content/en/api/service_level_objectives/service_level_objectives_bulk_delete_code.md b/content/en/api/service_level_objectives/service_level_objectives_bulk_delete_code.md new file mode 100644 index 00000000000..a11278cd5e7 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_bulk_delete_code.md @@ -0,0 +1,18 @@ +--- +title: Bulk Delete Service Level Objective Timeframes +type: apicode +order: 29.06 +external_redirect: /api/#bulk-delete-service-level-objectives-time-frames +--- + +**SIGNATURE**: + +`POST /v1/slo/bulk_delete` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-bulk-delete" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-bulk-delete" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_code.md b/content/en/api/service_level_objectives/service_level_objectives_code.md new file mode 100644 index 00000000000..8f040e2fb1c --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_code.md @@ -0,0 +1,6 @@ +--- +title: Service Level Objectives +type: apicode +order: 29 +external_redirect: /api/#servicelevelobjectives +--- diff --git a/content/en/api/service_level_objectives/service_level_objectives_create.md b/content/en/api/service_level_objectives/service_level_objectives_create.md new file mode 100644 index 00000000000..681cffb8b27 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_create.md @@ -0,0 +1,71 @@ +--- +title: Create a service level objective +type: apicontent +order: 29.01 +external_redirect: /api/#create-a-service-level-objective +--- + +## Create a service level objective + +Create a JSON to define your SLO. + +**ARGUMENTS**: + +* **`type`** [*required*]: + The type of the SLO, chosen from: + +| SLO Type | supported value | +|:-------------|:---------------------------------| +| [event][1] | `metric` | +| [monitor][2] | `monitor` | + +* **`name`** [*required*, *default* = **dynamic, based on query**]: + The name of the SLO. +* **`description`** [*optional*, *default* = **empty**]: + A description of the SLO. +* **`tags`** [*optional*, *default* = **empty list**]: + A list of tags to associate with your SLO. +* **`thresholds`** [*required*]: + A list of Target thresholds, requires at least 1. + + * **`timeframe`** [*required*]: + The timeframe to apply to the target value. Valid options are `7d`, `30d`, `90d`. + * **`target`** [*required*]: + The target value to associate with the SLI that defines the SLO. + * **`target_displauy`** [*optional*, *default* = **dynamic, based on query**]: + The target display value that includes the requires level of precision. + * **`warning`** [*optional*, *default* = **none**]: + A warning target value to indicate when the SLI is close to breaching the `target`. + * **`warning_display`** [*optional*, *default* = **dynamic, based on query**]: + A warning target display value that includes the requires level of precision. + +### Monitor Based SLO + +For more information, see [Monitor SLOs][1]. + +* **`monitor_ids`** [*required*, *default* = **empty list**]: + Specify up to 20 monitor IDs directly for a monitor-based SLO. You can optionally on-create-dynamically select + monitor IDs using the following option instead: +* **`monitor_search`** [*optional*]: + Optional way to specify monitor IDs on create is to use a monitor search. On first create or edit, it will dynamically + search for the provided parameters and select up to the first 50 monitors matching the query. +* **`groups`** [*optional*, *default* = **empty list**]: + **Note: Only valid on single monitor SLOs** Specify the selected groups as a sub query of the selected monitor. + +### Event Based SLOs + +There is one type of event based SLO, a metric query. For more information, see [Event SLOs][2]. + +#### Metric Query + +* **`query`** [*required*]: + The query defines the metric-based SLO query. It requires two arguments: + + * **`numerator`** [*required*]: + Defines the sum of the `good` events + * **`denominator`** [*required*]: + Defines the sum of the `total` events. **Note: this should always be >= `good` events** + + +[1]: /monitors/service_level_objectives/monitor +[2]: /monitors/service_level_objectives/event diff --git a/content/en/api/service_level_objectives/service_level_objectives_create_code.md b/content/en/api/service_level_objectives/service_level_objectives_create_code.md new file mode 100644 index 00000000000..c585f5cd9de --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_create_code.md @@ -0,0 +1,18 @@ +--- +title: Create a service level objective +type: apicode +order: 29.01 +external_redirect: /api/#create-a-service-level-objective +--- + +**SIGNATURE**: + +`POST /v1/slo` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-create" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-create" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_delete.md b/content/en/api/service_level_objectives/service_level_objectives_delete.md new file mode 100644 index 00000000000..e2a216706e6 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_delete.md @@ -0,0 +1,14 @@ +--- +title: Delete a Service Level Objective +type: apicontent +order: 29.04 +external_redirect: /api/#delete-a-service-level-objective +--- + +## Delete a Service Level Objective + +Permanently delete a SLO. + +**ARGUMENTS**: + +This endpoint takes no JSON arguments. diff --git a/content/en/api/service_level_objectives/service_level_objectives_delete_code.md b/content/en/api/service_level_objectives/service_level_objectives_delete_code.md new file mode 100644 index 00000000000..32636b2cb39 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_delete_code.md @@ -0,0 +1,18 @@ +--- +title: Delete a Service Level Objective +type: apicode +order: 29.04 +external_redirect: /api/#delete-a-service-level-objective +--- + +**SIGNATURE**: + +`DELETE /v1/slo/` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-delete" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-delete" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_delete_many.md b/content/en/api/service_level_objectives/service_level_objectives_delete_many.md new file mode 100644 index 00000000000..cd31cc6dd78 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_delete_many.md @@ -0,0 +1,12 @@ +--- +title: Delete many Service Level Objectives +type: apicontent +order: 29.05 +external_redirect: /api/#delete-many-service-level-objectives +--- + +## Delete many Service Level Objectives + +**ARGUMENTS**: + +This endpoint expects a non-empty list of `SLO ID`(s) as the message body. diff --git a/content/en/api/service_level_objectives/service_level_objectives_delete_many_code.md b/content/en/api/service_level_objectives/service_level_objectives_delete_many_code.md new file mode 100644 index 00000000000..cb412fd929f --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_delete_many_code.md @@ -0,0 +1,18 @@ +--- +title: Delete many Service Level Objectives +type: apicode +order: 29.05 +external_redirect: /api/#delete-many-service-level-objectives +--- + +**SIGNATURE**: + +`DELETE /v1/slo` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-delete-many" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-delete-many" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_edit.md b/content/en/api/service_level_objectives/service_level_objectives_edit.md new file mode 100644 index 00000000000..6658ddecfa8 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_edit.md @@ -0,0 +1,59 @@ +--- +title: Edit a Service Level Objective +type: apicontent +order: 29.03 +external_redirect: /api/#edit-a-service-level-objective +--- + +## Edit A Service Level Objective + +**ARGUMENTS**: + +* **`name`** [*required, optional on edit*]: + The name of the SLO. +* **`description`** [*optional*, *default*=**dynamic, based on query**]: + A description of the SLO. +* **`tags`** [*optional*, *default*=**None**]: + A list of tags to associate with your SLO. +* **`thresholds`** [*optional*, *default*=**None**]: + A list of Target thresholds, do not specify if not changing. + + * **`timeframe`** [*required*]: + The timeframe to apply to the target value. Valid options are `7d`, `30d`, `90d`. + * **`target`** [*required*]: + The target value to associate with the SLI that defines the SLO. + * **`target_displauy`** [*optional*, *default* = **dynamic, based on query**]: + The target display value that includes the requires level of precision. + * **`warning`** [*optional*, *default* = **none**]: + A warning target value to indicate when the SLI is close to breaching the `target`. + * **`warning_display`** [*optional*, *default* = **dynamic, based on query**]: + A warning target display value that includes the requires level of precision. + +## Monitor Based SLO + +For more information, see [Monitor SLOs][1]. +* **`monitor_ids`** [*required*, *default* = **empty list**]: + Specify up to 20 monitor IDs directly for a monitor-based SLO. You can optionally on-create-dynamically select + monitor IDs using the following option instead: +* **`monitor_search`** [*optional*]: + Optional way to specify monitor IDs on create is to use a monitor search. On first create or edit, it will dynamically + search for the provided parameters and select up to the first 50 monitors matching the query. +* **`groups`** [*optional*, *default* = **empty list**]: + **Note: Only valid on single monitor SLOs** Specify the selected groups as a sub query of the selected monitor. + +## Event Based SLO + +There is one type of event based SLO, a metric query. For more information, see [Event SLOs][2]. + +### Metric Query + +* **`query`** [*required*]: + The query defines the event-based SLO query. It requires two arguments: + + * **`numerator`** [*required*]: + Defines the sum of the `good` events. + * **`denominator`** [*required*]: + Defines the sum of the `total` events. **Note: this should always be >= `good` events** + +[1]: /monitors/service_level_objectives/monitor +[2]: /monitors/service_level_objectives/event diff --git a/content/en/api/service_level_objectives/service_level_objectives_edit_code.md b/content/en/api/service_level_objectives/service_level_objectives_edit_code.md new file mode 100644 index 00000000000..217f4b720cb --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_edit_code.md @@ -0,0 +1,18 @@ +--- +title: Edit a Service Level Objective +type: apicode +order: 29.03 +external_redirect: /api/#edit-a-service-level-objective +--- + +**SIGNATURE**: + +`PUT /v1/slo/` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-edit" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-edit" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_get.md b/content/en/api/service_level_objectives/service_level_objectives_get.md new file mode 100644 index 00000000000..c787243c34c --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_get.md @@ -0,0 +1,14 @@ +--- +title: Get a service level objective's details +type: apicontent +order: 29.02 +external_redirect: /api/#get-a-service-level-objective-s-details +--- + +## Get a service level objective's details + +Get a specific SLO's details + +**ARGUMENTS**: + +This endpoint takes no JSON arguments. diff --git a/content/en/api/service_level_objectives/service_level_objectives_get_code.md b/content/en/api/service_level_objectives/service_level_objectives_get_code.md new file mode 100644 index 00000000000..5f6d0bf97d1 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_get_code.md @@ -0,0 +1,18 @@ +--- +title: Get a service level objective's details +type: apicode +order: 29.02 +external_redirect: /api/#get-a-service-level-objective-s-details +--- + +**SIGNATURE**: + +`GET /v1/slo/` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-get" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-get" >}} diff --git a/content/en/api/service_level_objectives/service_level_objectives_search.md b/content/en/api/service_level_objectives/service_level_objectives_search.md new file mode 100644 index 00000000000..5b9c9c62276 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_search.md @@ -0,0 +1,35 @@ +--- +title: Search Service Level Objectives +type: apicontent +order: 29.07 +external_redirect: /api/#search-service-level-objectives +--- + +## Search Service Level Objectives + +Search and filter your service level objectives. + +**ARGUMENTS**: + +* **`ids`** [*optional*]: + + Query multiple SLOs by their IDs. + +* **`query`** [*optional*]: + + After entering a search query in your [List Service Level Objectives page][1], use the query parameter value in the URL of the page as value for this parameter. For more information on building a query, see [Searching SLOs][2]. + + The query can contain any number of space-separated monitor attributes, for instance `query="type:metric foo"`. + +* **`offset`** [*optional*, *default* = **0**]: + + Offset to start from. + +* **`limit`** [*optional*, *default*=**30**]: + + Number of SLOs to return per query. + + + +[1]: https://app.datadoghq.com/slo +[2]: /monitors/service_level_objectives/#searching-slos diff --git a/content/en/api/service_level_objectives/service_level_objectives_search_code.md b/content/en/api/service_level_objectives/service_level_objectives_search_code.md new file mode 100644 index 00000000000..d2cc1728728 --- /dev/null +++ b/content/en/api/service_level_objectives/service_level_objectives_search_code.md @@ -0,0 +1,18 @@ +--- +title: Search Service Level Objectives +type: apicode +order: 29.07 +external_redirect: /api/#search-service-level-objectives +--- + +**SIGNATURE**: + +`GET /v1/slo` + +**EXAMPLE REQUEST**: + +{{< code-snippets basename="api-slo-search" >}} + +**EXAMPLE RESPONSE**: + +{{< code-snippets basename="result.api-slo-search" >}} diff --git a/content/en/api/synthetics/creating_test.md b/content/en/api/synthetics/creating_test.md index 925bcd51da6..aadc794686f 100644 --- a/content/en/api/synthetics/creating_test.md +++ b/content/en/api/synthetics/creating_test.md @@ -1,6 +1,6 @@ --- title: Synthetics type: apicode -order: 29 +order: 30 external_redirect: /api/#synthetics --- diff --git a/content/en/api/synthetics/get_browsers.md b/content/en/api/synthetics/get_browsers.md index c507ee7d55c..edf3ed4e066 100644 --- a/content/en/api/synthetics/get_browsers.md +++ b/content/en/api/synthetics/get_browsers.md @@ -1,7 +1,7 @@ --- title: Get devices for browser checks type: apicontent -order: 29.9 +order: 30.9 external_redirect: /api/#get-browsers --- diff --git a/content/en/api/synthetics/get_browsers_code.md b/content/en/api/synthetics/get_browsers_code.md index 3adca7c94ad..bacf897e248 100644 --- a/content/en/api/synthetics/get_browsers_code.md +++ b/content/en/api/synthetics/get_browsers_code.md @@ -1,7 +1,7 @@ --- title: Get devices for browser checks type: apicode -order: 29.9 +order: 30.9 external_redirect: /api/#get-browsers --- diff --git a/content/en/api/synthetics/get_locations.md b/content/en/api/synthetics/get_locations.md index c604aeaa368..78c98828052 100644 --- a/content/en/api/synthetics/get_locations.md +++ b/content/en/api/synthetics/get_locations.md @@ -1,7 +1,7 @@ --- title: Get available locations type: apicontent -order: 29.91 +order: 30.91 external_redirect: /api/#get-locations --- diff --git a/content/en/api/synthetics/get_locations_code.md b/content/en/api/synthetics/get_locations_code.md index c9c0541e533..a5c73c30d2a 100644 --- a/content/en/api/synthetics/get_locations_code.md +++ b/content/en/api/synthetics/get_locations_code.md @@ -1,7 +1,7 @@ --- title: Get available locations type: apicode -order: 29.91 +order: 30.91 external_redirect: /api/#get-locations --- diff --git a/content/en/api/synthetics/get_result.md b/content/en/api/synthetics/get_result.md index 6ce8aff06ea..3666245b953 100644 --- a/content/en/api/synthetics/get_result.md +++ b/content/en/api/synthetics/get_result.md @@ -1,7 +1,7 @@ --- title: Get a specific result type: apicontent -order: 29.6 +order: 30.6 external_redirect: /api/#get-result --- diff --git a/content/en/api/synthetics/get_result_code.md b/content/en/api/synthetics/get_result_code.md index b6e87253472..00737b90dd6 100644 --- a/content/en/api/synthetics/get_result_code.md +++ b/content/en/api/synthetics/get_result_code.md @@ -1,7 +1,7 @@ --- title: Get a specific result type: apicode -order: 29.6 +order: 30.6 external_redirect: /api/#get-result --- diff --git a/content/en/api/synthetics/get_results.md b/content/en/api/synthetics/get_results.md index 1fc9bd86421..cc4f750bc3d 100644 --- a/content/en/api/synthetics/get_results.md +++ b/content/en/api/synthetics/get_results.md @@ -1,7 +1,7 @@ --- title: Get the most recent results type: apicontent -order: 29.5 +order: 30.5 external_redirect: /api/#get-results --- diff --git a/content/en/api/synthetics/get_results_code.md b/content/en/api/synthetics/get_results_code.md index df36266a79a..dd4e40042a5 100644 --- a/content/en/api/synthetics/get_results_code.md +++ b/content/en/api/synthetics/get_results_code.md @@ -1,7 +1,7 @@ --- title: Get the most recent results type: apicode -order: 29.5 +order: 30.5 external_redirect: /api/#get-results --- diff --git a/content/en/api/synthetics/get_test.md b/content/en/api/synthetics/get_test.md index ad16b0303da..eed1c234217 100644 --- a/content/en/api/synthetics/get_test.md +++ b/content/en/api/synthetics/get_test.md @@ -1,7 +1,7 @@ --- title: Get a test type: apicontent -order: 29.8 +order: 30.8 external_redirect: /api/#get-test --- diff --git a/content/en/api/synthetics/get_test_code.md b/content/en/api/synthetics/get_test_code.md index c3d789ae4da..64cd34f9eb7 100644 --- a/content/en/api/synthetics/get_test_code.md +++ b/content/en/api/synthetics/get_test_code.md @@ -1,7 +1,7 @@ --- title: Get a test type: apicode -order: 29.8 +order: 30.8 external_redirect: /api/#get-test --- diff --git a/content/en/api/synthetics/get_tests.md b/content/en/api/synthetics/get_tests.md index 30b43817d53..be11f224450 100644 --- a/content/en/api/synthetics/get_tests.md +++ b/content/en/api/synthetics/get_tests.md @@ -1,7 +1,7 @@ --- title: Get all tests type: apicontent -order: 29.7 +order: 30.7 external_redirect: /api/#get-tests --- diff --git a/content/en/api/synthetics/get_tests_code.md b/content/en/api/synthetics/get_tests_code.md index efd511b65e8..7a6f9e44d4a 100644 --- a/content/en/api/synthetics/get_tests_code.md +++ b/content/en/api/synthetics/get_tests_code.md @@ -1,7 +1,7 @@ --- title: Get all tests type: apicode -order: 29.7 +order: 30.7 external_redirect: /api/#get-tests --- diff --git a/content/en/api/synthetics/post_delete.md b/content/en/api/synthetics/post_delete.md index 03fa4736091..347acb60692 100644 --- a/content/en/api/synthetics/post_delete.md +++ b/content/en/api/synthetics/post_delete.md @@ -1,7 +1,7 @@ --- title: Delete tests type: apicontent -order: 29.4 +order: 30.4 external_redirect: /api/#post-delete --- diff --git a/content/en/api/synthetics/post_delete_code.md b/content/en/api/synthetics/post_delete_code.md index d5c175b46ea..e7b1df7e3ce 100644 --- a/content/en/api/synthetics/post_delete_code.md +++ b/content/en/api/synthetics/post_delete_code.md @@ -1,7 +1,7 @@ --- title: Delete a test type: apicode -order: 29.4 +order: 30.4 external_redirect: /api/#post-delete --- diff --git a/content/en/api/synthetics/post_test.md b/content/en/api/synthetics/post_test.md index 998de9c9617..74bdbadf24c 100644 --- a/content/en/api/synthetics/post_test.md +++ b/content/en/api/synthetics/post_test.md @@ -1,7 +1,7 @@ --- title: Create a test type: apicontent -order: 29.1 +order: 30.1 external_redirect: /api/#create-tests --- diff --git a/content/en/api/synthetics/post_test_code.md b/content/en/api/synthetics/post_test_code.md index 87a5d954dd9..8509ffad1bb 100644 --- a/content/en/api/synthetics/post_test_code.md +++ b/content/en/api/synthetics/post_test_code.md @@ -1,7 +1,7 @@ --- title: Create a test type: apicode -order: 29.1 +order: 30.1 external_redirect: /api/#create-tests --- diff --git a/content/en/api/synthetics/put_status.md b/content/en/api/synthetics/put_status.md index ed7740e0457..6aa07b714df 100644 --- a/content/en/api/synthetics/put_status.md +++ b/content/en/api/synthetics/put_status.md @@ -1,7 +1,7 @@ --- title: Start or pause a test type: apicontent -order: 29.2 +order: 30.2 external_redirect: /api/#status-test --- diff --git a/content/en/api/synthetics/put_status_code.md b/content/en/api/synthetics/put_status_code.md index 3aacce00bbb..e0a0ba12310 100644 --- a/content/en/api/synthetics/put_status_code.md +++ b/content/en/api/synthetics/put_status_code.md @@ -1,7 +1,7 @@ --- title: Start or pause a test type: apicode -order: 29.2 +order: 30.2 external_redirect: /api/#status-test --- diff --git a/content/en/api/synthetics/put_test.md b/content/en/api/synthetics/put_test.md index 3cb507fff6c..51f56b805ec 100644 --- a/content/en/api/synthetics/put_test.md +++ b/content/en/api/synthetics/put_test.md @@ -1,7 +1,7 @@ --- title: Edit a test type: apicontent -order: 29.3 +order: 30.3 external_redirect: /api/#edit-tests --- diff --git a/content/en/api/synthetics/put_test_code.md b/content/en/api/synthetics/put_test_code.md index 5a91d419909..7d7a46f48ce 100644 --- a/content/en/api/synthetics/put_test_code.md +++ b/content/en/api/synthetics/put_test_code.md @@ -1,7 +1,7 @@ --- title: Edit a test type: apicode -order: 29.3 +order: 30.3 external_redirect: /api/#edit-test --- diff --git a/content/en/api/synthetics/synthetics.md b/content/en/api/synthetics/synthetics.md index 52396a2ae51..1a42df8b320 100644 --- a/content/en/api/synthetics/synthetics.md +++ b/content/en/api/synthetics/synthetics.md @@ -1,7 +1,7 @@ --- title: Synthetics type: apicontent -order: 29 +order: 30 external_redirect: /api/#synthetics --- diff --git a/content/en/api/tags/tags.md b/content/en/api/tags/tags.md index 77fd55c0806..af27364e102 100644 --- a/content/en/api/tags/tags.md +++ b/content/en/api/tags/tags.md @@ -1,7 +1,7 @@ --- title: Tags type: apicontent -order: 30 +order: 31 external_redirect: /api/#tags --- diff --git a/content/en/api/tags/tags_add.md b/content/en/api/tags/tags_add.md index 1188ae77f17..70f2c776e72 100644 --- a/content/en/api/tags/tags_add.md +++ b/content/en/api/tags/tags_add.md @@ -1,7 +1,7 @@ --- title: Add tags to a host type: apicontent -order: 30.3 +order: 31.3 external_redirect: /api/#add-tags-to-a-host --- diff --git a/content/en/api/tags/tags_add_code.md b/content/en/api/tags/tags_add_code.md index 1504b108d96..7b4c72a350a 100644 --- a/content/en/api/tags/tags_add_code.md +++ b/content/en/api/tags/tags_add_code.md @@ -1,7 +1,7 @@ --- title: Add tags to a host type: apicode -order: 30.3 +order: 31.3 external_redirect: /api/#add-tags-to-a-host --- diff --git a/content/en/api/tags/tags_code.md b/content/en/api/tags/tags_code.md index 9ef27cf09af..0ee101a4add 100644 --- a/content/en/api/tags/tags_code.md +++ b/content/en/api/tags/tags_code.md @@ -1,6 +1,6 @@ --- title: Tags type: apicode -order: 30 +order: 31 external_redirect: /api/#tags --- diff --git a/content/en/api/tags/tags_delete.md b/content/en/api/tags/tags_delete.md index 4846eaa9a93..a2160852b51 100644 --- a/content/en/api/tags/tags_delete.md +++ b/content/en/api/tags/tags_delete.md @@ -1,7 +1,7 @@ --- title: Remove host tags type: apicontent -order: 30.5 +order: 31.5 external_redirect: /api/#remove-host-tags --- diff --git a/content/en/api/tags/tags_delete_code.md b/content/en/api/tags/tags_delete_code.md index ff5288e9554..01f720a3da8 100644 --- a/content/en/api/tags/tags_delete_code.md +++ b/content/en/api/tags/tags_delete_code.md @@ -1,7 +1,7 @@ --- title: Remove host tags type: apicode -order: 30.5 +order: 31.5 external_redirect: /api/#remove-host-tags --- diff --git a/content/en/api/tags/tags_get.md b/content/en/api/tags/tags_get.md index 9b2b0d7c3d4..2a3806bda3c 100644 --- a/content/en/api/tags/tags_get.md +++ b/content/en/api/tags/tags_get.md @@ -1,7 +1,7 @@ --- title: Get tags type: apicontent -order: 30.1 +order: 31.1 external_redirect: /api/#get-tags --- diff --git a/content/en/api/tags/tags_get_code.md b/content/en/api/tags/tags_get_code.md index 10826aec89c..414c5479db1 100644 --- a/content/en/api/tags/tags_get_code.md +++ b/content/en/api/tags/tags_get_code.md @@ -1,7 +1,7 @@ --- title: Get tags type: apicode -order: 30.1 +order: 31.1 external_redirect: /api/#get-tags --- diff --git a/content/en/api/tags/tags_get_host.md b/content/en/api/tags/tags_get_host.md index eb07db05d8c..665c21bd0f4 100644 --- a/content/en/api/tags/tags_get_host.md +++ b/content/en/api/tags/tags_get_host.md @@ -1,7 +1,7 @@ --- title: Get host tags type: apicontent -order: 30.2 +order: 31.2 external_redirect: /api/#get-host-tags --- diff --git a/content/en/api/tags/tags_get_host_code.md b/content/en/api/tags/tags_get_host_code.md index d3e20730355..47e4191874f 100644 --- a/content/en/api/tags/tags_get_host_code.md +++ b/content/en/api/tags/tags_get_host_code.md @@ -1,7 +1,7 @@ --- title: Get host tags type: apicode -order: 30.2 +order: 31.2 external_redirect: /api/#get-host-tags --- diff --git a/content/en/api/tags/tags_update.md b/content/en/api/tags/tags_update.md index 29510bf1c84..465e0e18e09 100644 --- a/content/en/api/tags/tags_update.md +++ b/content/en/api/tags/tags_update.md @@ -1,7 +1,7 @@ --- title: Update host tags type: apicontent -order: 30.4 +order: 31.4 external_redirect: /api/#update-host-tags --- diff --git a/content/en/api/tags/tags_update_code.md b/content/en/api/tags/tags_update_code.md index 0067adf7234..a1a519be073 100644 --- a/content/en/api/tags/tags_update_code.md +++ b/content/en/api/tags/tags_update_code.md @@ -1,7 +1,7 @@ --- title: Update host tags type: apicode -order: 30.4 +order: 31.4 external_redirect: /api/#update-host-tags --- diff --git a/content/en/api/timeboards/timeboards.md b/content/en/api/timeboards/timeboards.md index b8a68a3dd50..8508ea746b8 100644 --- a/content/en/api/timeboards/timeboards.md +++ b/content/en/api/timeboards/timeboards.md @@ -1,7 +1,7 @@ --- title: Timeboards type: apicontent -order: 31 +order: 32 external_redirect: /api/#timeboards --- ## Timeboards diff --git a/content/en/api/timeboards/timeboards_code.md b/content/en/api/timeboards/timeboards_code.md index e10c6b7eb27..0ecafa64728 100644 --- a/content/en/api/timeboards/timeboards_code.md +++ b/content/en/api/timeboards/timeboards_code.md @@ -1,6 +1,6 @@ --- title: Timeboards type: apicode -order: 31 +order: 32 external_redirect: /api/#timeboards --- diff --git a/content/en/api/tracing/send_trace.md b/content/en/api/tracing/send_trace.md index 05f53a3ddb5..c1e429e892e 100644 --- a/content/en/api/tracing/send_trace.md +++ b/content/en/api/tracing/send_trace.md @@ -1,7 +1,7 @@ --- title: Send traces type: apicontent -order: 32.1 +order: 33.1 external_redirect: /api/#send-traces --- diff --git a/content/en/api/tracing/send_trace_code.md b/content/en/api/tracing/send_trace_code.md index 3ce79cd05f0..48ec014350f 100644 --- a/content/en/api/tracing/send_trace_code.md +++ b/content/en/api/tracing/send_trace_code.md @@ -1,7 +1,7 @@ --- title: Send traces type: apicode -order: 32.1 +order: 33.1 external_redirect: /api/#send-traces --- diff --git a/content/en/api/tracing/tracing.md b/content/en/api/tracing/tracing.md index a059b1833c1..b7a95783926 100644 --- a/content/en/api/tracing/tracing.md +++ b/content/en/api/tracing/tracing.md @@ -1,7 +1,7 @@ --- title: Tracing type: apicontent -order: 32 +order: 33 external_redirect: /api/#tracing --- diff --git a/content/en/api/tracing/tracing_code.md b/content/en/api/tracing/tracing_code.md index 8e771433ebe..5833c5fb7e8 100644 --- a/content/en/api/tracing/tracing_code.md +++ b/content/en/api/tracing/tracing_code.md @@ -1,6 +1,6 @@ --- title: Tracing type: apicode -order: 32 +order: 33 external_redirect: /api/#tracing --- diff --git a/content/en/api/usage/usage.md b/content/en/api/usage/usage.md index 4f545394fb1..d2b2601277b 100644 --- a/content/en/api/usage/usage.md +++ b/content/en/api/usage/usage.md @@ -1,7 +1,7 @@ --- title: Usage metering type: apicontent -order: 33 +order: 34 external_redirect: /api/#usage-metering --- diff --git a/content/en/api/usage/usage_code.md b/content/en/api/usage/usage_code.md index d20954ed2d1..0b64b6b6861 100644 --- a/content/en/api/usage/usage_code.md +++ b/content/en/api/usage/usage_code.md @@ -1,6 +1,6 @@ --- title: Usage metering type: apicode -order: 33 +order: 34 external_redirect: /api/#usage-metering --- diff --git a/content/en/api/usage/usage_fargate.md b/content/en/api/usage/usage_fargate.md index 282aa1dc513..dccccf43874 100644 --- a/content/en/api/usage/usage_fargate.md +++ b/content/en/api/usage/usage_fargate.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Fargate type: apicontent -order: 33.7 +order: 34.7 external_redirect: /api/#get-hourly-usage-for-fargate --- diff --git a/content/en/api/usage/usage_fargate_code.md b/content/en/api/usage/usage_fargate_code.md index 6253bd1c5f0..357b803bb41 100644 --- a/content/en/api/usage/usage_fargate_code.md +++ b/content/en/api/usage/usage_fargate_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Fargate type: apicode -order: 33.7 +order: 34.7 external_redirect: /api/#get-hourly-usage-for-fargate --- diff --git a/content/en/api/usage/usage_hosts.md b/content/en/api/usage/usage_hosts.md index 22a65a555eb..aaaa6813b6c 100644 --- a/content/en/api/usage/usage_hosts.md +++ b/content/en/api/usage/usage_hosts.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for hosts and containers type: apicontent -order: 33.1 +order: 34.1 external_redirect: /api/#get-hourly-usage-for-hosts-and-containers --- diff --git a/content/en/api/usage/usage_hosts_code.md b/content/en/api/usage/usage_hosts_code.md index a0f9b787977..44e3e7176f5 100644 --- a/content/en/api/usage/usage_hosts_code.md +++ b/content/en/api/usage/usage_hosts_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for hosts and containers type: apicode -order: 33.1 +order: 34.1 external_redirect: /api/#get-hourly-usage-for-hosts-and-containers --- diff --git a/content/en/api/usage/usage_logs.md b/content/en/api/usage/usage_logs.md index 9a9d2aa60b4..db27ab49927 100644 --- a/content/en/api/usage/usage_logs.md +++ b/content/en/api/usage/usage_logs.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for logs type: apicontent -order: 33.2 +order: 34.2 external_redirect: /api/#get-hourly-usage-for-logs --- diff --git a/content/en/api/usage/usage_logs_code.md b/content/en/api/usage/usage_logs_code.md index 324ac0e8ecd..467bc4d50f5 100644 --- a/content/en/api/usage/usage_logs_code.md +++ b/content/en/api/usage/usage_logs_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for logs type: apicode -order: 33.2 +order: 34.2 external_redirect: /api/#get-hourly-usage-for-logs --- diff --git a/content/en/api/usage/usage_multi_org.md b/content/en/api/usage/usage_multi_org.md index 935db635349..15d29ee2bda 100644 --- a/content/en/api/usage/usage_multi_org.md +++ b/content/en/api/usage/usage_multi_org.md @@ -1,7 +1,7 @@ --- title: Get usage across your multi-org account type: apicontent -order: 33.8 +order: 34.8 external_redirect: /api/#get-usage-across-your-multi-org-account --- diff --git a/content/en/api/usage/usage_multi_org_code.md b/content/en/api/usage/usage_multi_org_code.md index 5873ceadea6..f01c0b25bfc 100644 --- a/content/en/api/usage/usage_multi_org_code.md +++ b/content/en/api/usage/usage_multi_org_code.md @@ -1,7 +1,7 @@ --- title: Get usage across your multi-org account type: apicode -order: 33.8 +order: 34.8 external_redirect: /api/#get-usage-across-your-multi-org-account --- diff --git a/content/en/api/usage/usage_synthetics.md b/content/en/api/usage/usage_synthetics.md index fbe282c83de..7f0656e4626 100644 --- a/content/en/api/usage/usage_synthetics.md +++ b/content/en/api/usage/usage_synthetics.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Synthetics type: apicontent -order: 33.6 +order: 34.6 external_redirect: /api/#get-hourly-usage-for-synthetics --- diff --git a/content/en/api/usage/usage_synthetics_code.md b/content/en/api/usage/usage_synthetics_code.md index 49511c00653..9b4a358ae86 100644 --- a/content/en/api/usage/usage_synthetics_code.md +++ b/content/en/api/usage/usage_synthetics_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Synthetics type: apicode -order: 33.6 +order: 34.6 external_redirect: /api/#get-hourly-usage-for-synthetics --- diff --git a/content/en/api/usage/usage_timeseries.md b/content/en/api/usage/usage_timeseries.md index 3cd8064c220..2786b42653e 100644 --- a/content/en/api/usage/usage_timeseries.md +++ b/content/en/api/usage/usage_timeseries.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for custom metrics type: apicontent -order: 33.3 +order: 34.3 external_redirect: /api/#get-hourly-usage-for-custom-metrics --- diff --git a/content/en/api/usage/usage_timeseries_code.md b/content/en/api/usage/usage_timeseries_code.md index b4ebc03fb60..639a87f5502 100644 --- a/content/en/api/usage/usage_timeseries_code.md +++ b/content/en/api/usage/usage_timeseries_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for custom metrics type: apicode -order: 33.3 +order: 34.3 external_redirect: /api/#get-hourly-usage-for-custom-metrics --- diff --git a/content/en/api/usage/usage_top_avg_metrics.md b/content/en/api/usage/usage_top_avg_metrics.md index 9714e44d5b6..edc3d371732 100644 --- a/content/en/api/usage/usage_top_avg_metrics.md +++ b/content/en/api/usage/usage_top_avg_metrics.md @@ -1,7 +1,7 @@ --- title: Get top 500 custom metrics by hourly average type: apicontent -order: 33.4 +order: 34.4 external_redirect: /api/#get-top-500-custom-metrics-by-hourly-average --- diff --git a/content/en/api/usage/usage_top_avg_metrics_code.md b/content/en/api/usage/usage_top_avg_metrics_code.md index 9c5227fd8aa..9e84b4df4fe 100644 --- a/content/en/api/usage/usage_top_avg_metrics_code.md +++ b/content/en/api/usage/usage_top_avg_metrics_code.md @@ -1,7 +1,7 @@ --- title: Get top 500 custom metrics by hourly average type: apicode -order: 33.4 +order: 34.4 external_redirect: /api/#get-top-500-custom-metrics-by-hourly-average --- diff --git a/content/en/api/usage/usage_trace_search.md b/content/en/api/usage/usage_trace_search.md index 77f4b523a53..3f2ebf75a3e 100644 --- a/content/en/api/usage/usage_trace_search.md +++ b/content/en/api/usage/usage_trace_search.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Trace Search type: apicontent -order: 33.5 +order: 34.5 external_redirect: /api/#get-hourly-usage-for-trace-search --- diff --git a/content/en/api/usage/usage_trace_search_code.md b/content/en/api/usage/usage_trace_search_code.md index 2d3403cf71e..2d69b7707e1 100644 --- a/content/en/api/usage/usage_trace_search_code.md +++ b/content/en/api/usage/usage_trace_search_code.md @@ -1,7 +1,7 @@ --- title: Get hourly usage for Trace Search type: apicode -order: 33.5 +order: 34.5 external_redirect: /api/#get-hourly-usage-for-trace-search --- diff --git a/content/en/api/users/users.md b/content/en/api/users/users.md index c34fd0ab8cc..c786dcad4ba 100644 --- a/content/en/api/users/users.md +++ b/content/en/api/users/users.md @@ -1,7 +1,7 @@ --- title: Users type: apicontent -order: 34 +order: 35 external_redirect: /api/#users --- diff --git a/content/en/api/users/users_code.md b/content/en/api/users/users_code.md index a1bd0a9f36c..dee18585b1b 100644 --- a/content/en/api/users/users_code.md +++ b/content/en/api/users/users_code.md @@ -1,6 +1,6 @@ --- title: Users type: apicode -order: 34 +order: 35 external_redirect: /api/#users --- diff --git a/content/en/api/users/users_create.md b/content/en/api/users/users_create.md index 45f5866bc80..e6cb74792eb 100644 --- a/content/en/api/users/users_create.md +++ b/content/en/api/users/users_create.md @@ -1,7 +1,7 @@ --- title: Create user type: apicontent -order: 34.1 +order: 35.1 external_redirect: /api/#create-user --- diff --git a/content/en/api/users/users_create_code.md b/content/en/api/users/users_create_code.md index e308e5e5a70..96799f76fe3 100644 --- a/content/en/api/users/users_create_code.md +++ b/content/en/api/users/users_create_code.md @@ -1,7 +1,7 @@ --- title: Create user type: apicode -order: 34.1 +order: 35.1 external_redirect: /api/#create-user --- diff --git a/content/en/api/users/users_delete.md b/content/en/api/users/users_delete.md index 540de9b66a1..b0fa59971b3 100644 --- a/content/en/api/users/users_delete.md +++ b/content/en/api/users/users_delete.md @@ -1,7 +1,7 @@ --- title: Disable user type: apicontent -order: 34.5 +order: 35.5 external_redirect: /api/#disable-user --- diff --git a/content/en/api/users/users_delete_code.md b/content/en/api/users/users_delete_code.md index c231cf73334..29883715242 100644 --- a/content/en/api/users/users_delete_code.md +++ b/content/en/api/users/users_delete_code.md @@ -1,7 +1,7 @@ --- title: Disable user type: apicode -order: 34.5 +order: 35.5 external_redirect: /api/#disable-user --- diff --git a/content/en/api/users/users_get.md b/content/en/api/users/users_get.md index 0096da56297..f80d6ac8a83 100644 --- a/content/en/api/users/users_get.md +++ b/content/en/api/users/users_get.md @@ -1,7 +1,7 @@ --- title: Get user type: apicontent -order: 34.2 +order: 35.2 external_redirect: /api/#get-user --- diff --git a/content/en/api/users/users_get_code.md b/content/en/api/users/users_get_code.md index 2784ee0b6b0..f3e7c186636 100644 --- a/content/en/api/users/users_get_code.md +++ b/content/en/api/users/users_get_code.md @@ -1,7 +1,7 @@ --- title: Get user type: apicode -order: 34.2 +order: 35.2 external_redirect: /api/#get-user --- diff --git a/content/en/api/users/users_getall.md b/content/en/api/users/users_getall.md index 5482f00b879..bb1a89377c5 100644 --- a/content/en/api/users/users_getall.md +++ b/content/en/api/users/users_getall.md @@ -1,7 +1,7 @@ --- title: Get all users type: apicontent -order: 34.3 +order: 35.3 external_redirect: /api/#get-all-users --- diff --git a/content/en/api/users/users_getall_code.md b/content/en/api/users/users_getall_code.md index c383c27b927..ce1679e6d74 100644 --- a/content/en/api/users/users_getall_code.md +++ b/content/en/api/users/users_getall_code.md @@ -1,7 +1,7 @@ --- title: Get all users type: apicode -order: 34.3 +order: 35.3 external_redirect: /api/#get-all-users --- diff --git a/content/en/api/users/users_update.md b/content/en/api/users/users_update.md index a8aa347e9b0..ad0d73b28c7 100644 --- a/content/en/api/users/users_update.md +++ b/content/en/api/users/users_update.md @@ -1,7 +1,7 @@ --- title: Update user type: apicontent -order: 34.4 +order: 35.4 external_redirect: /api/#update-user --- diff --git a/content/en/api/users/users_update_code.md b/content/en/api/users/users_update_code.md index 7121f55c1ec..bfaba679bd7 100644 --- a/content/en/api/users/users_update_code.md +++ b/content/en/api/users/users_update_code.md @@ -1,7 +1,7 @@ --- title: Update user type: apicode -order: 34.4 +order: 35.4 external_redirect: /api/#update-user --- diff --git a/content/en/monitors/_index.md b/content/en/monitors/_index.md index 0a5bdee7e75..0dc10e17783 100644 --- a/content/en/monitors/_index.md +++ b/content/en/monitors/_index.md @@ -28,7 +28,6 @@ Monitoring all of your infrastructure in one place wouldn't be complete without {{< nextlink href="/monitors/check_summary" >}}Check Summary: See the status of all your integration checks in one place.{{< /nextlink >}} {{< nextlink href="/monitors/notifications" >}}Notifications: Once a monitor is created, you are notified when its conditions are met. You can also notify team members by email, 3rd party services (like Pagerduty), or other custom endpoints with Webhooks.{{< /nextlink >}} {{< nextlink href="/monitors/downtimes" >}}Downtimes: Schedule downtimes for system shutdowns, off-line maintenance, or upgrades without triggering your monitors.{{< /nextlink >}} - {{< nextlink href="/monitors/slo_widget" >}}SLO Widget: Track service level objectives (SLOs) with the SLO and uptime widget on dashboards.{{< /nextlink >}} {{< nextlink href="/monitors/guide" >}}Guides: Additional helpful articles about monitors and alerting.{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/en/monitors/service_level_objectives/_index.md b/content/en/monitors/service_level_objectives/_index.md new file mode 100644 index 00000000000..cc918639f8b --- /dev/null +++ b/content/en/monitors/service_level_objectives/_index.md @@ -0,0 +1,103 @@ +--- +title: Service Level Objectives +kind: documentation +description: "Track the status of your SLOs" +disable_toc: true +aliases: + - /monitors/monitor_uptime_widget/ + - /monitors/slos/ +further_reading: +- link: "https://www.datadoghq.com/blog/slo-monitoring-widget/" + tag: "Blog" + text: "Track the status of your SLOs with the new monitor uptime widget" +--- + +## Overview + +Service Level Objectives, or SLOs, are a key part of the site reliability engineering toolkit. SLOs provide a +framework for defining clear targets around application performance, which ultimately help teams provide a consistent +customer experience, balance feature development with platform stability, and improve communication with internal and +external users. + +## Setup + +Use the SLO and uptime widget to track your SLOs (Service Level Objectives) and uptime on screenboards and timeboards. You can use SLO by adding a widget to a dashboard, or by going to Datadog’s [Service Level Objectives page][1] to create new SLOs and view all existing ones. Select an existing SLO from the dropdown and display it on any dashboard. + +*Uptime* is defined as the amount of time a monitor was in an *up* state (OK) compared to *down* state (non-OK). The status is represented in bars as green (up) and red (down). Example: ’99 % of the time latency is less than 200ms.` + +You can also track success rate and event-based SLIs (Service Level Indicators). Example: `99 % of requests are successful.` + +{{< img src="monitors/service_level_objectives/create-slo.png" alt="create a slo" responsive="true" >}} + +### Configuration + +1. On the [SLO page][1], select **New SLO +**. +2. Define the source for your monitors. Monitor types are [Event based][5] and [Monitor based][4]. +3. Set your target uptime. Available windows are: 7 days, month-to-date, 30 days (rolling), Previous Month, and 90 days (rolling). For 7 days, the widget is restricted to two decimal places. For 30 days and up, it’s restricted to two to three decimal places. +4. Finally, give the SLO a title, describe it in more detail, add tags, and save it. + +Once you have monitors set up, on the [main Service Level Objectives page][1], you can view the overall uptime percentage only—or the overall percentage, plus the uptime for each monitor. + +{{< img src="monitors/service_level_objectives//slo-overview.png" alt="slo main page" responsive="true" >}} + +## Edit an SLO + +To edit an SLO, hover over the SLO on the right, and click the edit pencil icon. + +## Searching SLOs + +The [List Service Level Objectives][2] page lets you run an advanced search of all SLOs so you can view, delete or edit service tags for selected SLOs in bulk. You can also clone or fully edit any individual SLO in the search results. + +Advanced search lets you query SLOs by any combination of SLO attributes: + +* `name` and `description` - text search +* `time window` - *, 7d, 30d, 90d +* `type` - metric, monitor +* `creator` +* `id` +* `service` - tags +* `team` - tags +* `env` - tags + +To run a search, use the checkboxes on the left and the search bar. When you check the boxes, the search bar updates with the equivalent query. Likewise, when you modify the search bar query (or write one from scratch), the checkboxes update to reflect the change. Query results update in real-time as you edit the query; there's no 'Search' button to click. + +To edit an individual SLO, hover over it and use the buttons to the far right in its row: **Edit**, **Clone**, **Delete**. To see more detail on a SLO, click its table row to visit its status page. + +### SLO Tags + +When you create or edit an SLO, you can add tags for filtering on the [list SLOs][2] pages. + +### Overall Uptime Calculation + +{{< img src="monitors/service_level_objectives/overall_uptime_calculation.png" alt="overall uptime calculation" responsive="true" >}} + +The overall uptime result calculated for a time `T_x` can be expressed using boolean logic as the logical conjunction (the `AND` conjunction) of all of the monitor states at time `T_x`. + +If at time `T_x` the state of all monitors `[m0, ..., m_n]` are all in `OK` state, then the overall uptime for time `T_x` will be the `OK` state. However, if any number of monitors at time `T_x` have state `ALERT`, then the overall uptime for time `T_x` will be the `ALERT` state. + +Consider the following example: + +| Monitor | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 | +|--------------------|----|----|-------|----|-------|----|----|----|----|----|-------| +| m0 | OK | OK | OK | OK | ALERT | OK | OK | OK | OK | OK | ALERT | +| m1 | OK | OK | OK | OK | OK | OK | OK | OK | OK | OK | ALERT | +| m2 | OK | OK | ALERT | OK | ALERT | OK | OK | OK | OK | OK | ALERT | +| **Overall Uptime** | OK | OK | ALERT | OK | ALERT | OK | OK | OK | OK | OK | ALERT | + +## View your SLOs + +You can view, edit your SLO and its properties and see the status over time and the history of your SLO from the [SLO status page][2]. + +## SLO Widgets + +After creating your SLO, you can use the SLO dashboard widget to visualize the status of your SLOs along with your dashboard metrics, logs and APM data. For more information about SLO Widgets, see the [SLO Widgets documentation][3] page. + +## Further Reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/slo/new +[2]: https://app.datadoghq.com/slo +[3]: /graphing/widgets/slo +[5]: /monitors/service_level_objectives/monitor/ +[6]: /monitors/service_level_objectives/event/ \ No newline at end of file diff --git a/content/en/monitors/service_level_objectives/event.md b/content/en/monitors/service_level_objectives/event.md new file mode 100644 index 00000000000..9b1ba69ab55 --- /dev/null +++ b/content/en/monitors/service_level_objectives/event.md @@ -0,0 +1,55 @@ +--- +title: Event based SLO +kind: documentation +description: "Use metrics to define a Service Level Objective" +further_reading: +- link: "metrics" + tag: "Documentation" + text: "More information about metrics" +--- + +## Overview + +Event based SLOs are useful for a count-based stream of data where you are differentiating good and bad events. +There is one type of event based SLO - a metric query SLO. A metric query uses the sum of the good events divided by the sum of total events over time to calculate a Service Level Indicator (or SLI). + +## Setup + +On the [SLO page][1], select **New SLO +**. Then select **Event**. + +### Configuration + +#### Define queries + +There are two queries to define. The first query defines the sum of the good events, while the second query defines the sum of +the total events. + +Datadog reccomends the `sum by` aggregator and to add all events. + +**Example:** If you are tracking HTTP return codes, and your metric includes a tag like `code:2xx` || `code:3xx` || `code:4xx`. +The sum of good events would be `sum:httpservice.hits{code:2xx} + sum:httpservice.hits{code:4xx}`. And the `total` events +would be `sum:httpservice.hits{!code:3xx}`. + +Why did we exclude `HTTP 3xx`? - These are typically redirects and should not count for or against the SLI, but other non 3xx +based error codes should. In the `total` case we want all types minus `HTTP 3xx`, in the `numerator` we only want `OK` type +status codes. + +#### Set your targets + +SLO targets are the stat you use to measure uptime success. + +First select your target value, example: `95% of all HTTP requests should be "good" over the last 7 days`. + +You can optionally include a warning value that is greater than the target value to indicate when you are approaching +an SLO breach. + +#### Identify the indicator + +Here we add contextual information about the purpose of the SLO, including any related information +in the description and tags you would like to associate with the SLO. + +## Further Reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/slo/new/event diff --git a/content/en/monitors/service_level_objectives/monitor.md b/content/en/monitors/service_level_objectives/monitor.md new file mode 100644 index 00000000000..950de8b2af6 --- /dev/null +++ b/content/en/monitors/service_level_objectives/monitor.md @@ -0,0 +1,60 @@ +--- +title: Monitor SLO +kind: documentation +description: "Use Monitors to define the Service Level Objective" +further_reading: +- link: "monitors" + tag: "Documentation" + text: "More information about Monitors" +--- + +## Overview + +Select a monitor based source if you want to build your SLO based on existing or new Datadog monitors. For more information about monitors, see the [Monitor documentation][1]. Monitor based SLOs are useful for a time-based stream of data where you are differentiating time of good behavior vs bad behavior. +Using the sum of the good time divided by the sum of total time provides a Service Level Indicator (or SLI). + +## Setup + +On the [SLO page][2], select **New SLO +**. Then select **Monitor**. + +### Configuration + +#### Define queries + +To start, you need to be using Datadog monitors. To set up a new SLO monitor, go to the [monitor page][3]. Search for monitors by name and click on it to add it to the source list. An example SLO on a monitor is if the latency of all user requests should be less than 250ms 99% of the time in any 30 day window. To set this up, you would: + +1. Select a single monitor or, +2. Select multiple monitors (up to 20) or, +3. Select a single multi-alert monitor and select specific monitor groups (up to 20) to be included in SLO calculation. + +**Supported monitor types**: + +- metric monitor types - including metric, anomaly, APM, forecast, outlier, and integration metrics +- service checks +- synthetics + +**Example:** You might be tracking the uptime of a physical device. You have already configured a metric monitor on `host:foo` using +a custom metric. This monitor might also ping your on-call team if it's no longer reachable. To avoid burnout you want to +track how often this host is down. + +#### Set your targets + +SLO targets are the stat you use to measure uptime success. + +First select your target value, example: `95% of all HTTP requests should be "good" over the last 7 days`. + +You can optionally include a warning value that is greater than the target value to indicate when you are approaching +an SLO breach. + +#### Identify this indicator + +Here we add contextual information about the purpose of the SLO, including any related information +in the description and tags you would like to associate with the SLO. + +## Further Reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /monitors +[2]: https://app.datadoghq.com/slo/new/monitor +[3]: https://app.datadoghq.com/monitors#create/metric diff --git a/content/en/monitors/slos.md b/content/en/monitors/slos.md deleted file mode 100644 index 64874b94a2d..00000000000 --- a/content/en/monitors/slos.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Service Level Objectives -kind: documentation -description: "Track the status of your SLOs" -disable_toc: true -aliases: - - /monitors/monitor_uptime_widget/ -further_reading: -- link: "https://www.datadoghq.com/blog/slo-monitoring-widget/" - tag: "Blog" - text: "Track the status of your SLOs with the new monitor uptime widget" ---- - -## Setup - -Use the SLO and uptime widget to track your SLOs (Service Level Objectives) and uptime on screenboards and timeboards. You can use SLO by adding a widget to a dashboard, or by going to Datadog’s [Service Level Objectives page][1] to create new SLOs and view all existing ones. Select an existing SLO from the dropdown and display it on any dashboard. - -*Uptime* is defined as the amount of time a monitor was in an *up* state (OK) compared to *down* state (non-OK). The status is represented in bars as green (up) and red (down). Example: ’99 % of the time latency is less than 200ms.` - -You can also track success rate and event-based SLIs (Service Level Indicators). Example: `99 % of requests are successful.` - -{{< img src="monitors/slo/create-slo.png" alt="create a slo" responsive="true" >}} - -### Configuration - -1. On the [SLO page][1], select **New SLO +**. -2. Define the source for your monitors. -3. Set your target uptime. -4. Finally, give the SLO a title and save it. - -Once you have monitors set up, on the [main Service Level Objectives page][1], you can view the overall uptime percentage only—or the overall percentage, plus the uptime for each monitor. - -{{< img src="monitors/slo/slo-overview.png" alt="slo main page" responsive="true" >}} - -### Options - -#### Define the source - -| Option | Description | -| ------------------- | ------------------------------------------------------------------------- | -| [Monitor](#monitor) | Define the percent uptime for your service. | -| [Event](#event) | Define when you want Datadog to warn you about uptime for your service. | - -##### Monitor - -Select a monitor based source if you want to build your SLO based on existing or new Datadog monitors. For more information about monitors, see the [Monitor documentation][2]. - -To set up a new SLO monitor, go to the [monitor page][3]. An example SLO on a monitor is if the latency of all user requests should be less than 250ms 99% of the time in any 30 day window. To set this up, you would: - -1. Select a single monitor or, -2. Select multiple monitors (up to 20) or, -3. Select a single multi-alert monitor and select specific monitor groups (up to 20) to be included in SLO calculation. - -**Supported monitor types**: - -- metric monitor types - including metric, anomaly, APM, forecast, outlier, and integration metrics -- service checks -- synthetics - -##### Event - -Select your metrics. Define a success rate through numerator and denominator fields. Select the metrics that represent your successful events in the numerator, and select the metrics that represent your total events in the denominator. - -You can add up to as many metrics as you need for both fields and add a formula to calculate the total for each. - -#### Define your target - -Available windows are: 7 days, month-to-date, 30 days (rolling), Previous Month, and 90 days (rolling). - -**Note**: For 7 days, the widget is restricted to two decimal places. For 30 days and up, it’s restricted to two to three decimal places. - -### Show error budget - -By default, the widget displays the error budget. The error budget represents the amount of time you are allowed to be in the red until you breach your defined SLO. This is calculated using the value entered into your conditional formatting and the time window selected. If nothing is selected, you will see an error message that states: _No Rules Specified_. You can change this by editing the widget. - -### Overall Uptime Calculation - -{{< img src="monitors/slo/overall_uptime_calculation.png" alt="overall uptime calculation" responsive="true" >}} - -The overall uptime result calculated for a time `T_x` can be expressed using boolean logic as the logical conjunction (the `AND` conjunction) of all of the monitor states at time `T_x`. - -If at time `T_x` the state of all monitors `[m0, ..., m_n]` are all in `OK` state, then the overall uptime for time `T_x` will be the `OK` state. However, if any number of monitors at time `T_x` have state `ALERT`, then the overall uptime for time `T_x` will be the `ALERT` state. - -Consider the following example: - -| Monitor | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | t10 | -|--------------------|----|----|-------|----|-------|----|----|----|----|----|-------| -| m0 | OK | OK | OK | OK | ALERT | OK | OK | OK | OK | OK | ALERT | -| m1 | OK | OK | OK | OK | OK | OK | OK | OK | OK | OK | ALERT | -| m2 | OK | OK | ALERT | OK | ALERT | OK | OK | OK | OK | OK | ALERT | -| **Overall Uptime** | OK | OK | ALERT | OK | ALERT | OK | OK | OK | OK | OK | ALERT | - -#### `OK` States - -- At times `t0`, `t1`, `t3`, `t5`, `t6`, `t7`, `t8`, and `t9`, all of the monitors `m0`, `m1`, `m2` are in `OK` state, so the overall uptime for these times are in `OK` state. - -#### `ALERT` States - -- At time `t2`, monitor `m2` is in `ALERT` state, so the overall uptime at `t2` is in `ALERT` state. -- At time `t4`, monitors `m0` and `m2` are in `ALERT` state, so the overall uptime at `t4` is in `ALERT` state. -- At time `t10`, monitors `m0`, `m1`, and `m2` are in `ALERT` state, so the overall uptime at `t10` is in `ALERT` state. - -## Feature requests - -To submit a feature request, reach out to [Datadog Support][2]. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://app.datadoghq.com/slo -[2]: /monitors -[3]: https://app.datadoghq.com/monitors#create/metric diff --git a/static/images/monitors/slo/create-slo.png b/static/images/monitors/service_level_objectives/create-slo.png similarity index 100% rename from static/images/monitors/slo/create-slo.png rename to static/images/monitors/service_level_objectives/create-slo.png diff --git a/static/images/monitors/slo/overall_uptime_calculation.png b/static/images/monitors/service_level_objectives/overall_uptime_calculation.png similarity index 100% rename from static/images/monitors/slo/overall_uptime_calculation.png rename to static/images/monitors/service_level_objectives/overall_uptime_calculation.png diff --git a/static/images/monitors/slo/slo-overview.png b/static/images/monitors/service_level_objectives/slo-overview.png similarity index 100% rename from static/images/monitors/slo/slo-overview.png rename to static/images/monitors/service_level_objectives/slo-overview.png