New Relic入門 第2A部 - 基本セットアップ

クイックスタートガイドでNew Relicの概要を理解した後は、実際に本格的なセットアップを行いましょう。本記事では、初心者が安全かつ効率的に基本監視を開始するための段階的アプローチを解説します。

🎯 この記事で達成できること

  • [ ] 5分: New Relicアカウントの適切な初期設定
  • [ ] 10分: 価格プランの正しい選択
  • [ ] 15分: 基本APM監視の開始
  • [ ] 10分: サーバー監視の設定
  • [ ] 10分: 基本的なブラウザ監視
  • [ ] 10分: 基本トラブルシューティング

総所要時間: 約60分


2.1 アカウント作成と初期設定

📝 推奨アカウント設定手順

ステップ1: サインアップと基本情報

bash
# New Relicアカウント作成
URL: https://newrelic.com/signup

# 必要情報(推奨入力方法)
メールアドレス: [email protected]  # 業務用推奨
パスワード: 16文字以上、英数字+記号
会社名: "Your Company Name"
使用目的: "Application Performance Monitoring"

ステップ2: 重要な初期設定

データ保存地域の選択

yaml
# 日本企業での推奨設定
データ保存地域: US
理由:
  ✅ アジア太平洋からの低レイテンシ(100-150ms)
  ✅ 機能リリースが最速
  ✅ 日本語サポートが充実
  ⚠️ GDPR対象企業はEU選択必須

# 地域別比較
US地域:
  - レイテンシ: 100-150ms
  - 機能: 最新機能が最初に利用可能
  - サポート: 24/7日本語サポート

EU地域:
  - レイテンシ: 180-250ms
  - 機能: US地域より1-2週間遅れ
  - サポート: GDPR完全準拠

組織構成の設計

yaml
# 推奨組織構造(小規模チーム)
Organization: "Company Name"
├── Account: "Production"
│   ├── Web Application
│   ├── API Services
│   └── Database
└── Account: "Development"
    ├── Local Development
    └── Testing

# 推奨組織構造(中規模チーム)
Organization: "Company Name"
├── Account: "Production"
│   ├── Frontend Applications
│   ├── Backend Services
│   └── Infrastructure
├── Account: "Staging"
│   ├── Pre-production Testing
│   └── Integration Tests
└── Account: "Development"
    ├── Feature Development
    └── Local Testing

ステップ3: ライセンスキーの確認

javascript
// ダッシュボードでのライセンスキー取得
Account Settings → API keys → License key

// 例: ライセンスキー形式
abcd1234efgh5678ijkl9012mnop3456NRAL

// 安全な保存方法
環境変数: NEW_RELIC_LICENSE_KEY
設定ファイル: newrelic.yml(機密情報として管理)

2.2 価格プラン選択の判断基準

💰 プラン概要と特徴

プラン月額データ量ユーザー主な制限
Free$0100GB1フルユーザー基本機能のみ
Standard$99/ユーザー無制限無制限全機能利用可能
Pro$349/ユーザー無制限無制限高度な分析機能
Enterpriseカスタム無制限無制限エンタープライズ機能

📊 データ使用量の見積もり

典型的なアプリケーション別データ使用量

yaml
小規模Webアプリ(月間10万PV):
APM: 5-8GB/月
├── トランザクション: 3-5GB
├── エラーデータ: 1-2GB
└── メトリクス: 1-1GB

Infrastructure(3台サーバー): 2-3GB/月
Browser(月間5万セッション): 1-2GB/月
合計: 8-13GB/月 → Freeプラン範囲内

中規模アプリ(月間100万PV):
APM: 15-25GB/月
Infrastructure(10台サーバー): 5-10GB/月  
Browser(月間50万セッション): 2-5GB/月
合計: 22-40GB/月 → Freeプラン範囲内

大規模アプリ(月間1000万PV):
APM: 100-200GB/月
Infrastructure(50台サーバー): 25-50GB/月
Browser(月間500万セッション): 20-40GB/月
合計: 145-290GB/月 → Standard以上必要

🎯 プラン選択フローチャート

yaml
Step 1: データ量確認
├── 100GB/月以下 → Step 2へ
└── 100GB/月超過 → Standard以上必須

Step 2: チーム規模確認  
├── 1人開発 → Freeプラン
└── 複数人チーム → Standard推奨

Step 3: 機能要件確認
├── 基本監視のみ → Standard
├── 高度な分析必要 → Pro
└── エンタープライズ要件 → Enterprise

💡 実際の選択例

ケース1: 個人開発者・スタートアップ

yaml
環境:
  - Node.jsアプリ1つ
  - サーバー1-2台
  - 月間1-10万PV

推奨: Freeプラン
理由:
  ✅ データ量が100GB以内
  ✅ 基本機能で十分
  ✅ 成長に応じてアップグレード可能
月額コスト: $0

ケース2: 小規模チーム(3-5名)

