Update Alert Rules
Last updated on 29 June, 2022Overview
You can use LogicMonitor’s REST API to programmatically update Alert Rules. As with all of our API calls, authentication is required.
Request Information
HTTP Method: PUT
Resource URI: /setting/alert/rules/{id}
(where id is the id of the alert rule you’d like to update).
Request Parameters: You can include the following parameters in your PUT request.
Property | Description | Required? | Type | Example |
name | The name of the alert rule | Yes | String | “name”:”prodDBErrors” |
priority | The priority associated with the alert rule | Yes | Integer | “priority”:100 |
levelStr | The alert severity levels the alert rule is configured to match. Possible values are All | Warn | Error | Critical | No. Defaults to “All” | String | “levelStr”:”All” |
devices | The device names and service names the alert rule is configured to match | No. Defaults to * for all devices | JSON Array | “devices” : [ “prod*” ] |
deviceGroups | The device groups and service groups the alert rule is configured to match | No. Defaults to * for all groups. | JSON Array | “deviceGroups” : [ “Production*” ] |
datasource | The datasource the alert rule is configured to match | Yes | String | “datasource” : “*SQL*” |
instance | The instance the alert rule is configured to match | Yes | String | “instance” : “*” |
datapoint | The datapoint the alert rule is configured to match | Yes | String | “datapoint” : “*” |
escalationInterval | The escalation interval associated with the alert rule, in minutes | Yes | Integer | “escalationInterval” : 15 |
escalatingChainId | The id of the escalation chain associated with the alert rule | Yes | Integer | “escalatingChainId” : 12 |
suppressAlertClear | Whether or not alert clear notifications should be sent to the alert rule | No. Defaults to false. | Boolean | “suppressAlertClear” : true |
suppressAlertAckSdt | Whether or not status notifications for acknowledgements and SDTs should be sent to the alert rule | No. Defaults to false | Boolean | “suppressAlertAckSdt” : false |
Examples
Example: Update Alert Rule
The following example updates alert rule 74 in account 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 = '/setting/alert/rules/74'
queryParams =''
data = '{"name":"DBAlerts","priority":500,"datasource":"*MYSQL*","instance":"*","datapoint":"*","escalationInterval":15,"escalatingChainId":1}'
#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)
Example: Get Alert Rule
The following example gets alert rule74, changes the priority for that rule, and then makes a put request to update it 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 ='GET'
resourcePath = '/setting/alert/rules/74'
queryParams =''
data = ''
#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.get(url, data=data, headers=headers)
#Parse response
jsonResponse = json.loads(response.content)
#Change Collector Id and add configuration object
rule = jsonResponse['data']
rule['priority'] = 50
#Request Info
httpVerb ='PUT'
resourcePath = '/setting/alert/rules/74'
queryParams =''
data = str(json.dumps(rule))
#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)