デバイスデータを取得する

最終更新日: 29 年 2022 月 XNUMX 日

概要

LogicMonitorのRESTAPIを使用して、プログラムでデータを取得できます。 インスタンスのデータを取得するには、次のXNUMXつの方法があります。

  • データソースのすべてのインスタンスのデータを取得します
  • データソースのXNUMXつのインスタンスのデータを取得します

すべてのAPI呼び出しと同様に、 認証が必要です.

データソースのすべてのインスタンスのデータを取得する

HTTPメソッド: GET

URI: / device / devices / {deviceId} / devicedatasources / {deviceDatasourceId} / data
(ここで、deviceIdはデバイスIDであり、 デバイスリソース、およびdeviceDatasourceIdは、デバイスデータソースのIDであり、を介して取得できます。 デバイスデータソースリソース.

リクエストパラメータ: デフォルトでは、データは過去XNUMX時間に返されます。 リクエストに次のクエリパラメータを含めて、レスポンスに含まれるデータとそのフォーマット方法を制御できます。

プロパティ 説明 必須?
期間 現在の時刻で終了する、データが返される必要がある時間数(たとえば、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の3

次の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の3

次の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)
Pythonの3

データソースの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時間に返されます。 リクエストに次のクエリパラメータを含めて、レスポンスに含めるデータを制御できます。

プロパティ 説明 必須?
期間 現在の時刻で終了する、データが返される必要がある時間数(たとえば、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)
Pythonの3
記事上で