Update Instance-level Thresholds

Last updated on 26 February, 2021

You can use LogicMonitor’s REST API to programmatically update instance level thresholds.

Note: As with all of our API calls, authentication is required.

/device/devices/{deviceId}/devicedatasources/{deviceDatasourceId}/instances/{instanceId}/alertsettings/{id}

Where:

  • {deviceId} is the id of the device you’d like to see thresholds for.  You can get group Ids from a GET request to the devices resource.
  • {deviceDatasourceId} is the id of the device datasource you’d like to see thresholds for.  You can get this Id by making a GET request to the device datasources resource
  • {instanceId} is the id of the instance you’d like to see thresholds for.  You can get this id by making a GET request to the instances resource
  • {id} is the id of the alert setting you’d like to update, from a Get instance-level thresholds request.

Request Parameters: You can include the following parameters in your PUT request:

Property

Required?

Description

alertExpr No – defaults to no thresholds The thresholds that should be associated with the datapoint. Note that you need to have a space between the operator and each threshold (e.g. > 1 2 3)
disableAlerting No – defaults to false Whether or not alerting will be disabled for the datapoint

Example

The following Python script updates the threshold for the recvd packets datapoint for device datasource 3320 (which is Ping in api.logicmonitor.com):

#!/bin/env python

import requests
import json
import hashlib
import base64
import time
import hmac

#Account Info
AccessId ='48v2wRzfK94y53sq5EuF'
AccessKey ='H_D9i(f5~B^U36^K6i42=^nS~e75gy382Bf6{)P+'
Company = 'api'

#Request Info
httpVerb ='PUT'
resourcePath = '/device/devices/56/devicedatasources/3320/instances/1469/alertsettings/13363'
queryParams =''
data = '{"alertExpr":"< 10"}'

#Construct URL 
url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath +queryParams

#Get current time in milliseconds
epoch = str(int(time.time() * 1000))

#Concatenate Request details
requestVars = httpVerb + epoch + data + resourcePath

#Construct signature
hmac1 = hmac.new(AccessKey.encode(),msg=requestVars.encode(),digestmod=hashlib.sha256).hexdigest()
signature = base64.b64encode(hmac1.encode())

#Construct headers
auth = 'LMv1 ' + AccessId + ':' + signature.decode() + ':' + epoch
headers = {'Content-Type':'application/json','Authorization':auth}

#Make request
response = requests.put(url, data=data, headers=headers)

#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Python 3