New Relic では、お客様のエクスペリエンス、当社のシステム、およびその他のお客様を保護するために、リソース制限を設けています。これらの制限の範囲は、クエリに含めることができる最大文字数から API リクエスト レートなどにまで及びます。
このページでは、制限を表示できる制限メトリックとNrIntegrationError
イベント、それらの制限と比較した現在のデータ使用量と全体的なリソース消費量、および制限イベントが発生した場合の影響について説明します。また、ダッシュボードにコンパイルすると、制限ステータスについて一貫した洞察を得ることができるいくつかのクエリも提供します。
重要
NrIntegrationError
イベントは多くの制限タイプに関するデータを提供しますが、リソース制限メトリックは現在、リクエストレートの取り込みとAPIクエリレート制限のみをカバーしています。
限界を超えるとどうなるか
制限に到達したときの対応は、いくつかの要因によって異なります。つまり、 到達した制限の種類、制限を超えた期間、頻度、金額などです。制限を超えても、データのドロップ、トラフィックの拒否、またはその日の残りの時間データがオフになるなどの制限イベントが発生することを必ずしも意味するわけではありません。制限を適用する前に、小さなバッファーを許可することがあります。とはいえ、100% を超えて消費されるリソースには、いつでも制限の影響を受けるリスクがあります。
レート制限の多くは比例して適用されます。つまり、制限をわずかに超えている場合は、200% 超えている場合よりも少ない措置を講じます。
制限メトリックは、対応する dataType
または limitName
APIにデータを送信する場合にのみ表示されます。 たとえば、メトリクスAPI経由でデータを送信すると、メトリクスAPIリソース メトリクスが表示されますが、データを送信しないと、 APMリソース メトリクスは表示されません。
ヒント
影響度に関係なく、影響度指標が生成されます。影響がない場合は、0 が表示されます。
影響が発生するとNrIntegrationError
イベントが生成されます。これは、制限イベントが発生しているかどうかをすばやく確認するのに適した方法です。詳細については、システム制限の表示を参照してください。
ダッシュボードを作成し、制限状況を確認
ダッシュボードで3つの制限メトリックを一緒に使用すると、 Ingest Resource Request Per Minute
制限の詳細なビジュアルをすばやく確認でき、 NrIntegrationError
を使用してより多くの制限を表示できます。
ダッシュボードでは、いくつかのクエリを使って制限の状態を表示します。
このダッシュボードを作成するために、次のクエリを使用しました。 New Relic でこのようなダッシュボードを作成するには、 Dashboards選択し、次にCreate a dashboard選択します。 次に、定期的にモニターするクエリごとに新しいチャートを追加します。 これらのクエリに含まれる 3 つの制限メトリックについては、以下の別のセクションで説明します。
左から右へ、上から下へ。
SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100
FACET limitName WHERE limitTimeInterval = '1 minute' TIMESERIES LIMIT MAX
FROM (FROM Metric SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100 AS 'usage' FACET limitName TIMESERIES)
FACET limitName LIMIT MAX
FROM Metric SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute)
WHERE limitName = 'APM Agent API transaction events requests per minute' TIMESERIES
SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) AS 'usage',
latest(newrelic.resourceConsumption.limitValue) AS 'limit'
WHERE limitName = 'Trace API requests per minute' TIMESERIES
FROM Metric SELECT rate(sum(newrelic.resourceConsumption.impact), 1 minute)
FACET dataType, impact, resource TIMESERIES 1 minute LIMIT MAX
FROM NrIntegrationError SELECT count(*)
FACET limitName TIMESERIES MAX SINCE 1 day ago LIMIT MAX
複数のアカウントの制限を1つのチャートで確認したい場合。
アカウントの1つからこのクエリを実行します。
SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100
WHERE limitTimeInterval = '1 minute'
FACET limitName, consumingAccountId TIMESERIES LIMIT MAX
Add another queryをクリックします。
別のアカウントを選択します。
その後、再度このクエリを実行します。
SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100
WHERE limitTimeInterval = '1 minute'
FACET limitName, consumingAccountId TIMESERIES LIMIT MAX
最後に、保存します。
FROM Metric, NrIntegrationError
SELECT rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) AS 'Per Minute Count',
latest(newrelic.resourceConsumption.limitValue) AS 'Limit Value',
(rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue) * 100) AS 'Percent Used',
filter(count(*), WHERE NrIntegrationError.limitValue is not null) AS 'Limit Reached Count'
FACET limitName LIMIT 1000
リミット・メトリクス
上記のダッシュボードクエリで使用されるこれらのメトリックは、単一の制限またはリソースに焦点を当てることができます。または、 FACET limitName OR resource
を使用して、すべての制限を超えたビューを提供します。
limitValue
limitName
による制限の設定を確認し、この制限にリンクされているリソースについて詳しく理解することができます。次の例では、クエリで制限値メトリックを使用しています。
currentValue
現在消費している特定のリソースの量を示します。システムが消費をどのように表示しているかをよりよく把握するには、 limitTimeInterval
と一致する期間でrate()
関数を使用します。 200を制限します。
impact
特定のリソースについて、どのような影響制限イベントが発生しているかを通知します。ゼロは、現在影響を受けていないことを意味します。
私たちが持っている最も細かいものはdataType
です。 limitName
の複数のインスタンスが、メトリックRPMやDPMなどの単一のタイプに影響を与える可能性があります。わかっている場合は、 limitName
を表示します。
FROM Metric SELECT rate(sum(newrelic.resourceConsumption.impact), 1 minute)
FACET dataType, resource, impact, limitName TIMESERIES LIMIT MAX
メトリックの属性
newrelic.resourceConsumption.limitValue
とnewrelic.resourceConsumption.currentValue
の属性:
limitName
:メトリックデータの制限の名前(例: RPM Metric API
。dataType
:メトリックが追跡しているデータの種類( Metric
、 Log
、 APM
など)。Resource
:どのリソースが消費されているか(例: Requests
またはDPM
。limitTimeInterval
:このリソースが制限のために評価される時間枠。consumingAccountId
:リソースが消費されているNewRelicアカウント。
の属性 newrelic.resourceConsumption.impact
dataType
:影響を受けるデータの種類(たとえば、 Metric
、 Log
、またはAPM
。Resource
:影響を受けているリソース(例: Request Rate
。Impact
:リソースが設定された制限を超えたときに何が起こっているか(たとえば、リクエストのドロップなど)のカウント。consumingAccountId
:リソースが消費されているNewRelicアカウント。
リソースメトリクスに関するアラートの設定
すべての制限を確認するためのダッシュボードを構築するのは便利ですが、それを自動化できればさらに便利です。 制限メトリックにを設定すると、制限の変更に関する更新情報を提供できます。
ヒント
現在は1分間の時間窓のメトリクスしかありませんので、TimeWindow = 1分と設定すれば、すべてのメトリクスをカバーできます。将来的には、より多くのメトリクスが利用できるようになりますので、異なるタイムウィンドウで実施される制限に対して別々のアラートを設定することもできます。
以下の NRQL クエリを使用してアラートを作成できます。 NRQL クエリを使ったアラートの作成についてはこちら 。
SELECT (rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue)) * 100
SELECT (rate(sum(newrelic.resourceConsumption.currentValue), 1 minute) / latest(newrelic.resourceConsumption.limitValue)) * 100
WHERE limitName = 'my limit'
FROM Metric SELECT rate(sum(newrelic.resourceConsumption.impact), 1 minute)
FACET dataType, impact, resource, reason
FROM Metric SELECT rate(sum(newrelic.resourceConsumption.impact), 1 minute)
WHERE dataType = 'important things'
FACET dataType, impact, resource, reason