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

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
Pythonの3
記事上で