New Relic
監視プラットフォーム
New Relic
概要
New Relicはクラウドベースの可観測性プラットフォームで、アプリケーションパフォーマンス監視(APM)、インフラストラクチャ監視、デジタルエクスペリエンス監視を統合した包括的ソリューションです。APM分野での老舗として安定した地位を維持し、直感的なUIと簡単なセットアップで高い評価を受けています。
詳細
New RelicはAPM(Application Performance Monitoring)分野のパイオニアとして、特にアプリケーションのコードレベル診断と統一されたユーザーインターフェースで業界をリードしています。
主要機能
- APM(Application Performance Monitoring): 深いコードレベル診断とパフォーマンス分析
- インフラストラクチャ監視: サーバー、コンテナ、クラウドサービスの包括的監視
- ブラウザ監視: リアルユーザーモニタリング(RUM)とフロントエンドパフォーマンス
- シンセティック監視: 自動化されたWebサイトとAPIの可用性監視
- モバイル監視: iOS/Androidアプリのパフォーマンスとクラッシュ分析
- AI/機械学習: 異常検知とインシデント相関
- 分散トレーシング: マイクロサービス間の詳細なトランザクション追跡
技術的特徴
- 統一プラットフォーム: 全機能が統合されたシングルペイン操作
- 簡単な導入: エージェントベースの簡単セットアップ
- 予測価格: 使用量ベースながら予測しやすい価格体系
- 豊富なクエリ機能: NRQL(New Relic Query Language)による柔軟なデータ分析
- ダッシュボード: カスタマイズ可能なリアルタイムダッシュボード
メリット・デメリット
メリット
- APM分野での豊富な実績と成熟した機能
- 直感的で使いやすいユーザーインターフェース
- セットアップが簡単で短時間で導入可能
- 統一されたプラットフォームで全機能を管理
- 予測しやすい価格設定
- 強力なクエリ言語(NRQL)
- ユーザー体験とバックエンドパフォーマンスの相関分析
デメリット
- Datadogと比較するとインフラ監視機能が限定的
- 大規模環境でのコスト増加
- カスタマイズ性がやや限定的
- 一部の新しい技術への対応が遅れがち
- データ保持期間の制限
参考ページ
設定・監視例
基本セットアップ
# Ruby アプリケーション用 New Relic エージェント設定
gem 'newrelic_rpm'
# 手動スタート(必要に応じて)
NewRelic::Agent.manual_start
メトリクス収集
# Python でのカスタムメトリクス送信
import newrelic.agent
# カスタムメトリクス記録
newrelic.agent.record_custom_metric('Custom/Users/SignupCount', 1)
# トランザクション追跡
@newrelic.agent.function_trace(name='Custom/MyFunction')
def my_function():
# ビジネスロジック
pass
# バックグラウンドタスク監視
@newrelic.agent.background_task(name='Custom/BackgroundTask')
def background_task():
# バックグラウンド処理
pass
アラート設定
// New Relic API でアラート条件作成
const alertCondition = {
"condition": {
"type": "apm_app_metric",
"name": "High Response Time",
"enabled": true,
"entities": ["12345"],
"metric": "response_time_web",
"condition_scope": "application",
"terms": [
{
"duration": "5",
"operator": "above",
"priority": "critical",
"threshold": "0.5",
"time_function": "all"
}
]
}
};
ダッシュボード作成
// New Relic One Dashboard 作成
const dashboard = {
"dashboard": {
"title": "Application Performance Dashboard",
"description": "Monitor application key metrics",
"permissions": "PUBLIC_READ_WRITE",
"pages": [
{
"name": "Application Overview",
"widgets": [
{
"title": "Response Time",
"visualization": {
"id": "viz.line"
},
"rawConfiguration": {
"nrqlQueries": [
{
"query": "SELECT average(duration) FROM Transaction WHERE appName = 'MyApp' TIMESERIES"
}
]
}
}
]
}
]
}
};
ログ分析
# New Relic Logs 設定
# fluentd プラグイン使用例
<match **>
@type newrelic
license_key YOUR_LICENSE_KEY
<buffer>
@type file
path /var/log/fluentd-buffers/newrelic.buffer
flush_mode interval
flush_interval 5s
</buffer>
</match>
インテグレーション設定
# New Relic Infrastructure Agent 設定
# /etc/newrelic-infra/integrations.d/nginx-config.yml
integration_name: com.newrelic.nginx
instances:
- name: nginx-server-metrics
command: status_url
arguments:
status_url: http://127.0.0.1/nginx_status
remote_monitoring: true
labels:
env: production
role: load_balancer
- name: nginx-server-inventory
command: inventory
arguments:
config_path: /etc/nginx/nginx.conf
labels:
env: production
role: load_balancer
NRQL クエリ例
-- アプリケーションエラー率の監視
SELECT percentage(count(*), WHERE error IS true)
FROM Transaction
WHERE appName = 'MyApp'
SINCE 1 hour ago
TIMESERIES
-- データベースクエリパフォーマンス
SELECT average(duration)
FROM DatabaseSample
WHERE provider = 'MySQL'
FACET query
SINCE 1 day ago
LIMIT 10
-- インフラリソース使用率
SELECT average(cpuPercent), average(memoryUsedPercent)
FROM SystemSample
WHERE hostname LIKE 'web-%'
SINCE 30 minutes ago
TIMESERIES