New RelicのAPM(Ruby)用の検証環境を、EC2上のRedmineに構築してみた

2023.07.13

こんにちは、ゲームソリューション部のsoraです。
今回は、「New RelicのAPM(Ruby)用の検証環境を、EC2上のRedmineに構築してみた」ことについて書いていきます。

はじめに

New Relicとは何かについては、以下ブログをご参照ください。

New RelicのAPM(Ruby)を導入した場合に、見ることのできる項目を理解したり、デモとして活用するための環境を構築してみました。
公式ページやNew RelicのGUIを参考に進めていきます。
APMの概要 | New Relic Documentation

今回監視対象とするアプリはRedmineのため、Ruby Agentを使用します。
個人的に、Ruby on Railsを触ったことがないこともあり、色々つまづいた部分もあったため、その点も記載していきます。
本記事ではAPMの導入がメインであり、APMで見ることのできる項目についての説明は記載しません。

EC2上でのRedmine構築

Redmine構築

RedmineはAMIで簡単に構築可能です。
今回は以下を選択しました。
EC2インスタンスタイプにt3a.smallが選択されていましたが、ap-northeast-1cではt3a.smallが利用できなかったため、t3.smallにしました。

Redmineへのログイン

今回利用することはありませんが、Redmineへログインするための情報を確認します。
Redmineのログイン情報を取得するために、SSHで接続します。
SSH接続時のユーザ名は、私の利用したバージョンだとbitnamiでしたが、環境やバージョンによってはredmineubuntuなど異なる場合があるらしいです。
パスワードはなしで、キーペアはEC2インスタンス作成時に選択したものです。

SSH接続ができたら、catコマンドでRedmineのログイン情報を確認します。

$ cat bitnami_credentials
Welcome to the Redmine packaged by Bitnami
******************************************************************************
The default username and password is 'user' and '[パスワード]'.
******************************************************************************
You can also use this password to access the databases and any other component the stack includes.
Please refer to https://docs.bitnami.com/ for more details.

http://(IPアドレス)/loginにアクセスして、確認したログイン情報でログインが可能です。

New RelicのAPMの導入

ここまでで準備した監視対象のサーバにNew RelicのAPMを導入していきます。
Add DataからApplication MonitoringのRubyを選択します。

その後、アプリケーションの名前を設定します。
これはNew Relic側で表示するときや設定ファイルに記述される名前であり、何でも良いです。

次に、New Relic Agentをインストールします。
Bundlerを使用しているため、Yes, Using I'm Bundlerを選択して、Gemfileへの追記、インストールを実行します。

ここで、私がいくつかつまづいたポイントを記載します。
(Ruby on Railsに知見のない初心者向けのため、知見のある方は次のキャプチャ画像まで飛ばしてください。)
まずGemfileがどこにあるのかというと、/opt/bitnami/redmine配下にあります。
Gemfileに指定されたgem 'newrelic_rpm'を追記して、bundle installを実行すると、以下エラーが出ました。

$ bundle install
You are trying to install in deployment mode after changing your Gemfile.

Gemfileを変更した後に、インストールしようとしているのが良くないみたい?(このときdeployment modeが何かわからずスルーしてしまいました。)

色々調べてみたところ、一旦Gemfile.lockを削除してみると良いと記載があったため、その通りにしてみると以下エラーが出ました。

$ bundle install
The deployment setting requires a Gemfile.lock. Please make sure you have checked your Gemfile.lock into version control before deploying.

Gemfile.lockが存在しなくてエラーが出ているように見えます。
bundle installで、GemfileからGemfile.lockが生成されると期待していたため困りました。

原因としては、デフォルトかもしくは試行錯誤している中で、deploymentモードになっていたことでした。
deploymentモードのbundlerは、Gemfile.lockのみを参照するため、Gemfile.lockが必須とのことです。

そのため、deploymentモードを解除して、再実行すると上手くいきました。

$ cat .bundle/config
BUNDLE_BIN: "bin"
BUNDLE_DEPLOYMENT: "true"
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITHOUT: "development:sqlite:test"

$ vi .bundle/config
# ⇒BUNDLE_DEPLOYMENT: "true"の削除

$ bundle install

次に、New Relicのconfigファイルをダウンロードしてサーバ上に配置します。
配置場所は、/opt/bitnami/redmine/configです。

次に、インフラ監視を入れる場合は、指定されたcurlを実行します。
この工程はスキップすることが可能です。

最後に、接続テストを実行して、正常に完了すれば導入完了です。

New RelicのAPMの確認

New RelicのAPM & Servicesで、先ほど作成したアプリ名を選択することで、APMが導入できていることが確認できます。

最後に

今回は、「New RelicのAPM(Ruby)用の検証環境を、EC2上のRedmineに構築してみた」ことを記事にしました。
どなたかの参考になると幸いです。