デバイスを入手する

最終更新日: 14 年 2021 月 XNUMX 日

LogicMonitorのRESTAPIを使用して、LogicMonitorデバイスに関する情報をプログラムで取得できます。 デバイスリソースを使用すると、次のことができます。

  1. LogicMonitorアカウントのすべてのデバイスに関する情報を取得します
  2. LogicMonitorアカウントで特定のデバイスに関する情報を取得します

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

デバイスのリストを取得する

デバイスのリストを返します

HTTPメソッド:GET

URI:/ device / devices

リクエストパラメータ: デフォルトでは、50台のデバイスのリストが返されます。 リクエストに並べ替え、フィルター、フィールド、サイズ、オフセットのパラメーターを含めて、応答に含まれるデータとそのフォーマット方法を制御できます。 クエリパラメータはリソースパスの一部とは見なされないため、LMv1認証署名の計算に含めるべきではないことに注意してください。

プロパティ

構文

説明

URIの例

sort sort = {+または-} property 昇順(+)または降順(-)のいずれかで指定されたプロパティで応答を並べ替えます / device / devices?sort = -id
filter filter = property {operator} value 指定された演算子と値に従って応答をフィルタリングします。 *を使用して複数の文字に一致させることができることに注意してください。 '。'を使用できますオブジェクト内の値(カスタムプロパティなど)をフィルタリングする文字。複数のフィルターはコンマで区切ることができます。 例5を参照してください。

演算子は次のとおりです。

  • 以上: >:
  • 以下: <:
  • 大なり記号: >
  • 未満: <
  • 等しくない: !:
  • 等しい: :
  • 以下の構成です: ~
  • 含まれていません: !~
/ device / devices?filter = name〜QA *
フィールド fields = {コンマで区切られたプロパティのリスト} 応答をフィルタリングして、各オブジェクトの次のフィールドのみを含めます / device / devices?fields = name、id
サイズ size = integer 表示する結果の数。 最大は1000です。 / device / devices?size = 5
オフセット offset = integer 表示された結果を相殺する結果の数 / device / devices?offset = 2

特定のデバイスに関する情報を取得する

特定のデバイスの詳細を返します

HTTPメソッド:GET

URI:デバイス/デバイス/ {id}

リクエストパラメータ: 応答に表示されるフィールドを制御するフィルターパラメーターを含めることができます。

プロパティ

構文

説明

URIの例

フィールド fields = {コンマで区切られたプロパティのリスト} 応答をフィルタリングして、各オブジェクトの次のフィールドのみを含めます / device / devices / {id}?fields = displayName、id

リクエスト例1:すべてのデバイスを取得

次のPython3スクリプトは、api.logicmonitor.comアカウント内のすべてのデバイスのリストを返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api' #Request Info httpVerb = 'GET' resourcePath = '/ device / devices' data = '' #Construct URL url = 'https://' + Company + '。logicmonitor.com / santaba / rest' + resourcePath#現在の時刻をミリ秒単位で取得epoch = str (int(time.time()* 1000))#リクエストの詳細を連結するrequestVars = httpVerb +エポック+データ+ resourcePath#シグネチャを構築するhmac1 = hmac.new(AccessKey.encode()、msg = requestVars.encode()、digestmod = hashlib.sha256).hexdigest()署名= base64.b64encode(hmac1.encode())#ヘッダーの構築auth = 'LMv1' + AccessId + ':' + Signature.decode()+ ':' +エポックヘッダー= {' Content-Type ':' application / json '、' Authorization ':auth}#リクエストを作成しますresponse = requests.get(url、data = data、headers = headers)#ステータスとレスポンスの本文を印刷しますprint(' Response Status: ' 、response.status_code)print( 'Response Body:'、respo nse.content)

リクエスト例2:GETデバイス

