Rubyのエージェントのでデプロイを記録

New Relic では、コマンドラインや Ruby エージェントと一緒に配布される Capistrano のレシピ(バージョン2.x および 3.x)を利用してアプリケーションのデプロイ情報を送信できます。デフォルトではすべてのデプロイ情報は、本番(Production)環境に記録されています。ステージングなど他の環境では、`rails_env`変数を変更できます。

New Relic UIではデプロイについて、サブスクリプションレベル別に異なる情報を表示します。デプロイのダッシュボードを表示するには、New Relic のメニューバーから、APM > Applications > (選択したアプリ) > Events > Deploymentsを選択します。詳しくは、デプロイメントのダッシュボードをご覧ください。

アプリケーション名の割り当て

アプリケーション名の割り当てる方法は、以下のとおりです。

  1. 最新の Ruby エージェントをダウンロードする
  2. newrelic.yml ファイルに 意味のあるapp_name をセットする。

そうすることで、New Relic UI でデータを参照したときに、指定した環境のインスタンスに app_name で指定したラベルをを割り当てます。てプロイ用のアップロードスクリプトは、アプリをデプロイに関連付けるためにこのラベルを使います。

コマンドラインを利用して記録する

Ruby エージェントを gem でインストールした場合、newrelic コマンドを実行することで、直接デプロイを記録できます。

newrelic deployments

newrelic は複数のオプションを取ります。description は短いテキストです。

deployments [OPTIONS] [description] 
OPTIONS:
   -a, --appname=name           アプリケーション名の設定
                                デフォルトは、newrelic.yml の app_name にセットされている値 
   -e, --environment=name       (RAILS|MERB|RUBY)_ENV 設定の上書き
   -u, --user=USER              デプロイユーザーの指定
   -r, --revision=REV           デプロイ対象のリビジョンの指定
   -c, --changes                標準入力からチェンジログの読み込みを行う
   -h                           このヘルプの表示

注: -c オプションを使うと、スクリプト内で、changelog をパイプできます。

Capistrano 3.x で記録する

New Relic がデプロイを記録するために Ruby エージェントに含まれる Capistrano のレシピを使用できます。インストールセクションごとのアプリケーションの設定の後、Capfile の先頭に次の行を追加します。

require 'new_relic/recipes'

deploy.rbの最後に以下を加えます。

after "deploy:updated", "newrelic:notice_deployment"

Capistrano 2.x で記録する

Ruby エージェントには、デプロイの記録用に Capistrano 2.x と互換性のあるレシピを付属しています。Capistrano 2.x を使うなら、newrelic_rpm gem を使って、Ruby エージェントをインストールし、deploy.rb の先頭に以下の行を追加します。

require 'new_relic/recipes'

gem ではなく Railsのプラグインとして Ruby エージェントを使っているならば、Capfile の以下の行をチェックし、必要に応じて、load deploy.rb 行の上に以下の行を追加します。

Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }

エージェントのインストール方法に応じて、この手順を完了した後、deploy.rbに以下のフックを追加して、デプロイをNew Relicに通知します。

# Notify New Relic of deployments.
# This goes out even if the deploy fails, sadly.
after "deploy",            "newrelic:notice_deployment"
after "deploy:update",     "newrelic:notice_deployment"
after "deploy:migrations", "newrelic:notice_deployment"
after "deploy:cold",       "newrelic:notice_deployment"

cap deploy の次回実行時には、New Relic にデプロイが通知され、すべての時系列グラフにデプロイイベントが表示されます。Proアカウントのユーザーは、ドリルダウンしてデプロイの詳細を確認できます。

Capistrano の設定のカスタマイズ

Capistrano 変数を使用して、デプロイの設定を変更できます。定義済みの場合はデフォルト値を上書きします。以下は、Capistrano 2 及び 3 の両方に適用されます。

Capistrano 変数 説明
newrelic_appname デプロイがどのアプリに対応するかを示します。デフォルトでは、指定された rails_env の newrelic.yml ファイルにある定義を利用します。

注: コマンドラインでこの値を設定する場合は、1つのアプリケーション名のみ指定可能です。この値を newrelic.yml に設定している場合は、最初のアプリケーション名だけが使われます。

newrelic_changelog Capistrano コマンドが実行されたローカルの作業ディレクトリからの svn または git の log ログコマンドを実行することで、生成される変更履歴です。
newrelic_desc デプロイの説明文。デフォルトは空です。
newrelic_license_key New Relic ライセンスキー。デフォルトでは、指定された rails_env の newrelic.yml ファイルにある定義を利用します。
これは APIキー同じではないことに注意してください。
newrelic_revision リビジョンは、デプロイの記録です。Subversion をお使いの場合は、リビジョンに加えて、タグやブランチ名を含めることができます。
newrelic_user デプロイに関連付けるユーザー

Capistrano のすべてのバージョンで、お使いの deploy.rb で上記の設定を上書きできます。

set :newrelic_user, "username"

Capistrano 2.x では、以下のようなコマンドラインで設定を上書きできます。

cap production deploy -Snewrelic_desc="Deploying beta Krakatau release"

以下の例は、デプロイの Change Log タブに以下の内容の入力を求めるプロンプトが表示されます。

set(:newrelic_changelog) do
  Capistrano::CLI.ui.ask "Enter a summary of changes: "
end

 

ステージングへのデプロイ

デフォルトでは、 newrelic_rpm gem には、本番環境における全デプロイを記録する Capistrano タスクが付属しています。本番とは異なった別のステージングアプリケーションを使用している場合、 rails_env 変数の値を変更することで、ステージングのデプロイはステージングのデプロイとして記録することができます。

ステージング環境のデプロイとして設定するには、Capistrano またはコマンドラインを使います。

Capistrano multistage をお使いの場合は、config/deploy/staging.rb に以下の行を追加します。

set :rails_env, "staging"

Capistrano 2.x をお使いの場合は、コマンドラインに以下の情報を追加します。

cap -s rails_env=staging deployment_task_name

さらに詳しい情報

追加のドキュメントリソースは次のとおりです。