yaml
環境:
  - Webアプリ2-3個
  - サーバー5-10台
  - 月間50-200万PV

推奨: Standard(3名分)
理由:
  ✅ チーム協業が必要
  ✅ 全機能アクセス
  ✅ データ量無制限
月額コスト: $99 × 3 = $297

2.3 基本APM監視の開始

🚀 Node.js APM導入(推奨第一選択)

Node.jsは最も導入が簡単で、フロントエンドとバックエンド両方で使用されることが多いため、最初の選択として推奨します。

ステップ1: エージェントのインストール

bash
# プロジェクトディレクトリで実行
npm install newrelic

# または yarn を使用
yarn add newrelic

ステップ2: 基本設定ファイルの作成

javascript
// newrelic.js - プロジェクトルートに配置
'use strict'

exports.config = {
  // アプリケーション名(ダッシュボードに表示される名前)
  app_name: ['My First App'],
  
  // ライセンスキー(環境変数から取得を推奨)
  license_key: process.env.NEW_RELIC_LICENSE_KEY,
  
  // ログ設定
  logging: {
    level: 'info'
  },
  
  // 分散トレーシング(マイクロサービス向け)
  distributed_tracing: {
    enabled: true
  },
  
  // アプリケーションログの自動転送
  application_logging: {
    enabled: true,
    forwarding: {
      enabled: true
    }
  }
}

ステップ3: アプリケーションでの読み込み

javascript
// app.js または server.js の最初の行に追加
require('newrelic');

// Express.js アプリケーション例
const express = require('express');
const app = express();

// 基本的なルート
app.get('/', (req, res) => {
  res.json({ message: 'Hello World!' });
});

