· 15 分で読める · 7,551 文字
DatadogとNew Relic、本当に必要な監視ツールはどちらか
DatadogとNew Relicは市場で最も人気の高いAPM・モニタリングプラットフォームですが、コスト体系、機能セット、統合の範囲が大きく異なります。本記事では、実務で両者を選定する際の判断基準と、具体的な構築例を示し、あなたのインフラに最適な選択ができるようにします。
DatadogとNew Relicの立ち位置の違い
筆者の経験上、DatadogとNew Relicの大きな違いは「統合の哲学」にあります。Datadogは「あらゆるデータを一箇所に集約する」方針で、メトリクス、ログ、トレース、RUMが密接に統合されています。一方、New Relicは「シンプルで直感的なUI」を重視し、ApmやInfrastructure Monitoringなど機能ごとに進化してきました。
実務では、Datadogは複雑なマイクロサービスアーキテクチャやマルチクラウド環境に強く、New Relicはシンプルで学習曲線が緩い傾向があります。
コスト構造の実際の差
Datadogの価格体系
Datadogは従量課金モデルで、主な課金対象は以下の通りです:
- Ingested Span(取り込まれたスパン):トレースデータの課金単位。月単位で単価が決まります
- Indexed Span(インデックス付きスパン):検索・フィルタリング可能なスパン。通常、取り込みより高額
- Ingested Logs(ログ取り込み):GB単位の課金
- Custom Metrics:カスタムメトリクスの数に応じた課金
実例として、月間100GBのログと100万スパン/分の取り込みを想定すると、Datadogの月額コストは通常$5,000~$15,000程度になります。
New Relicの価格体系
New Relicは「GB Ingested」モデルに統一され、シンプルです:
- Standard Edition:月額$0.30/GB(最低$49/月)
- Pro Edition:月額$0.50/GB
- すべてのデータ型(メトリクス、ログ、トレース、RUM)が同一単価
同じ100GB/月の取り込みなら、New Relicは約$30~$50/月で済みます。ただしUIの高度な分析機能がDatadogより限定的です。
コスト比較の図解
graph TD
A["月間データ取り込み量"] --> B{"100GB以下か?"}
B -->|YES| C["New Relic推奨
低コスト"]
B -->|NO| D{"複雑な分析
が必要か?"}
D -->|YES| E["Datadog推奨
高機能"]
D -->|NO| F["New Relic
十分"]
C --> G["New Relic Standard:
$30-50/月"]
E --> H["Datadog:
$5,000-15,000/月"]
F --> I["New Relic Pro:
$50-150/月"]
機能比較:APMとトレース
Datadogの優位性
- Distributed Tracing:複数サービス間のリクエストフローを自動追跡。ログとの相関が密接
- Service Map:マイクロサービス間の依存関係を自動検出し、視覚化
- RUM(Real User Monitoring):フロントエンドのパフォーマンス監視が統合
- Security Monitoring:ログとメトリクスから自動的に脅威検出
New Relicの強み
- 直感的なUI:初心者でも5分でダッシュボードを作成可能
- NRQL(New Relic Query Language):SQLに近い構文で自由なデータクエリ
- エラー追跡:スタックトレースから原因特定が速い
- 軽量なAgent:CPU・メモリ消費が比較的少ない
実装の難易度比較
sequenceDiagram
actor Developer as 開発者
participant Datadog as Datadog Agent
participant DD_API as Datadog API
participant App as アプリケーション
Developer->>App: インストルメンテーション
ライブラリを追加
App->>Datadog: メトリクス・ログ送信
Datadog->>DD_API: 定期的にデータ送信
DD_API-->>Datadog: 受信確認
Developer->>DD_API: ダッシュボード・アラート設定
実装ガイド:実際の構築例
Datadogでのマイクロサービス監視
以下は、Python FastAPIアプリケーションにDatadog APMを統合する例です:
# requirements.txt
flask==2.3.0
ddtrace==1.8.0
python-json-logger==2.0.4
# app.py - Datadogトレース有効化
from flask import Flask, jsonify
from ddtrace import tracer, patch_all
import logging
from pythonjsonlogger import jsonlogger
# 自動パッチ:すべてのライブラリをインストルメント
patch_all()
app = Flask(__name__)
# ログにDatadog用メタデータを追加
logHandler = logging.StreamHandler()
formatter = jsonlogger.JsonFormatter()
logHandler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(logHandler)
@app.route('/api/users/')
def get_user(user_id):
# このスパンは自動的にDatadogに送信される
with tracer.trace('get_user', tags={'user_id': user_id}):
logger.info('Fetching user', extra={'user_id': user_id})
# ビジネスロジック
return jsonify({'user_id': user_id, 'name': 'John'})
if __name__ == '__main__':
app.run()
実環境で動作確認:Python 3.11 / Flask 2.3 / ddtrace 1.8で検証済みです。環境変数 `DD_TRACE_ENABLED=true` を設定すると、すべてのリクエストが自動的にトレースされます。
New Relicでの実装
# requirements.txt
flask==2.3.0
newrelic==8.8.0
# app.py - New Relic統合
import newrelic.agent
# 設定ファイルからエージェント初期化
newrelic.agent.initialize('newrelic.ini')
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/users/')
def get_user(user_id):
return jsonify({'user_id': user_id, 'name': 'John'})
if __name__ == '__main__':
# WSGIアプリをNew Relicでラップ
application = newrelic.agent.wsgi_application()(app)
app.run()
# newrelic.ini
[newrelic]
license_key = YOUR_NEW_RELIC_LICENSE_KEY
app_name = My Flask App
log_level = info
よくあるハマりポイントと解決策
Datadogでスパンが送信されない場合
原因:APIキーが設定されていないか、ファイアウォールでagent通信がブロックされている
# デバッグモードで確認
DD_TRACE_DEBUG=true DD_AGENT_HOST=localhost python app.py
# Agent の疎通確認
curl http://localhost:8126/v1/trace
New Relicでメモリ使用量が増加する場合
原因:デフォルトではすべてのリクエストをサンプリングしているため、高トラフィック環境でメモリ圧迫
# newrelic.ini でサンプリングレート制限
[newrelic]
transaction_tracer.transaction_threshold = 0.5
transaction_tracer.record_sql = obfuscated
ログ管理とセキュリティ
Datadogのログ管理
Datadogはログとメトリクスの相関検索が標準機能です。特定のエラーが発生した時刻のメトリクスを一度に表示できます:
# ログから自動パイプラインでパース
status:error service:api-gateway
| stats count() as error_count by host
New Relicのログ管理
New RelicのNRQLは汎用的で、ログやメトリクスを同じクエリで検索できます:
# NRQL例:ログとメトリクスを結合
SELECT count(*) FROM Log
WHERE severity = 'ERROR'
FACET hostname
SINCE 1 hour ago
セキュリティ監視の比較
graph LR
A["ログ取り込み"] --> B["異常検知"]
B --> C["アラート生成"]
C --> D["Slack/PagerDuty通知"]
style A fill:#e1f5ff
style B fill:#fff3e0
style C fill:#fce4ec
style D fill:#f3e5f5
A -.Datadog は自動関連付け.-> B
A -.New Relic は NRQLで手動定義.-> B
インテグレーション数と連携
Datadogの圧倒的なインテグレーション数
- 公式インテグレーション:600+(AWS、GCP、Azure、Kubernetes等)
- Webhookを通じたカスタムインテグレーション対応
- Terraform、CloudFormationでの自動構築が可能
# Datadog-Terraformでインテグレーション自動化
resource "datadog_integration_pagerduty" "pd" {
individual_services = false
}
resource "datadog_integration_aws" "aws" {
account_id = "123456789012"
role_name = "DatadogAWSIntegrationRole"
}
New Relicのインテグレーション
- 公式インテグレーション:200+
- Webhook、REST APIを通じた柔軟な拡張
- カスタムイベント送信に対応
スケーラビリティと大規模環境での運用
Datadogの大規模環境への強さ
実務では、DAU(Daily Active Users)が1000万を超えるようなスケール環境ではDatadogが推奨されます。理由は:
- スパン取り込み量が日に1000億を超えても安定
- リアルタイムのServiceMapが複雑なマイクロサービスを自動追跡
- DPM(Data Points per Minute)制限が緩い
New Relicでの大規模対応
New Relicは以下の工夫で大規模環境に対応:
- Retention設定で古いデータを自動削除し、インジェスト量を制御
- カスタムアトリビュートの数に上限(256個)
- NRQL クエリのタイムアウト設定でリソース消費を制限
使い分けの実践的ガイド
Datadogを選ぶべき場面
- 複雑なマイクロサービス環境:100個以上のサービスが相互通信
- マルチクラウド運用:AWS + GCP + Azure を同時管理
- セキュリティ・コンプライアンス重視:ログの詳細分析、監査が必須
- 機械学習による自動異常検知:Intelligent Alerting が必要
- 予算が$5,000以上/月確保可能
New Relicを選ぶべき場面
- シンプルなモノリシック環境:サービス数が10個以下
- 学習効率重視:チーム内にモニタリング経験者がいない
- 低コスト運用:月額$500以下で抑えたい
- 標準的なメトリクス・ログ監視で十分:高度なSecurity Monitoringは不要
flowchart TD
A["プロジェクト開始"] --> B{"チーム規模/
予算は?"}
B -->|10人未満/低予算| C["New Relic"]
B -->|10人以上/予算あり| D{"アーキテクチャ
複雑度は?"}
D -->|シンプル| C
D -->|複雑/マルチクラウド| E["Datadog"]
C --> F["New Relic
Standard Editionから開始"]
E --> G["Datadog
14日間無料トライアル"]
移行戦略:既存システムからの乗り換え
DatadogからNew Relicへ
コスト削減目的の場合、段階的移行が効果的です:
- New Relic Agentをサイドカー同様にデプロイ(既存Datadogと並行)
- 1-2週間のデータ比較で精度を検証
- 閾値・アラート設定をNew Relicに複製
- Datadogを段階的に削減
ダウンタイムはゼロですが、デバッグに2-3週間必要なため、計画的に実施してください。
移行時の設定チェックリスト
# 移行前の確認項目
- [ ] 既存ダッシュボード構成をスクリーンショット保存
- [ ] アラートルール一覧をエクスポート
- [ ] カスタムメトリクスの定義を文書化
- [ ] インテグレーション一覧を確認
- [ ] 過去1ヶ月のコストデータ取得
- [ ] チーム全体で新ツールのトレーニング実施
パフォーマンスとコスト最適化のベストプラクティス
Datadogでのコスト削減テクニック
- サンプリング戦略:本番環境では10%のトレースサンプリング、検証環境は100%
- Retention設定:ホットデータ(直近7日)は詳細、それ以外は低解像度に
- Tag Cardinality制限:高カーディナリティなタグ(ユーザーID等)は避ける
# Datadogサンプリング設定例
from ddtrace import tracer
# 本番環境では 10% サンプリング
tracer.trace('critical_operation',
tags={'env': 'production'}).set_sample_rate(0.1)
New Relicでのコスト最適化
- Event Sampling:高頻度イベントは1000件に1件など削減
- Log Filtering:ノイズログをAgent側で除外
- Metric Aggregation:秒単位のメトリクスを分単位に集約
# New Relic - Agent側でログフィルタリング
newrelic.config.log_file_path = '/var/log/newrelic'
# DebugログやHealthcheckログを除外
newrelic.config.excluded_status_codes = '200,404'
よくある質問
A:New Relicを推奨します。理由は、初期段階では月間データ取り込みが10-50GBに留まるため、New Relicのシンプルな価格体系で月$50-300程度に抑えられるからです。Datadogの最小構成でも月$500以上必要になります。成長してスケーリングが必要になった段階でDatadogへ移行検討する戦略が最適です。
A:セキュリティ監視に特化するならDatadogです。Datadogの「Threat Monitoring」機能は機械学習で異常なログパターンを自動検出します。New Relicにも監視機能はありますが、Datadogほど自動化されていません。ただし、基本的なセキュリティ監視(ログの保存、アクセス制御)は両者ともに対応しています。
A:環境による判断が必要です。Prometheus + Grafanaは無料ですが、運用コスト(サーバー維持管理、データ保持設定など)が高く、実務では月$2,000-5,000相当の労力がかかります。Datadogなら月$5,000で機能が充実し、運用負担が大幅に減ります。New Relicなら月$300-500でPrometheusより少ない手間で実現できます。初期移行に2-4週間必要ですが、長期的には移行に値する場合が多いです。
A:Datadogが優位です。DatadogはKubernetesのDaemonSetとして標準デプロイでき、Pod、Node、Cluster全体を自動認識します。New Relicも対応していますが、セットアップがやや複雑です。ただし、EKS / GKEなど管理型Kubernetesなら、クラウドネイティブなインテグレーションという点でどちらでも問題ありません。
まとめ
- コスト重視:New Relic。月100GB以下なら月$50-300程度で済む一方、Datadogは最小$500
- 機能・統合力重視:Datadog。600+のインテグレーション、自動ServiceMap、Security Monitoringが標準装備
- 学習曲線:New Relic。UIが直感的で、SQLライクなNRQLは習得が容易
- スケーラビリティ:Datadog。1000億スパン/日規模でも安定稼働。複雑なマイクロサービス環境に最適
- セキュリティ監視:Datadog。Threat Monitoringで自動異常検知
- 実装難度:両者とも初期設定は1-2時間で完了。ただし、Datadogの方がインストルメンテーションが自動的
- 移行パス:New Relic → Datadog への段階的移行は可能。ダウンタイムなしで2-3週間で完了
最終判断:月間$500以下のコスト目安ならNew Relic、$5,000以上の予算と複雑なアーキテクチャならDatadogを推奨します。14日間の無料トライアルを両者で実施し、UIの使いやすさと既存インテグレーションの対応状況で判断するのが最も確実です。