Forrester Total Economic Impact™の調査によると、Edwin AIは複合組織において313%の投資対効果(ROI)を実現したことが判明しました。

続きを読む

LM Cloudは、LogicMonitorでAWS、GCP、Azure固有のイベントを確認し、イベント(EC2インスタンスの状態変更通知、CloudTrailログ、Azureアクティビティログなど)をパフォーマンスデータと関連付けることができるカスタムイベント統合を提供します。

Azure関数を使用して、Azureアクティビティログを送信できます。 これは、Azureアカウントで発生した監視の傾向とイベントを相互に関連付けるのに役立つ場合があります。

イベント統合はAzure Functionsに基づいています。具体的には、Functionsを追加し、必要なアクティビティログイベントに基づいてFunctionsをトリガーするAzure Activity Logアラートルールを設定する必要があります。Functionsがトリガーされると、LogicMonitorのREST APIを使用して、イベントが関連する特定のデバイスのOps Notesとして追加されます。イベントが関連付けられている監視対象リソースのOps Notesが作成されると、それらのリソースのすべてのデバイスとダッシュボードのグラフに表示されます。Ops Notesパネルを使用して、表示されるイベントをさらに絞り込むことができます。

LogicMonitor で Azure アクティビティ ログを視覚化するための要件

カスタムイベント統合を作成するには、LogicMonitorでAzureリソースを構成する必要があります。詳細については、 Microsoft Azure クラウド監視の追加.

LogicMonitorアカウントで、統合で使用するAPIトークンのセットを作成します。詳細については、 APIトークン.

推奨事項: これらのAPIトークンを使用するには、OpsNotesを作成するためにすべてのデバイスを管理する権限が必要です。統合用に専用のAPIユーザーを作成してください。

LogicMonitorでのAzureアクティビティログの視覚化

  1. 新しい Azure Function App を追加します。

注意: 関数はApp Servicesセクションから表示または作成できます。作成後は、アプリ内にHTTPTrigger PowerShell関数を追加する必要があります。

  1. HTTP トリガー PowerShell 関数に次のスクリプトを追加します。

お断り: このスクリプトはLogicMonitorの旧バージョンに関連しています。期待どおりに動作しない可能性があります。

# POST method: $req
$requestBody = Get-Content $req -Raw | ConvertFrom-Json

$caller = $requestBody.data.context.activityLog.caller
$source = $requestBody.data.context.activityLog.eventSource
$time = $requestBody.data.context.activityLog.eventTimestamp
$operation = $requestBody.data.context.activityLog.operationName
$resourceId = $requestBody.data.context.activityLog.resourceId 
$resourceGroup = $requestBody.data.context.activityLog.resourceGroupName

Write-Output $resourceId | Out-String

<# account info #>
$accessId = 'API_ID'
$accessKey = 'API_KEY'
$company = 'LM_ACCOUNT'

$encoded = [uri]::EscapeDataString($resourceId)

<# Get Devices request details #>
$httpVerb = 'GET'
$resourcePath = '/device/devices'
$queryParams = '?filter=systemProperties.name:system.azure.resourceid,systemProperties.value:' + $encoded

Write-Output $queryParams | Out-String

<# Construct URL #>
$url = 'https://' + $company + '.logicmonitor.com/santaba/rest' + $resourcePath + $queryParams

<# Get current time in milliseconds #>
$epoch = [Math]::Round((New-TimeSpan -start (Get-Date -Date "1/1/1970") -end (Get-Date).ToUniversalTime()).TotalMilliseconds)

<# Concatenate Request Details #>
$requestVars = $httpVerb + $epoch + $resourcePath

<# Construct Signature #>
$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()))

<# Construct Headers #>
$auth = 'LMv1 ' + $accessId + ':' + $signature + ':' + $epoch
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization",$auth)
$headers.Add("Content-Type",'application/json')

<# Make Request #>
$response = Invoke-RestMethod -Uri $url -Method $httpVerb -Header $headers 

<# Print status and body of response #>
$status = $response.status
$body = $response.data

Write-Output "Status:$status"

$deviceId = $body.items.id

Write-Output $deviceId | Out-String

If ($deviceId -ne $Null) {

#####################################

<# Add Ops Note request details #>
$httpVerb = 'POST'
$resourcePath = '/setting/opsnotes'
$data = '{"note":"caller:' + $caller + ', source:' + $source + ', operation:' + $operation + '","tags":[{"name":"Azure Activity Log"}],"scopes":[{"type":"device","deviceId":"' + $deviceId + '"}]}'

<# Construct URL #>
$url = 'https://' + $company + '.logicmonitor.com/santaba/rest' + $resourcePath

<# Get current time in milliseconds #>
$epoch = [Math]::Round((New-TimeSpan -start (Get-Date -Date "1/1/1970") -end (Get-Date).ToUniversalTime()).TotalMilliseconds)

<# Concatenate Request Details #>
$requestVars = $httpVerb + $epoch + $data + $resourcePath

<# Construct Signature #>
$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()))

<# Construct Headers #>
$auth = 'LMv1 ' + $accessId + ':' + $signature + ':' + $epoch
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization",$auth)
$headers.Add("Content-Type",'application/json')

<# Make Request #>
$response = Invoke-RestMethod -Uri $url -Method $httpVerb -Body $data -Header $headers 

<# Print status and body of response #>
$status = $response.status
$body = $response.data | ConvertTo-Json -Depth 5

Write-Output "Status:$status"
Write-Output "Response:$body"
}
  1. 関数スクリプト内で関数のURLを見つけます。これをAzureアクティビティログのアラートルールに追加する必要があります。
  2. モニターサービス内で「アラート」セクションを選択し、LogicMonitorで確認したいイベントに一致するアクティビティログアラートを設定します。新しいWebhookタイプのアクションを追加し、説明として関数のURLを追加する必要があります。詳細については、以下をご覧ください。 アクティビティ ログ、サービス正常性、またはリソース正常性アラート ルールを作成する Azure から。

手順が完了したら、手順 4 で構成されたルールに一致するすべての Azure アクティビティ ログが、関連する特定の監視対象リソースの LogicMonitor Ops ノートとして追加される必要があります。

14日間フルアクセス LogicMonitor プラットフォーム