次のPython3スクリプトは、表示名に「ip-172-31」が含まれているapi.logicmonitor.com内のデバイスのリストを返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api' #Request Info httpVerb = 'GET' resourcePath = '/ device / devices' queryParameters = '?filter = displayName〜ip-172-31' data = '' #Construct URL url = 'https://' + Company + '。logicmonitor.com / santaba / rest '+ resourcePath + queryParameters#現在の時刻をミリ秒単位で取得epoch = str(int(time.time()* 1000))#リクエストの詳細を連結するrequestVars = httpVerb + epoch + data + resourcePath#署名を作成するhmac1 = hmac.new( AccessKey.encode()、msg = requestVars.encode()、digestmod = hashlib.sha256).hexdigest()signature = base64.b64encode(hmac1.encode())#ヘッダーを構築するauth = 'LMv1' + AccessId + ':' + Signature.decode()+ ':' +エポックヘッダー= {'Content-Type': 'application / json'、 'Authorization':auth}#リクエストレスポンスを作成= requests.get(url、data = data、headers =ヘッダー)#ステータスと応答の本文を出力しますprint( ' 応答ステータス: '、response.status_code)print('応答本文: '、response.content)

リクエスト例3:XNUMXつのデバイスの情報を取得する

次のPython3スクリプトは、IDが39のデバイスの詳細を返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api' #Request Info httpVerb = 'GET' resourcePath = '/ device / devices / 39' data = '' #Construct URL url = 'https://' + Company + '。logicmonitor.com / santaba / rest' + resourcePath#現在の時刻をミリ秒単位で取得エポック= str(int(time.time()* 1000))#リクエストの詳細を連結するrequestVars = httpVerb +エポック+データ+ resourcePath#シグネチャを構築するhmac1 = hmac.new(AccessKey.encode()、msg = requestVars.encode()、 zygetmod = hashlib.sha256).hexdigest()signature = base64.b64encode(hmac1.encode())#ヘッダーの構築auth = 'LMv1' + AccessId + ':' + Signature.decode()+ ':' +エポックヘッダー= {'Content-Type': 'application / json'、 'Authorization':auth}#リクエストレスポンスを作成= requests.get(url、data = data、headers = headers)#ステータスとレスポンスの本文を出力print( 'レスポンスステータス: '、response.status_code)print(' Response Body: '、re sponse.content)

リクエスト例4:XNUMXつのデバイスの情報を取得する

次のPython3スクリプトは、IDが39のデバイスのID、displayName、およびカスタムプロパティを返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api' #Request Info httpVerb = 'GET' resourcePath = '/ device / devices / 39' queryParameters = '?fields = id、displayName、customProperties' data = '' #Construct URL url = 'https://' + Company + '。logicmonitor.com / santaba / rest '+ resourcePath + queryParameters#現在の時刻をミリ秒単位で取得epoch = str(int(time.time()* 1000))#リクエストの詳細を連結するrequestVars = httpVerb + epoch + data + resourcePath#署名を作成するhmac1 = hmac.new( AccessKey.encode()、msg = requestVars.encode()、digestmod = hashlib.sha256).hexdigest()signature = base64.b64encode(hmac1.encode())#ヘッダーを構築するauth = 'LMv1' + AccessId + ':' + Signature.decode()+ ':' +エポックヘッダー= {'Content-Type': 'application / json'、 'Authorization':auth} #Makeリクエストレスポンス= requests.get(url、data = data、headers =ヘッダー)#resのステータスと本文を出力しますponse print( 'Response Status:'、response.status_code)print( 'Response Body:'、response.content)

リクエスト5の例:特定のプロパティ値を持つGETデバイス

