はじめに
New Relicは強力なオブザーバビリティプラットフォームですが、「難しそう」「どこから始めればいいかわからない」という声をよく聞きます。
この記事では、Progateの演習環境を使って、New Relicの基本的な使い方を学んでいきます。
1. 環境準備
1.1 必要なアカウントの作成
-
- 無料プランで十分です
- 「New Relic を使ってアプリケーションを改善しよう」コースを選択
-
- サインアップ時の「主な目的」で「Qiita記事・実践」を選択
- 無料プランを選択(クレジットカード不要)
1.2 Progate環境の概要
Progateの演習環境は以下の特徴があります:
- Ruby on Railsアプリケーションが用意されている
- 基本的なCRUD機能を持つブログアプリ
- 開発サーバーが既に起動している状態
2. New Relicエージェントの導入
2.1 APMエージェントのインストール
# Gemfileに追加
gem 'newrelic_rpm'
# インストール実行
bundle install
2.2 設定ファイルの作成
config/newrelic.yml
を作成:
common: &default_settings
license_key: YOUR_LICENSE_KEY
app_name: "Progate Blog App"
development:
<<: *default_settings
app_name: "Progate Blog App (Development)"
3. 基本的なモニタリング
3.1 アプリケーションパフォーマンスの確認
- トランザクション(アクション)毎の応答時間
- Apdexスコア(ユーザー満足度指標)
- エラー率
3.2 主要な監視項目
-
レスポンスタイム
- アクション別の平均応答時間
- スロークエリの特定
-
データベース
- クエリの実行時間
- クエリの発行回数
-
エラー監視
- エラーの発生頻度
- エラーの種類と詳細
4. パフォーマンス改善の実践
4.1 N+1問題の検出と改善
Before:
def index
@posts = Post.all
@posts.each do |post|
post.user.name # N+1問題の発生
end
end
After:
def index
@posts = Post.includes(:user).all # Eager Loading
end
4.2 キャッシュの導入
# コントローラーでのキャッシュ
def show
@post = Rails.cache.fetch(['post', params[:id]], expires_in: 1.hour) do
Post.find(params[:id])
end
end
5. カスタムメトリクスの追加
5.1 ビジネスメトリクスの計測
# 投稿数を計測
def create
@post = Post.new(post_params)
if @post.save
::NewRelic::Agent.record_metric('Custom/Posts/Created', 1)
redirect_to @post
end
end
6. アラートの設定
6.1 基本的なアラート条件
-
レスポンスタイムのしきい値アラート
- 平均応答時間が500ms以上
- エラー率が1%以上
-
エラー監視アラート
- 5分間で3回以上のエラー発生
6.2 アラート通知の設定
- Slackへの通知設定
- メール通知の設定
7. ダッシュボードの作成
7.1 基本的なダッシュボード項目
-
アプリケーション概要
- トランザクション応答時間
- エラー率
- Apdexスコア
-
データベース状態
- クエリ実行時間
- スロークエリ一覧
-
カスタムメトリクス
- 投稿数推移
- ユーザーアクティビティ
8. 次のステップ
- 本番環境での活用
- より詳細なパフォーマンス分析
- 分散トレーシングの導入
まとめ
Progate環境でNew Relicを試すことで、以下が学べました:
- 基本的な監視設定の方法
- パフォーマンス問題の発見と改善
- アラートとダッシュボードの活用
この経験を活かして、実際のプロジェクトでNew Relicを活用していきましょう。