XMLからデータソースをインポートする

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

概要

LogicMonitorのRESTAPIを使用して、XMLからデータソースをプログラムでインポートできます。

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

詳細依頼フォーム

HTTPメソッド: POST

リソースURI: / settings / datasources / importxml

次の点に注意してください。

  • リクエストペイロードには、境界パラメータで囲まれた有効なXMLファイルのコンテンツを含める必要があります
  • Content-Typeヘッダーをmultipart / form-dataに設定し、境界パラメーターを呼び出す必要があります

Python

次のPythonスクリプトは、データソースをXMLファイル「datasource.xml」からアカウントapi.logicmonitor.comにインポートします。

#!/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 = 'companyName'

#File information
file = open ('test.xml','r')
xml = file.read()

#Request Info
httpVerb ='POST'
resourcePath = '/setting/datasources/importxml'
queryParams =''
data = '''------WebKitFormBoundary12345BUlKhOAAA1X
Content-Disposition: form-data; name="file"; filename="test.xml"
Content-Type: text/xml

''' + xml + '''

------WebKitFormBoundary12345BUlKhOAAA1X--'''

#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, msg=requestVars, digestmod=hashlib.sha256).hexdigest()
signature = base64.b64encode(hmac1.encode())

#Construct headers
auth = 'LMv1 ' + AccessId + ':' + signature.decode() + ':' + epoch
headers = {'Content-Type':'multipart/form-data;boundary=----WebKitFormBoundary12345BUlKhOAAA1X','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

PowerShellの

次のPowerShellスクリプトは、データソースをXMLファイル「datasource.xml」からアカウントapi.logicmonitor.comにインポートします。

<# Use TLS 1.2 #>
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12  

$accessId = '48v2wRzfK94y53sq5EuF'
$accessKey = 'aB=k9opY87U~^_cvHiq~98G-j6Q_ja4sr6J8-4+)'
$company = 'api'

$uploadFile = 'datasource.xml'
$FilePath = "C:\Users\Sarah\Desktop\datasource.xml"
$httpVerb = 'POST'
$resourcePath = '/setting/datasources/importxml'        
$queryParams = ''

$file = Get-Content $FilePath

$boundary = [System.Guid]::NewGuid().ToString()
$LF = "\r\n"

$data = '------' + $boundary +'
Content-Disposition: form-data; name="file"; filename="datasource.xml"
Content-Type: text/xml

'+$file+'

------' + $boundary + '--'

$url = 'https://' + $company + '.logicmonitor.com/santaba/rest' + $resourcePath + $queryParams

$epoch = [Math]::Round((New-TimeSpan -start (Get-Date -Date "1/1/1970") -end (Get-Date).ToUniversalTime()).TotalMilliseconds)

$requestVars = $httpVerb + $epoch + $data + $resourcePath


$hmac = New-Object System.Security.Cryptography.HMACSHA256
$hmac.Key = [Text.Encoding]::UTF8.GetBytes($accessKey)
$signatureBytes = $hmac.ComputeHash([Text.Encoding]::UTF8.GetBytes($requestVars))
$signatureHex = [System.BitConverter]::ToString($signatureBytes) -replace '-'
$signature = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($signatureHex.ToLower()))

$auth = 'LMv1 ' + $accessId + ':' + $signature + ':' + $epoch
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization",$auth)
$headers.Add("Content-Type",'multipart/form-data; boundary=----$boundary')

$response = Invoke-RestMethod -Uri $url -Method $httpVerb -Body $data -Header $headers 

$status = $response.status
$body = $response.data

Write-Host "Status:$status"
Write-Host "Response:$body"
PowerShellの

curl

次のcURLリクエストは、データソースをXMLファイル「datasource.xml」からアカウントapi.logicmonitor.comにインポートします。

curl --user 'apiUser:1234567' -X POST -H "multipart/form-data" -F "[email protected];filename=datasource.xml" 'https://api.logicmonitor.com/santaba/rest/setting/datasources/importxml'
curl
記事上で