デバイスデータを取得する
最終更新日: 29 年 2022 月 XNUMX 日概要
LogicMonitorのRESTAPIを使用して、プログラムでデータを取得できます。 インスタンスのデータを取得するには、次のXNUMXつの方法があります。
- データソースのすべてのインスタンスのデータを取得します
- データソースのXNUMXつのインスタンスのデータを取得します
すべてのAPI呼び出しと同様に、 認証が必要です.
データソースのすべてのインスタンスのデータを取得する
HTTPメソッド: GET
URI: / device / devices / {deviceId} / devicedatasources / {deviceDatasourceId} / data
(ここで、deviceIdはデバイスIDであり、 デバイスリソース、およびdeviceDatasourceIdは、デバイスデータソースのIDであり、を介して取得できます。 デバイスデータソースリソース.
リクエストパラメータ: デフォルトでは、データは過去XNUMX時間に返されます。 リクエストに次のクエリパラメータを含めて、レスポンスに含まれるデータとそのフォーマット方法を制御できます。
プロパティ | Description | 必須? |
期間 | 現在の時刻で終了する、データが返される必要がある時間数(たとえば、period = 2は過去2時間を意味します)。 | いいえ–デフォルトは1です |
start | エポック形式でデータを返す開始時刻。 | いいえ–開始/終了を省略した場合はピリオドが使用されます |
end | エポック形式で返されたデータの終了時刻 | 開始が指定されている場合のみ |
形式でアーカイブしたプロジェクトを保存します. | データを返す形式。オプションはcsvとjsonです。 | いいえ–デフォルトはjsonです |
データポイント | データを返す必要のあるデータポイント(例:?datapoints = TunnelState、TunnelDataInは、TunnelStateおよびTunnelDataInデータポイントに対してのみデータが返されるようになります) | いいえ–デフォルトですべてのデータポイントになります |
ご注意: 500回のリクエストで最大500個の値を返すことができます。 その結果、XNUMXを超える値を取得する場合は、開始値と終了値が異なる複数のリクエストを行う必要があります。 スクリプトを使用してこれを行うことをお勧めします。
例
例
次のPythonスクリプトは、533から10256までのデバイス1478296606、デバイスデータソース1478297686のデータを返します。
#!/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 = '/device/devices/533/devicedatasources/10256/data'
queryParams = '?start=1478296606&end=1478297686'
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)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
例
次のPythonスクリプトは、デバイス533のインスタンスが少なくとも1478296606つあるすべてのデータソースを取得し、応答をループして、それらのデータソースごとに、エポックタイム1478297686からXNUMXまでのすべてのインスタンスのデータを取得します。
#!/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 to get all datasources with >0 instances for device 533
httpVerb ='GET'
resourcePath = '/device/devices/533/devicedatasources'
queryParams ='?filter=instanceNumber>0'
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)
#Open a file to save data to
file_ = open('Device533Data.txt', 'a')
#Loop through each datasource & get data
for i in jsonResponse['data']['items']:
deviceDatasourceId = str(i['id'])
#Request Info
httpVerb ='GET'
resourcePath = '/device/devices/533/devicedatasources/'+deviceDatasourceId+'/data'
queryParams ='?start=1478296606&end=1478297686'
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)
response_json = json.loads(response.content)
data = response_json['data']
#Save data to file
file_.write(json.dumps(data) + '\n')
file_.close()
例
次のPythonスクリプトは、デバイス11287のデータソース674のすべてのインスタンスのデータをCSV形式で要求します。
#!/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 = '/device/devices/674/devicedatasources/11287/data'
data=''
queryParams ='?format=csv'
#Construct URL
url = 'https://'+ Company +'.logicmonitor.com/santaba/rest' + resourcePath
#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)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
データソースのXNUMXつのインスタンスのデータを取得する
HTTPメソッド: GET
URI: / device / devices / {deviceId} / devicedatasources / {deviceDatasourceId} / instances / {instanceId} / data
(ここで、deviceIdはデバイスIDであり、 デバイスリソース; deviceDatasourceIdは、デバイスデータソースのIDであり、 デバイスデータソースリソース; instanceIdはインスタンスのIDであり、GET / device / devices / {deviceId} / devicedatasources / {deviceDatasourceId} / instancesを介して取得できます。)
リクエストパラメータ: デフォルトでは、データは過去XNUMX時間に返されます。 リクエストに次のクエリパラメータを含めて、レスポンスに含めるデータを制御できます。
プロパティ | Description | 必須? |
期間 | 現在の時刻で終了する、データが返される必要がある時間数(たとえば、period = 2は過去2時間を意味します)。 | いいえ–デフォルトは1です |
start | エポック形式でデータを返す開始時刻。 | いいえ–開始/終了を省略した場合はピリオドが使用されます |
end | エポック形式で返されたデータの終了時刻 | 開始が指定されている場合のみ |
形式でアーカイブしたプロジェクトを保存します. | データを返す形式。オプションはcsvとjsonです。 | いいえ–デフォルトはjsonです |
例
次のPythonスクリプトは、デバイス533、デバイスデータソース12506、インスタンス23の過去XNUMX時間のデータを返します。
#!/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 = '/device/devices/533/devicedatasources/10256/instances/23/data'
queryParams = '?period=2'
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)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)