サンプルアプリ(New Relic Ruby Kata)をCloud9で動かしてNew Relic APMを体験する
DevelopersIOでははじめまして。
New Relic のシニアテクニカルサポートエンジニアの伊藤です。
今回は、New Relicが提供しているRubyのアプリケーション改善の練習環境 New Relic Ruby Kata をご紹介します。
もともとNew Relic Ruby KataはHeroku等で利用することが想定されていますが、コードの改修と計測を行うため、開発環境とセットとなった Cloud9での実行方法をご案内します。
Cloud9のローンチ
Cloud9 ConsoleからCloud9を構築します。 以前はAmazon Linuxしか無かったためパッケージ導入が難しかったですが今はAmazon Linux2ベースのCloud9がありますのでこちらをローンチしてください。
Ruby Kataアプリは3000番ポートを利用するためCloud9インスタンスのセキュリティグループでTCP 3000 ポートへのアクセスを許可してください。
New Relic Ruby Kata の構築
※New Relic Ruby Kataは古い環境でありセキュアではありません。 あくまでもAPMの練習のための環境ですのでアプリ開発のベース環境にはしないでください。
Git clone
Cloud9が起動したらGithubからNew Relic Ruby Kata アプリをcloneします。
git clone https://github.com/newrelic/newrelic-ruby-kata.git
Kata Setup
GIt cloneができたら ~/newrelic-ruby-kata/cloud9_amazon_linux2/Kata-Setup
を開きScriptを順番に実行します。
- environment-setup
- kata-install
- ruby-install
- kata-setup
時間がかかるScriptもありますのでScriptが停止してから次のScriptを実行してください。 これでKata アプリの構築が完了します。
New Relic Ruby Kata アプリの起動と停止
newrelic-ruby-kata/cloud9_amazon_linux2/kata-start.sh
を実行するとRuby アプリが起動しStopするとアプリが停止します。
Scriptの起動と停止はCloud9コンソールのRunボタンとStopボダンで行う事ができます。
kata-start.sh
Scriptを実行してターミナルに表示される http://0.0.0.0:3000 リンクをクリックするとアプリケーションを表示できます。
New Relic APM Agentインストール
newrelic-ruby-kata/Gemfile には既に'newrelic_rpm' が含まれています。
自分のアカウントに情報を連携するために newrelic-ruby-kata/config/newrelic.yml ファイルを更新します。
New Relic にログインして Add more data をクリックします。
RubyアプリですのでRuby アイコンをクリックします。
複数のNew Relic アカウントにアクセスできる場合はデータを管理するアカウントを選択してください。
New Relicで表示するアプリケーション名を入力するとアプリケーション設定やライセンスキーなどの必要な情報を含んだ newrelic.yml が自動生成されます。ダウンロードしてファイルを置き換えてください。
ファイルを置き換えてからRuby Kataアプリを再起動すればNew Relic APMにデータが送信されます。
Ruby Kata でのAPMトレーニング
Ruby Kataには非効率なDBクエリやLoop処理ゼロ除算セラーなど様々なタイプのパフォーマンス問題が組み込まれています。
Kata Programs から各種の問題が組み込まれたページを表示させTransactionやDBクエリやErrorMessageなどの情報をNew Relic APMで確認します。
各ページのコードは newrelic-ruby-kata/app/controllers/ に含まれています。 New Relic APM で事象を確認しながらコードの修正を行います。
コードを修正した後はkata-start.sh
でアプリの停止・起動を行い効果を確認します。
まとめ
New Relic Ruby Kata とCloud9を利用する事でNew Relic APMの学習を低コストで簡単に始める事ができます。 実際にコードの修正がアプリケーションパフォーマンスにどのように反映されるのか確認してみてください。