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

続きを読む

LogicMonitor REST API へのリクエストにはレート制限が適用されます。制限はエンドポイントとメソッドの組み合わせごとに割り当てられます。たとえば、リクエストは次のようになります。 GET /device/devices リクエストとは異なる制限がある場合があります POST /device/devices またはリクエスト GET /device/devices/ID/devicedatasourcesレート制限を超えるリクエストには HTTP 429 Too Many Requests エラーを含むレスポンスです。制限はユーザーごとではなく、お客様のアカウントで行われたすべてのリクエストに適用されます。

重要: デフォルトの制限値は、一時的なピーク使用を想定してテストされており、これらの制限値でのAPIの継続的な使用を想定したものではありません。定格制限値でのAPIの継続的な使用は、ポータルの全体的なパフォーマンスに影響を与える可能性があります。LogicMonitorはポータルの可用性とパフォーマンスを最優先事項としており、ポータルのパフォーマンス、アラート、およびデータ収集に悪影響が生じた場合は、デフォルトのAPI制限値を引き下げる権利を留保します。お客様のニーズがこれらの設計上の制限値を超える場合は、カスタマーサクセスマネージャーと積極的に連携し、可能な選択肢についてご相談ください。

レスポンスヘッダーのレート制限

制限値および制限値への近さに関する情報は、以下のレスポンスヘッダーに返されます。これにより、適用されるレート制限を確認し、必要に応じてスクリプトを調整して制限を回避することができます。

ヘッダ 詳細説明
X-Rate-Limit-Limit リクエスト制限 X-Rate-Limit-Window
X-Rate-Limit-Remaining 時間枠に残っているリクエストの数
X-Rate-Limit-Window 秒単位のローリング時間ウィンドウの長さ

レート制限ロジック

レート制限は変更される可能性があるため、レート制限を回避するためのロジックは、以下のヘッダーとその値に基づいて実装することをお勧めします。例えば、レート制限に達した場合に、次のリクエストを行う前に60秒間待機するロジックをスクリプトに組み込むことができます。以下に、さまざまなプログラミング言語におけるそのようなロジックの例を示します。

Python

以下のロジックは、requestsモジュールを使用したループで利用でき、'X-Rate-Limit-Remainingヘッダーの値がゼロになります。

if (response.headers['X-Rate-Limit-Remaining'] == 0):
       window = response.headers['X-Rate-Limit-Window']
       time.sleep(float(window))
Python

ルビー

以下のロジックは、net http ライブラリを使用したループで利用でき、'X-Rate-Limit-Remainingヘッダーの値がゼロになります。

if resp['X-Rate-Limit-Remaining'].to_i == 0
  sleep resp['X-Rate-Limit-Window'].to_i
  end
ルビー

Groovy

以下のロジックは、Apache http ライブラリを使用したループで利用でき、'X-Rate-Limit-Remainingヘッダーの値がゼロになります。

remainingRequestsHeader = response.getHeaders('X-Rate-Limit-Remaining');
windowHeader = response.getHeaders('X-Rate-Limit-Window');
remainingRequests = remainingRequestsHeader[0].getValue();
window = windowHeader[0].getValue();
 
if (remainingRequests.toInteger() == 0){
    Thread.sleep(window.toInteger() * 1000);
    }
Groovy

PowerShellの

PowerShell でレート制限を回避する方法は、リクエストの送信方法によって異なります。 Invoke-RestMethod 例外が発生しない限り、コマンドレットはレスポンス ヘッダーを破棄します。そのため、HTTP 429 が返された場合は、再試行を試みることを推奨します。 Invoke-RestMethod例えば、次のコード例に示すように、try-catchループ内でAPIリクエストを行い、結果のステータスが429の場合は再試行することができます。

または、 Invoke-WebRequest コマンドレットを作成し、レート制限応答ヘッダーに基づいてロジックを追加します。

<# Make request & retry if failed due to rate limiting #>
$Stoploop = $false
 
do {
	try {
		<# Make Request #>
		$response = Invoke-RestMethod -Uri $url -Method $httpVerb -Headers $headers
		<# Print status and body of response #>
		$status = $response.status
		$body = $response.data| ConvertTo-Json -Depth 5
		Write-Host "Status:$status"
		Write-Host "Response:$body"
		$Stoploop = $true
		}
	catch {
		if ($response.status -eq 429){
			Write-Host "Request exceeded rate limit, retrying in 60 seconds..."
			Start-Sleep -Seconds 60
			}
		else {
			Write-Host "Request failed, not as a result of rate limiting"
			$Stoploop = $true
			}
		}
	}
While ($Stoploop -eq $false)
PowerShellの

デフォルトのレート制限

以下の表は、リクエストの種類ごとのデフォルトのレート制限を示しています。

HTTPメソッドレート制限
DELETE300 / min
GET500 / min
PATCH250 / min
POST200 / min
PUT200 / min

レート制限の例外

以下の表は、エンドポイントとメソッドのリクエストの組み合わせごとのレート制限例外を示しています。

HTTPメソッドAPIリクエストレート制限 詳細説明
POST/setting/remediationsources/executemanually20 / minホストの RemediationSource モジュールをトリガーします
POST/setting/diagnosticsources/executemanually20 / minホストのDiagnosticSourceモジュールをトリガーする
GET/cost-optimization/recommendations200 / min推奨事項のリストを取得する
GET/cost-optimization/recommendations/{id}200 / minIDに基づいて特定の推奨事項の詳細を取得します
GET/cost-optimization/recommendations/categories200 / min利用可能な推奨カテゴリのリストを取得する
GET/santaba/rest/alert/alerts400 / minアラートリストを取得
GET/santaba/rest/device/devices/{id}/alerts600 / minアラートを受け取る
GET/santaba/rest/device/groups400 / minデバイス グループ リストの取得
GET/santaba/rest/device/groups/{id}1000 / minID でデバイス グループを取得する
GET/santaba/rest/device/devices/{deviceId}/properties700 / minデバイスのプロパティを取得する
GET/santaba/rest/device/devices700 / minデバイス リストを取得する
GET/santaba/rest/device/devices/{deviceId}/devicedatasources/{hdsId}/instances500 / minデバイス インスタンス リストの取得
POST/santaba/rest/setting/opsnotes100 / minopsnote を追加
GETsantaba/rest/swagger.json10 / minSwaggerドキュメント
POSTsantaba/rest/device/instances/datafetch5 / minインスタンスデータの取得

注意: 上記の表に記載されていないエンドポイントは、デフォルトのレート制限に従います。

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