データソースにインスタンスを追加する
最終更新日: 24 年 2021 月 XNUMX 日LogicMonitorのRESTAPIを使用して、ActiveDiscoveryが有効になっていないデータソースにインスタンスをプログラムで追加できます。
注:すべてのAPI呼び出しと同様に、 認証が必要です.
HTTPメソッド:POST
URI:/ device / devices / {deviceId} / devicedatasources / {deviceDatasourceId} / instances
どこ:
- {deviceId}は、GETリクエストから取得できるデバイスIDです。 デバイスリソース
- {deviceDatasourceId}は、デバイスデータソースIDであり、GETリクエストから デバイスデータソースリソース
リクエストパラメータ: POSTリクエストに次のパラメータを含めることができます。
プロパティ |
説明 |
必須? |
|
グループID | データソースインスタンスに関連付けられているインスタンスグループのID | いいえ。デフォルトはデフォルトのグループです。 | 整数 |
displayName | インスタンスエイリアス。 これはインスタンスの説明的な名前であり、デバイスとデータソースの組み合わせに対して一意である必要があります。 | ○ | 文字列 |
説明 | データソースインスタンスの説明 | いいえ | 文字列 |
ワイルドバリュー | インスタンスの可変部分。デバイスからデータをクエリするために使用されます。 たとえば、SNMPOIDツリーの可変部分。 この値は、XNUMX次元のアクティブな検出が使用されていない限り、デバイスとデータソースの組み合わせに対して一意である必要があります。 | ○ | 文字列 |
ワイルドバリュー2 | 2次元のアクティブな発見にのみ使用されます。 使用すると、Active Discoveryの実行中に、トークン## WILDVALUE ##がALIASの値に置き換えられ、トークン## WILDVALUEXNUMX ##がXNUMX番目の部分のエイリアスの値に置き換えられます。 この値は、デバイス/データソース/ WILDVALUEの組み合わせに対して一意である必要があります。 | いいえ | 文字列 |
無効にするアラート | インスタンスのアラートが無効になっているかどうか | いいえ。デフォルトはfalseです。 | ブーリアン |
停止監視 | インスタンスの監視が無効になっているかどうか | いいえ。デフォルトはfalseです。 | ブーリアン |
リクエストの例
次のPythonスクリプトは、アカウントapi.logicmonitor.comのデバイス38のHTTP_Pageデータソースにインスタンス「google」を追加します。
#!/bin/env python
import requests
import json
import hashlib
import base64
import time
import hmac
#Account Info
AccessId ='YQQ75w6Mxx9zWIeAMq5H'
AccessKey ='f)!Z}%spR=6en+4^s2$t32r-3=NpdQ]2T{-deI)8'
Company = 'api'
#Request Info
httpVerb ='POST'
resourcePath = '/device/devices/38/devicedatasources/2214/instances'
data = '{"wildValue":"www.google.com","displayName":"google"}'
#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
print requestVars
#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.post(url, data=data, headers=headers)
#Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
応答例
上記のスクリプトに関連する応答は次のようになります。
Response Status: 200
Response Body: {
"status" : 200,
"errmsg" : "OK",
"data" : {
"id" : 76780611,
"groupId" : 2232,
"groupName" : "@default",
"name" : "HTTP_Page-google",
"displayName" : "google",
"description" : "",
"lockDescription" : false,
"deviceId" : 38,
"deviceDisplayName" : "ip-172-31-36-125.us-west-2.compute.internal",
"wildValue" : "www.google.com",
"wildValue2" : "",
"disableAlerting" : false,
"stopMonitoring" : false,
"alertStatus" : "none",
"alertStatusPriority" : 100000,
"sdtStatus" : "none-none-none",
"alertDisableStatus" : "none-none-none",
"alertingDisabledOn" : null,
"groupsDisabledThisSource" : null,
"sdtAt" : null,
"dataSourceId" : 105,
"deviceDataSourceId" : 2214
}
}