MIXI DEVELOPERS NOTE
💨

New Relicで新しいAPIのメトリクスが見れない!ってなった件

2024/07/01に公開

タイトルの通りですがNew Relicで新しいAPIのメトリクスが見れない!という事象に遭遇しました。
結論からまとめるとNew Relic側で Metrics Grouping Issues が検知されたことにより自動作成されたルールによって新しいメトリクスが拒否されるようになっていました。

Metrics Grouping Issues (MGI) とは

New Relicのドキュメント[1]によると、Newrelic APM、Browser、Mobile機能を使用している場合に

  • 外部サービスの呼び出し
  • UUIDやトランザクション名などのカスタムインストルメンテーション

がURLに含まれることでトランザクション名が無限に近いかたちで生成されます。
具体的にはを見ていただければわかりやすいですが、
これによりNew Relicのチャートやテーブルに表示されるメトリクスが膨大になり有用性が下がってしまいます。

New Relicではこのような状態を Metrics Grouping Issues (以下、MGI)と呼びます。

起きていたこと

New Relicではプラットフォームのパフォーマンス低下を防ぐため、自動的にMetric normalization rulesDENY_NEW_METRICS というルールを作成します。[2]

このルールはその名の通り新しいメトリクスの受け入れを拒否するもので、「New Relicで新しいAPIのメトリクスが見れない!」という事象の理由でした。

このルールの削除や無効化はNew Relicユーザーが行うことはできず、New Relicのサポートに問い合わせる必要があります。
またルールを削除や無効化したところで、MGIが再度検知された場合にはまた作成されるため、根本的な解決を行う必要があります。

MGIへの対応

New Relicのトランザクション名をコード内で手動設定している場合には、そのなかにUUIDなどパターンが膨大になる文字列を含めないようにすることで対応できますが、New Relicでは自動計装によって自動生成されるトランザクション名をそのまま利用している方が多いかと思います。

その場合にはMetric normalization rulesにカスタムの正規化ルールを追加して対応します。
以下の画像の例のように、静的コンテンツを配信するURLのパターンが多くあるが個別のパフォーマンスを見る必要がない(と判断できる)場合、そのURLを正規化してまとめることでMGIの発生を防ぐことができます。[3]
Metric normalization rules

画像にあるController以外にもViewやAppdex、DataStoreなどがあるので必要に応じて正規化した後、New Relicのサポートに問い合わせて DENY_NEW_METRICS ルールを無効化してもらうことで新しいAPIのメトリクスを見ることができるようになります。
MGIの詳細については DENY_NEW_METRICS の3点リーダーの MGI details から確認することができます。
MGI details

MGIの検知

MGIの発生によって DENY_NEW_METRICS ルールが作成されてもメールが来るなどの通知はされないため、仕組みとして検知する必要があります。
Metric normalization rulesの画面を定期的に確認するのは面倒なので、ドキュメント[3:1]記載のイベントを拾うNRQLを作成してSlack通知などを行うアラートルールを作成するのがよいかと思います。

Check/Query NrIntegrationError for events with name MetricCardinalityNearLimit. The creation of these events happens when your app is getting near the cardinality limit.

終わりに

MGIが発生してすでに DENY_NEW_METRICS ルールが作成されている場合、この設定を見に行かない限りは気づくことができません。
New Relicをお使いの方はまずはMetric normalization rulesを確認してみてください。
そして必要に応じて正規化や検知を行いましょう。

この記事がどなたかのお役に立てれば幸いです。最後までお読みいただきありがとうございました。

脚注
  1. https://docs.newrelic.com/docs/new-relic-solutions/solve-common-issues/troubleshooting/metric-grouping-issues/ ↩︎

  2. https://forum.newrelic.com/s/hubtopic/aAX8W0000008dMOWAY/ruby-denynewmetrics-rule ↩︎

  3. https://docs.newrelic.com/docs/new-relic-solutions/solve-common-issues/troubleshooting/metric-grouping-issues/#solution ↩︎ ↩︎

MIXI DEVELOPERS NOTE
MIXI DEVELOPERS NOTE

Discussion