REST API レート制限
最終更新日 - 29年2026月XNUMX日
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))ルビー
以下のロジックは、net http ライブラリを使用したループで利用でき、'X-Rate-Limit-Remainingヘッダーの値がゼロになります。
if resp['X-Rate-Limit-Remaining'].to_i == 0
sleep resp['X-Rate-Limit-Window'].to_i
endGroovy
以下のロジックは、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);
}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)デフォルトのレート制限
以下の表は、リクエストの種類ごとのデフォルトのレート制限を示しています。
| HTTPメソッド | レート制限 |
| DELETE | 300 / min |
| GET | 500 / min |
| PATCH | 250 / min |
| POST | 200 / min |
| PUT | 200 / min |
レート制限の例外
以下の表は、エンドポイントとメソッドのリクエストの組み合わせごとのレート制限例外を示しています。
| HTTPメソッド | APIリクエスト | レート制限 | 詳細説明 |
| POST | /setting/remediationsources/executemanually | 20 / min | ホストの RemediationSource モジュールをトリガーします |
| POST | /setting/diagnosticsources/executemanually | 20 / min | ホストのDiagnosticSourceモジュールをトリガーする |
| GET | /cost-optimization/recommendations | 200 / min | 推奨事項のリストを取得する |
| GET | /cost-optimization/recommendations/{id} | 200 / min | IDに基づいて特定の推奨事項の詳細を取得します |
| GET | /cost-optimization/recommendations/categories | 200 / min | 利用可能な推奨カテゴリのリストを取得する |
| GET | /santaba/rest/alert/alerts | 400 / min | アラートリストを取得 |
| GET | /santaba/rest/device/devices/{id}/alerts | 600 / min | アラートを受け取る |
| GET | /santaba/rest/device/groups | 400 / min | デバイス グループ リストの取得 |
| GET | /santaba/rest/device/groups/{id} | 1000 / min | ID でデバイス グループを取得する |
| GET | /santaba/rest/device/devices/{deviceId}/properties | 700 / min | デバイスのプロパティを取得する |
| GET | /santaba/rest/device/devices | 700 / min | デバイス リストを取得する |
| GET | /santaba/rest/device/devices/{deviceId}/devicedatasources/{hdsId}/instances | 500 / min | デバイス インスタンス リストの取得 |
| POST | /santaba/rest/setting/opsnotes | 100 / min | opsnote を追加 |
| GET | santaba/rest/swagger.json | 10 / min | Swaggerドキュメント |
| POST | santaba/rest/device/instances/datafetch | 5 / min | インスタンスデータの取得 |
注意: 上記の表に記載されていないエンドポイントは、デフォルトのレート制限に従います。