New Relicの長期保存コスト問題を、Events to Metrics と Unlimited Cardinality で解決。詳細情報を維持しつつデータ量を軽量化し、低コストで長期分析を実現する手法を解説します。
データ保持期間とコストのトレードオフ
New Relic をはじめとする Observability ツールを活用する中で、多くのエンジニアが直面するのが 「データの保持期間」と「コスト」のジレンマ です。
日々の障害対応やパフォーマンス改善のためにデータは不可欠ですが、データ量が増えれば増えるほど、それを長期間保持するためのコストは急増します。そのため、デフォルトの短い保持期間(例:8日間)のまま運用し、以下のような課題を抱えているケースが少なくありません。
- 長期トレンドが見えない: 昨年のキャンペーン時との比較や、季節ごとの傾向分析ができない
- コストの壁: 一部の分析のために全体の保持期間を延ばそうとすると、不要なデータまで保存することになり、コストが跳ね上がるため断念せざるを得ない
本記事では、New Relic の Events to Metrics (E2M) という機能を活用し、コストを抑えながら「価値あるデータ」だけを長期保存するテクニックを紹介します。
最新のアップデートの詳細はこちら
New Relic アップデート一覧
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!
Event データの「強み」と「構造的な弱点」
まず、New Relic におけるデータ形式(MELT)の特性を整理します。
Event データの強み
Event データは、Observability において最も情報量が豊富で柔軟な形式です。
userId、sessionId、productId といった詳細なコンテキストをリクエスト単位で保持しており、事前に集計軸を決めなくても、後から自由に切り口を変えて分析できるため、短期的な詳細調査に有効なデータ形式です。
Event データとは?(レシートと家計簿の違い)
Event データは、言わば 「買い物レシート(明細)」 のようなものです。
メトリクス(家計簿): 「食費:3万円」という集計済みの数字。全体の傾向はわかりますが、「何を買ったか」までは分かりません。
Event(レシート): 「○月×日、A店で、りんごを2個、誰が買った」という個別の事実。
Event データがあれば、後から「りんごを買った人だけ集計したい」「A店での買い物だけ見たい」と、自由に切り口を変えて分析できます。 事前に集計ルールを決める必要がなく、「あとから分析できる」 という柔軟性こそが、詳細調査において Event データが有効とされる理由です。
プライシング構造の弱点
しかし、長期運用の観点では以下の課題があります。
- コストが高い: データ量が膨大であるため、長期保持するとコストがかさみます
-
柔軟性の欠如(TDPの仕様): データの保持期間は、TDP(Telemetry Data Platform)のデータ種別で一律に決まります
- 「この重要なイベントだけ12ヶ月保存したい」という設定ができません
- 一部のために全体の期間を延ばそうとすると、不要なデータまで長期保存することになり、コストの非効率が発生します
結果として、Event データに頼り切りでは「短期しか見えない」という状況に陥ってしまいます。
第一の解決策:Events to Metrics (E2M)
この「詳細なデータは欲しいが、全部残すと高い」という問題を解決するのが Events to Metrics (E2M) です。
仕組みとメリット
E2M は、Event データから必要なディメンション(属性)だけを抽出し、軽量な「メトリクス形式」に変換して保存する機能です。
- 軽量化・コスト削減: メトリクスはデータ量が小さいため、長期保存してもコストを低く抑えられます
- 高速な長期分析: データが軽いため、月次トレンドや季節性の分析もダッシュボードで高速に描画できます
E2Mの課題:カーディナリティの壁
単にメトリクス化するだけでは解決できない「トレードオフ」が存在します。それは 「詳細が見えなくなる」 ことです。
ここで重要になるのが「カーディナリティ」という概念です。
そもそも「カーディナリティ (Cardinality)」とは?
「カーディナリティ」とは、データの列に含まれる 「ユニークな値(一意な値)の種類の多さ」 を指す言葉です。
Observability の世界では、データを分析する際の「切り口(タグ/Dimension)」の細かさを決める重要な要素になります。
| 種類 | 定義 | 具体例 | メトリクスでの扱い |
|---|---|---|---|
|
低カーディナリティ (Low Cardinality) |
値の種類が限られている | ・国 (Japan, US...) ・HTTPステータス (200, 404, 500) |
得意 標準的なメトリクスで問題なく集計可能。 |
|
高カーディナリティ (High Cardinality) |
値の種類が膨大、 または無限に増える |
・会員ID (123456, 234567...) ・URL/パス (/item/123, /cart/abc...) ・Session ID |
苦手 そのままタグにするとデータ量が爆発する。 |
なぜ「高カーディナリティ」が標準メトリクスの壁になるのか?
通常、メトリクスデータは「タグの組み合わせ」ごとにデータを保持します。
例えば、「国別」にレスポンスタイムを集計する場合、国の数は知れているのでデータ量は少なくて済みます。
しかし、「会員ID別」に集計しようとするとどうなるでしょうか?
会員が100万人いれば、システムは100万通りの時系列データを生成・保存しなければなりません。これを 「カーディナリティの爆発(Cardinality Explosion)」 と呼びます。
そのため、これまでの常識では 「メトリクスにするなら、会員IDや詳細なURLパスのような高カーディナリティな情報は削ぎ落とす(丸める)」 というのが定石でした。その代償として、長期データでの詳細な分析(例:「特定の会員で発生した遅延の傾向」など)を諦めていたのです。
高カーディナリティへの対応:E2M × Unlimited Cardinality
ここで登場するのが、Unlimited Cardinality という機能です。これを E2M と組み合わせることで、これまでの制約を突破できます。
Unlimited Cardinality で実現できること
New Relic の Unlimited Cardinality は、1日あたりのカーディナリティ上限値を大幅に引き上げます。
具体的には、メトリクス単位でデフォルト10万の制限を、最大 100万 まで拡張可能です(アカウント単位では最大2億)。
これにより、以下のような分析が可能になります。
-
高カーディナリティ属性の保持:
StoreId、API Pathなどの詳細な属性を保持したままメトリクス化できます -
詳細な長期トレンド分析:
- 「どのパスが、どの期間に、どの店舗で劣化したか」
- 「特定のボトルネック API の季節性・傾向分析」
Event データの持つ「価値(詳細さ)」を保ったまま、Metric データの持つ「利点(長期保存・安価)」を享受できる、まさに良いとこ取りのソリューションです。
まとめ:Observability を「長期分析」へ拡張する
Events to Metrics を活用することで、New Relic の運用は以下のように最適化できます。
| データ形式 | 用途 | 保持期間 | コスト |
|---|---|---|---|
| Event | 短期の深掘り・障害対応 | 短期(デフォルト) | 抑えられる |
| Metric (E2M) | 長期の俯瞰・トレンド分析 | 長期(数ヶ月〜1年) | 安価 |
全てのデータを無闇に長期保存するのではなく、「長期分析に必要な価値あるデータ」だけを選択して E2M でメトリクス化しましょう。これにより、プライシング構造の弱点を回避し、コストを抑えつつ Observability を「長期分析」へと拡張することが可能になります。
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