// カスタムメトリクス例(オプション)
app.get('/api/users', (req, res) => {
  const newrelic = require('newrelic');
  
  try {
    // データベースからユーザー取得(例)
    const users = getUsersFromDatabase();
    
    // カスタムメトリクス記録
    newrelic.recordMetric('Custom/Users/Count', users.length);
    
    res.json(users);
  } catch (error) {
    // エラー追跡
    newrelic.noticeError(error);
    res.status(500).json({ error: 'Internal Server Error' });
  }
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

ステップ4: 環境変数の設定

bash
# .env ファイル作成
NEW_RELIC_LICENSE_KEY=your-license-key-here
NEW_RELIC_APP_NAME="My First App"
NEW_RELIC_LOG_LEVEL=info

# 本番環境での設定例
NEW_RELIC_APP_NAME="My App - Production"

# 開発環境での設定例
NEW_RELIC_APP_NAME="My App - Development"

ステップ5: アプリケーション再起動とデータ確認

bash
# アプリケーション再起動
npm start

# または PM2 を使用している場合
pm2 restart all

# 5-10分後にNew Relicダッシュボードを確認
# APM → Applications → "My First App"

2.4 基本インフラストラクチャ監視

🖥️ Linux サーバー監視設定

ステップ1: エージェントのインストール

bash
# Ubuntu/Debian の場合
curl -Ls https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | sudo apt-key add -
echo "deb https://download.newrelic.com/infrastructure_agent/linux/apt $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/newrelic-infra.list
sudo apt update
sudo apt install newrelic-infra

# CentOS/RHEL の場合  
sudo curl -o /etc/yum.repos.d/newrelic-infra.repo https://download.newrelic.com/infrastructure_agent/linux/yum/el/7/x86_64/newrelic-infra.repo
sudo yum -q makecache -y --disablerepo='*' --enablerepo='newrelic-infra'
sudo yum install newrelic-infra

ステップ2: 基本設定ファイル

yaml
# /etc/newrelic-infra.yml
license_key: YOUR_LICENSE_KEY

# サーバー識別名
display_name: "Production Web Server"

# ログレベル
verbose: 0

# カスタム属性(環境識別用)
custom_attributes:
  environment: production
  team: backend
  role: webserver

ステップ3: サービス開始

bash
# サービス開始
sudo systemctl start newrelic-infra
sudo systemctl enable newrelic-infra

# 正常動作確認
sudo systemctl status newrelic-infra

# ログ確認(トラブルシューティング用)
sudo tail -f /var/log/newrelic-infra/newrelic-infra.log

2.5 基本ブラウザ監視

🌐 Webページ監視設定

ステップ1: Browser エージェントの取得

javascript
// New Relic ダッシュボードから取得
// Browser → Add data → Browser monitoring

// 取得したスクリプト例
<script type="text/javascript">
;window.NREUM||(NREUM={});NREUM.loader_config={accountID:"YOUR_ACCOUNT_ID",trustKey:"YOUR_TRUST_KEY",agentID:"YOUR_AGENT_ID",licenseKey:"YOUR_LICENSE_KEY",applicationID:"YOUR_APP_ID"}
;window.NREUM||(NREUM={}),__nr_require=function(n,e,t){function r(t){if(!e[t]){var o=e[t]={exports:{}};n[t][0].call(o.exports,function(e){var o=n[t][1][e];return r(o||e)},o,o.exports)}return e[t].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<t.length;o++)r(t[o]);return r}({},{},["loader","api"]);
</script>

ステップ2: HTMLページへの統合

html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Application</title>
    
    <!-- New Relic Browser Agent -->
    <!-- 上記で取得したスクリプトをここに配置 -->
    
    <!-- その他のCSSファイル等 -->
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <!-- アプリケーションコンテンツ -->
    
    <!-- カスタムイベント追跡例 -->
    <script>
    // ボタンクリック追跡
    document.getElementById('submit-btn').addEventListener('click', function() {
        if (window.newrelic) {
            newrelic.addPageAction('button_click', {
                button_id: 'submit-btn',
                page: 'contact-form'
            });
        }
    });
    
    // エラー追跡
    window.addEventListener('error', function(e) {
        if (window.newrelic) {
            newrelic.noticeError(e.error);
        }
    });
    </script>
</body>
</html>

ステップ3: 基本的なカスタムイベント

javascript
// ページロード完了時のイベント
window.addEventListener('load', function() {
    if (window.newrelic) {
        newrelic.addPageAction('page_loaded', {
            page_type: 'landing',
            load_time: performance.now()
        });
    }
});

// フォーム送信追跡
function trackFormSubmission(formId) {
    if (window.newrelic) {
        newrelic.addPageAction('form_submission', {
            form_id: formId,
            timestamp: Date.now()
        });
    }
}

// エラー追跡
function trackCustomError(errorMessage, context) {
    if (window.newrelic) {
        newrelic.noticeError(new Error(errorMessage), context);
    }
}

2.6 基本トラブルシューティング

🔍 データが表示されない場合

チェックリスト

yaml
1. ライセンスキー確認:
   ✅ 正しいキーを使用しているか
   ✅ 環境変数が正しく設定されているか
   ✅ スペルミスがないか

2. ネットワーク接続:
   ✅ インターネット接続が安定しているか
   ✅ ファイアウォールがBlocking していないか
   ✅ プロキシ設定が正しいか

3. エージェント設定:
   ✅ 設定ファイルの構文が正しいか
   ✅ エージェントが正しく読み込まれているか
   ✅ アプリケーションが再起動されているか

4. トラフィック確認:
   ✅ アプリケーションにアクセスがあるか
   ✅ 最低でも数回のリクエストが発生しているか

基本的な診断コマンド

bash
# New Relic接続テスト
curl -I https://collector.newrelic.com

# ライセンスキー確認
echo $NEW_RELIC_LICENSE_KEY

# インフラエージェントログ確認
sudo tail -f /var/log/newrelic-infra/newrelic-infra.log

# APMアプリケーションログ確認(Node.js例)
DEBUG=newrelic* npm start

⚠️ パフォーマンスへの影響最小化

yaml
APMエージェント:
  - オーバーヘッド: 通常 < 3%
  - メモリ使用量: 追加で10-20MB
  - 推奨: 本番環境でのサンプリング設定

インフラエージェント:
  - CPU使用率: < 1%
  - メモリ: 30-50MB
  - 推奨: 収集間隔を30秒に調整(高負荷時)

ブラウザエージェント:
  - ページロード影響: < 50ms
  - バンドルサイズ: 約20KB gzipped
  - 推奨: 非同期読み込み確認

🎉 基本セットアップ完了

✅ 完了チェックリスト

基本セットアップが完了すると、以下が確認できるはずです:

  • [ ] New Relicダッシュボードにアプリケーションが表示される
  • [ ] APM Overview画面でレスポンス時間が確認できる
  • [ ] Infrastructure画面でサーバーメトリクスが表示される
  • [ ] Browser画面でページロード時間が記録される
  • [ ] 基本的なアラートが設定可能な状態

🚀 次のステップ

基本セットアップが完了したら、以下の学習を検討してください:

  1. Part 2B: 高度な設定・エージェント詳細 - より詳細な設定とカスタマイゼーション
  2. Part 3A: APM基礎 - アプリケーション監視の詳細活用
  3. Part 4: データ分析とカスタマイゼーション - NRQL習得とダッシュボード作成

💡 よくある次の疑問

yaml
Q: データが表示されるまでどのくらいかかる?
A: 通常5-10分、最大で15分程度

Q: 複数の環境(開発・本番)を分けて管理したい
A: Part 2Bで詳しく解説します

Q: アラートを設定したい
A: Part 3Aでアラート戦略を詳しく説明します

Q: カスタムダッシュボードを作りたい
A: Part 4でNRQLとダッシュボード設計を解説します

🤖 より高度な設定に進む: Part 2B: 高度な設定・エージェント詳細で、本格的な本番環境設定を学習しましょう!