Skip to main content

Threshold Profiles

Description

A Threshold profile contains a list of threshold rules. Threshold rules refer to low level monitoring numeric values that accompany metric data and threshold limits on those values that can deem the status 'WARNING' or 'CRITICAL'

Threshold format

Each threshold rule is expressed as string in the following format {label}={value}[uom];{warning};{critical};{min};{max}

  • label : can contain alphanumeric characters but must always begin with a letter
  • value : is a float or integer
  • uom : is a string unit of measurement (accepted values: s,us,ms,B,KB,MB,TB,%,c)
  • warning: is a range defining the warning threshold limits
  • critical: is a range defining the critical threshold limits
  • min: is a float or integer defining the minimum value
  • max: is a float or integer defining the maximum value

Note: min,max can be omitted.

Ranges ({warning} or {critical}) are defined in the following format: @{floor}:{ceiling} -@: optional - negates the range (value should belong outside ranges limits)

  • floor: integer/float or ~ that defines negative infinity
  • ceiling: integer/float or empty (defining positive infinity)

Thresholds rule

Each thresholds rule can contain multiple threshold definitions separated by space for e.g. label01=1s;0:10;11:12 label02=1B;0:200;199:500;0;500

Thresholds profile

Each thresholds profile has a name and contains a list of thresholds rules in the following json format Each rule must always refer to a metric. It can optionally refer to a host and an endpoint group.

{
"id": "68dbd3d8-c95d-41ea-b13e-7ea3644285e5",
"name": "example-threshold-profile-101"
"rules":[
{
"metric": "httpd.ResponseTime"
"thresholds": "response=20ms;0:300;299:1000"
},
{
"host": "webserver01.example.foo"
"metric": "httpd.ResponseTime"
"thresholds": "response=20ms;0:200;199:300"
},
{
"endpoint_group": "TEST-SITE-51"
"metric": "httpd.ResponseTime"
"thresholds": "response=20ms;0:500;499:1000"
}
]
}

API Calls

NameDescriptionShortcut
GET: List Thresholds Profile RequestsThis method can be used to retrieve a list of current Thresholds profiles. Description
GET: List a specific Threshold profileThis method can be used to retrieve a specific Threshold profile based on its id. Description
POST: Create a new Threshold profileThis method can be used to create a new Threshold profile Description
PUT: Update an Threshold profileThis method can be used to update information on an existing Threshold profile Description
DELETE: Delete an Threshold profileThis method can be used to delete an existing Threshold profile Description

[GET]: List Threshold Profiles

This method can be used to retrieve a list of current Threshold profiles

Input

GET /thresholds_profiles

Optional Query Parameters

TypeDescriptionRequired
namethresholds profile name to be used as queryNO
dateDate to retrieve a historic version of the thresholds profiles. If no date parameter is provided the most current profile will be returnedNO

Request headers

x-api-key: shared_key_value
Accept: application/json

Response

Headers: Status: 200 OK

Response body

Json Response

{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50b",
"name": "thr01",
"rules": [
{
"host": "hostFoo",
"metric": "metricA",
"thresholds": "freshnesss=1s;10;9:;0;25 entries=1;3;2:0;10"
}
]
},
{
"id": "6ac7d222-1f8e-4a02-a502-720e8f11e50b",
"name": "thr02",
"rules": [
{
"host": "hostFoo",
"metric": "metricA",
"thresholds": "freshness=1s;10;9:;0;25 entries=1;3;2:0;10"
}
]
},
{
"id": "6ac7d555-1f8e-4a02-a502-720e8f11e50b",
"name": "thr03",
"rules": [
{
"host": "hostFoo",
"metric": "metricA",
"thresholds": "freshness=1s;10;9:;0;25 entries=1;3;2:0;10"
}
]
}
]
}

[GET]: List A Specific Thresholds profile

This method can be used to retrieve specific Thresholds profile based on its id

Input

GET /thresholds_profiles/{ID}

Request headers

x-api-key: shared_key_value
Accept: application/json

Optional Query Parameters

TypeDescriptionRequired
dateDate to retrieve a historic version of the thresholds profile. If no date parameter is provided the most current profile will be returnedNO

Response

Headers: Status: 200 OK

Response body

Json Response

{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d222-1f8e-4a02-a502-720e8f11e50b",
"name": "thr02",
"rules": [
{
"host": "hostFoo",
"metric": "metricA",
"thresholds": "freshness=1s;10;9:;0;25 entries=1;3;2:0;10"
}
]
}
]
}

[POST]: Create a new Thresholds Profile

This method can be used to insert a new thresholds profile

Input

POST /thresholds_profiles

Request headers

x-api-key: shared_key_value
Accept: application/json
TypeDescriptionRequired
dateDate to create a historic version of the thresholds profile. If no date parameter is provided the most current profile will be returnedNO

POST BODY

{
"name": "thr04",
"rules": [
{
"metric": "metricB",
"thresholds": "time=1s;10;9:30;0;30"
}
]
}

Response

Headers: Status: 201 Created

Response body

Json Response

{
"status": {
"message": "Thresholds Profile successfully created",
"code": "201"
},
"data": {
"id": "{{ID}}",
"links": {
"self": "https:///api/v2/thresholds_profiles/{{ID}}"
}
}
}

[PUT]: Update information on an existing operations profile

This method can be used to update information on an existing operations profile

Input

PUT /thresholds_profiles/{ID}

Request headers

x-api-key: shared_key_value
Accept: application/json
TypeDescriptionRequired
dateDate to update a historic version of the thresholds profile. If no date parameter is provided the most current profile will be returnedNO

PUT BODY

{
"name": "thr04",
"rules": [
{
"metric": "metricB",
"thresholds": "time=1s;10;9:30;0;30"
}
]
}

Response

Headers: Status: 200 OK

Response body

Json Response

{
"status": {
"message": "Thresholds Profile successfully updated",
"code": "200"
}
}

[DELETE]: Delete an existing aggregation profile

This method can be used to delete an existing aggregation profile

Input

DELETE /thresholds_profiles/{ID}

Request headers

x-api-key: shared_key_value
Accept: application/json

Response

Headers: Status: 200 OK

Response body

Json Response

{
"status": {
"message": "Operations Profile Successfully Deleted",
"code": "200"
}
}

Validation Checks

When submitting or updating a new threshold profile, validation checks are performed on json POST/PUT body for the following cases:

  • Check if each thresholds rule is valid according to threshold specification discussed in the first paragraph

When an invalid operations profile is submitted the api responds with a validation error list:

Example invalid profile

{
"name": "test-invalid-01",
"rules": [
{ "thresholds": "bad01=33;33s" },
{ "thresholds": "good01=33s;33 good02=1s;~:10;9:;-20;30" },
{ "thresholds": "bad02=33sbad03=1s;~~:10;9:;-20;30" },
{ "thresholds": "33;33 bad04=33s;33 -20;30" },
{ "thresholds": "good01=2KB;0:3;2:10;0;20 good02=1c;~:10;9:30;-30;30" }
]
}

Api response is the following:

Response

Headers: Status: 422 Unprocessable Entity

Response body

{
"status": {
"message": "Validation Error",
"code": "422"
},
"errors": [
{
"message": "Validation Failed",
"code": "422",
"details": "Invalid threshold: bad01=33;33s"
},
{
"message": "Validation Failed",
"code": "422",
"details": "Invalid threshold: bad02=33sbad03=1s;~~:10;9:;-20;30"
},
{
"message": "Validation Failed",
"code": "422",
"details": "Invalid threshold: 33;33 bad04=33s;33 -20;30"
}
]
}