次のPython3スクリプトは、snmp.versionという名前のプロパティと値v2cのプロパティを持つデバイスのid、displayName、およびカスタムプロパティを返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api' #Request Info httpVerb = 'GET' resourcePath = '/ device / devices' data = '' queryParams = '?fields = customProperties、name、id&filter = customProperties.name:snmp.version、customProperties.value:v2c' #Construct URL url = 'https:/ / '+ Company +'。logicmonitor.com/ santaba / rest '+ resourcePath + queryParams#現在の時刻をミリ秒単位で取得epoch = str(int(time.time()* 1000))#リクエストの詳細を連結requestVars = httpVerb + epoch + data + resourcePath#Construct署名hmac1 = hmac.new(AccessKey.encode()、msg = requestVars.encode()、digestmod = hashlib.sha256).hexdigest()署名= 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 = da ta、headers = headers)#応答のステータスと本文を印刷しますprint( 'Response Status:'、response.status_code)print( 'Response Body:'、response.content)

リクエスト例6:すべてのデバイスを取得する

次のPython3スクリプトは、すべてのデバイスを一度に1000回繰り返して、アカウントapi.logicmonitor.com内のすべてのデバイスを返します。

#!/ bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'your-access-id' AccessKey = 'your-access-key' Company = 'api'#保持するリストを作成devices allDevices = []#すべてのデバイスの取得をループカウント= 0 done = 0 while done == 0:#Request Info httpVerb = 'GET' resourcePath = '/ device / devices' data = '' queryParams = '?offset =' + str(count)+ '&size = 10' #Construct URL url = 'https://' + Company + '。logicmonitor.com / santaba / rest' + resourcePath + queryParams#現在の時刻をミリ秒単位で取得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()署名= base64.b64encode(hmac1.encode())#ヘッダーの構築auth = 'LMv1' + AccessId + ':' + Signature.decode()+ ':' +エポックヘッダー= {'Content-タイプ ':' application / json '、' Authorization ':auth} #Make requ est response = requests.get(url、data = data、headers = headers)#応答を解析し、返されたデバイスの総数を解析済み= json.loads(response.content)total = parsed ['data'] ['total'] devices = parsed ['data'] ['items'] allDevices.append(devices)numDevices = len(devices)count + = numDevices if count == total:print "done" done = 1 else:print "iterating again" #print all devices print json.dumps(allDevices、indent = 5、sort_keys = True)

応答例

以下は、デバイス/デバイスリソースへの上記のリクエスト例のXNUMXつに対する応答例を示しています。

{"status":200、 "errmsg": "OK"、 "data":{"total":64、 "items":[{"id":38、 "name": "ip-172-31-36 -135.us-west-2.compute.internal "、" displayName ":" ip-172-31-36-135.us-west-2.compute.internal "、" deviceType ":0、" relatedDeviceId ": -1、 "currentCollectorId":85、 "preferredCollectorId":85、 "preferredCollectorGroupId":1、 "preferredCollectorGroupName": "@default"、 "description": ""、 "createdOn":1431975290、 "updatedOn":1466459568、 " disableAlerting ":false、" autoPropsAssignedOn ":1466400549、" autoPropsUpdatedOn ":1466400669、" scanConfigId ":0、" link ":" "、" enableNetflow ":false、" netflowCollectorId ":0、" netflowCollectorGroupId ":0、" netflowCollectorGroupName ":null、" lastDataTime ":0、" lastRawdataTime ":0、" hostGroupIds ":" 58,7,29,4,2 "、" sdtStatus ":" none-none-none "、" userPermission ":" write "、" hostStatus ":" normal "、" alertStatus ":" unconfirmed-warn-none "、" alertStatusPriority ":100、" awsState ":1、" alertDisableStatus ":" none-none-none "、" alertingDisa bledOn ":null、" collectorDescription ":" ip-172-31-37-162.us-west-2.compute.internal "、" netflowCollectorDescription ":null、" customProperties ":[{" name ":" snmp。 authToken "、" value ":" ******** "}、{" name ":" snmp.version "、" value ":" v3 "}、{" name ":" snmp.security "、 "value": "admin"}、{"name": "jdbc.mysql.pass"、 "value": "********"}、{"name": "dbname"、 "value" : "productDB"}、{"name": "jdbc.mysql.user"、 "value": "sarah"}、{"name": "location"、 "value": "12E。 
記事上で