Azureデバイスグループ
最終更新日: 25 年 2021 月 XNUMX 日概要
LogicMonitorのRESTAPIを使用して、Azureグループを管理できます。 Azureグループは、いくつかの重要な違いがあるデバイスグループです。 このドキュメントでは、違いと、Azureグループを追加および更新する方法について説明します。
URI: / device / groups
Azureグループの差別化要因
Azure固有のgroupType
Azureグループには特別なgroupType値があります。 具体的には、通常グループと動的グループのgroupType値はNormalですが、Azureデバイスグループの値はAzure / SERVICEです。ここで、SERVICEは、グループが作成されたAzureサービスです(たとえば、VirtualMachine、SQLDatabase、AppServiceなど)。オン)。 AzureアカウントレベルのグループのgroupType値はAzure / AzureRootになります。
Azure固有のフィールド
azureRegionsInfo、azureTestResult、およびazureTestResultCodeはすべて、Azureグループに固有の読み取り専用フィールドです。 さらに重要なことに、Azureアカウントの資格情報やAzureサービス/リージョンの構成などのAzureグループ固有の情報は、デバイスグループJSONの「追加」オブジェクトに含まれています。
具体的には、追加オブジェクトには次の情報が含まれます。
プロパティ | 説明 | 例 | |
デフォルト | Azureグループ用に構成された既定のサービス設定。 これには、selectAll(監視するすべてのリージョンを選択するために使用できます)、monitoringRegions(モニタリングする特定のリージョンを選択するために使用できます)、deadOperation(MANUALLY | KEEP_7_DAYS | KEEP_14_DAYS | KEEP_30_DAYS | IMMEDIATELY)、useDefault(デフォルトオブジェクトには適用されません)が含まれます。 、nameFilter(デフォルトオブジェクトには適用されません)、tags(タグフィルターの指定に使用) | JSON配列 | 「デフォルト」:{「disableTerminatedHostAlerting」:true、「normalCollectorConfig」:null、「customNSPSchedule」:「」、「selectAll」:true、「monitoringRegions」:[「EAST_ASIA」、「SOUTHEAST_ASIA」、「CENTRAL_US」、「EAST_US」 、「EAST_US_2」、「WEST_US」、「NORTH_CENTRAL_US」、「SOUTH_CENTRAL_US」、「WEST_CENTRAL_US」、「WEST_US_2」、「NORTH_EUROPE」、「WEST_EUROPE」、「JAPAN_WEST」、「JAPAN_EAST」、「JAPAN_EAST」、「BR AUSTRALIA_SOUTHEAST」、「SOUTH_INDIA」、「CENTRAL_INDIA」、「WEST_INDIA」、「CANADA_CENTRAL」、「CANADA_EAST」、「UK_SOUTH」、「UK_WEST」、「FRANCE_CENTRAL」、「SOUTH_AFRICA_NORTH」、「SOUTH_AFRICA_NORTH」、「SOUTH_ 、“ AUSTRALIA_CENTRAL”、“ AUSTRALIA_CENTRAL_2”、“ FRANCE_SOUTH”、“ GERMANY_CENTRAL”、“ GERMANY_NORTH”、“ GERMANY_NORTH_EAST”、“ SWITZERLAND_NORTH”、“ SWITZERLAND_WEST”]、“ SWITZERLAND_WEST”]、“ deviceDisplayNameTemplate”:“ :「KEEP_7_DAYS」、「useDefault」:true、「nameFilter」:[]、「tags」:[]} |
サービス | Azureグループのサービス設定。 これには、selectAll(監視するすべてのリージョンを選択するために使用できます)、monitoringRegions(モニタリングする特定のリージョンを選択するために使用できます)、deadOperation(MANUALLY | KEEP_7_DAYS | KEEP_14_DAYS | KEEP_30_DAYS | IMMEDIATELY)、useDefault(デフォルト設定が必要かどうか)が含まれます。適用される)、nameFilter、tags(タグフィルターを指定するために使用) | JSON配列 | 「VIRTUALMACHINE」:{「disableTerminatedHostAlerting」:true、「normalCollectorConfig」:{「collectors」:[]、「enable」:false}、「customNSPSchedule」:「」、「selectAll」:true、「monitoringRegions」:[「EAST_ASIA 」、「SOUTHEAST_ASIA」、「CENTRAL_US」、「EAST_US」、「EAST_US_2」、「WEST_US」、「NORTH_CENTRAL_US」、「SOUTH_CENTRAL_US」、「WEST_CENTRAL_US」、「WEST_US_2」、「NORTH_EUROPE」、「WEST_US_2」、「NORTH_EUROPE」 「JAPAN_EAST」、「BRAZIL_SOUTH」、「AUSTRALIA_EAST」、「AUSTRALIA_SOUTHEAST」、「SOUTH_INDIA」、「CENTRAL_INDIA」、「WEST_INDIA」、「CANADA_CENTRAL」、「CANADA_EAST」、「UK_SOUTH」、「UK_WEST」 」、「SOUTH_AFRICA_WEST」、「KOREA_CENTRAL」、「KOREA_SOUTH」、「AUSTRALIA_CENTRAL」、「AUSTRALIA_CENTRAL_7」、「FRANCE_SOUTH」、「GERMANY_CENTRAL」、「Device」「SWER _」、「GERMANY_NORTH」、「GERMANY_NORTH_EAST」 :「」、「disableStopTerminateHostMonitor」:true、「deadOperation」:「KEEP_XNUMX_DAYS」、「useDefault」:true、「nameFilter」:[]、「tags」:[]} |
アカウント | Azureグループのアカウントレベルの情報。 | JSON配列 | 「アカウント」:{「スケジュール」:「0 * * * *」、「国」:「米国」、「billingInfo」:[]、「clientId」:「1912c6eb-e51f-40a0-a4c7-a939ded64cae」、「secretKey 」:「********」、「collectorDescription」:「Cloud Collector」、「subscriptionIds」:「d499ee70-fb15-454a-9c72-dcfa08078448」、「tenantId」:「dc818e23-4f5a-4b7e-bdfa -66de5eb19691」、「collectorId」:-2} |
Azureグループの追加
LogicMonitorには リーダーAzureADの役割の監視 Azure MonitorAPIリクエストを認証します。 AzureアカウントをLogicMonitorに追加するときは、そのような役割を提供する必要があります。 そのため、Azureグループを追加するには、次のことを行う必要があります。
- / device / groupsリソースにPOSTリクエストを送信して、AzureアカウントをLogicMonitorに追加します。
例:新しいAzureグループを投稿する
次のPythonスクリプト要求は、次のパラメーターを持つ「LMAzure」という名前のAzureグループを追加します。
- デフォルトのサービス設定セクションでは、central-us、east-us、east-us-2、およびwest-usのXNUMXつのリージョンのみが選択されており、リソースは自動的に削除されるように設定されていません。
- 監視用にVIRTUALMACHINEサービスが選択されています。ここで、VIRTUALMACHINEにはXNUMXつのタグフィルターが適用され、XNUMXつのリージョンが選択され、リソースはXNUMX日後に自動的に削除されるように設定されています。
- アカウントの自動検出頻度は設定されておらず、デフォルトでXNUMX時間ごとになります。
- さらに、「customer」という名前のプロパティがグループに追加され、値「customerA」に設定されます。
#!/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 ='POST'
resourcePath = '/device/groups'
queryParams =''
data = '{"parentId" : 1, "name" : "LM Azure", "description" : "This is a test description for an Azure account.", "groupType" : "Azure/AzureRoot", "disableAlerting" : false, "customProperties" : [{"name": "customer", "value":"customerA"}], "extra":{"account": {"schedule": "0 * * * *", "country": "USA", "billingInfo": [], "clientId": "1912c6eb-e51f-40a0-a4c7-a939ded64cae", "secretKey": "********", "collectorDescription": "Cloud Collector", "subscriptionIds": "d499ee70-fb15-454a-9c72-dcfa08078448", "tenantId": "dc818e23-4f5a-4b7e-bdfa-66de5eb19691", "collectorId": -2}, "default": {"disableTerminatedHostAlerting": true, "normalCollectorConfig": null, "customNSPSchedule": "", "selectAll": true, "monitoringRegions": ["CENTRAL_US", "EAST_US", "EAST_US_2", "WEST_US" ], "deviceDisplayNameTemplate": "", "disableStopTerminateHostMonitor": true, "deadOperation": "KEEP_7_DAYS", "useDefault": true, "nameFilter": [], "tags": []}, "services": {"VIRTUALMACHINE": {"disableTerminatedHostAlerting": true, "normalCollectorConfig": {"collectors": [], "enable": false}, "customNSPSchedule": "", "selectAll": true, "monitoringRegions": ["CENTRAL_US", "EAST_US_2", "WEST_US" ], "deviceDisplayNameTemplate": "", "disableStopTerminateHostMonitor": true, "deadOperation": "KEEP_7_DAYS", "useDefault": true, "nameFilter": [], "tags": [{"foo": "bar"}]}}}}'
#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.post(url, data=data, headers=headers)
# Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content)
Azureグループの更新
Azureグループを更新する場合は、最初にGETリクエストを作成してグループJSONを取得し、出力を解析して必要な値を置き換えてから、PUTを使用してリソースを更新することをお勧めします。
例:Azureグループを更新する
次のPythonスクリプトは、デバイスグループ39(たまたまAzureルートグループ)を取得するためのGET要求を行い、応答を解析し、割り当てられたコレクターを置き換え、構成オブジェクトを追加してから、グループ39を更新するためのPUT要求を行います。 。
#!/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/groups/39'
#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 + 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, headers=headers)
#Parse response
jsonResponse = json.loads(response.content)
#Change Collector Id and add configuration object
group = jsonResponse['data']
group['extra']['account']['collectorId'] = 218
#PUT Request Info
httpVerb ='PUT'
resourcePath = '/device/groups/39'
queryParams =''
data = str(json.dumps(group))
#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
putResponse = requests.put(url, data=data, headers=headers)
# Print status and body of response
print('Response Status:',response.status_code)
print('Response Body:',response.content