New Relic を使って Redmine のオブザーバビリティを実現

# はじめに
　Redmine は、プロジェクト管理ができる人気のあるオープンソースのツールです。多くの企業や開発チームがタスク管理、バグトラッキング、ガントチャートなどの機能を活用して効率的にプロジェクトを運営しています。しかし、プロジェクトの規模が大きくなるにつれて、システムのパフォーマンスを監視し、最適化することが重要になってきます。ここで役立つのがNew Relicです。

　New Relicは、アプリケーションのパフォーマンスをリアルタイムでモニタリングし、問題を迅速に特定・解決するためのツールです。エンドユーザーの体験を向上させるために、リソースの使用状況、レスポンス時間、エラー率などを詳細に分析できます。これにより、 Redmine のパフォーマンスを向上させ、ユーザーの満足度を高めることができます。

　Redmineはプラグインの導入などでカスタマイズされることが多いです。こうした場合、New Relicを使って収集したデータからボトルネックを特定したり、データベースのインデックスを見直す必要があるかどうかなどの洞察を得ることができます。

　今回は Redmine に New Relic のエージェントをインストールする方法とデータの確認方法を紹介します。

:::note info
最新のアップデートの詳細はこちら
[New Relic アップデート一覧
](https://newrelic.com/jp/blog/nerdlog/new-relic-update  "New Relic アップデート一覧")
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::

# 今回のポイント
この記事で紹介しているポイントは、次の３つです。

**1\. Redmine に New Relic を導入する手順を公開**
　Redmine は Ruby on Rails で開発されているため、 Ruby の APM Agent をインストールする手順を紹介します。
 
**2\. New Relic の UI 上で収集したRedmineのデータを確認**
　New Relic のエージェントを使って収集した Redmine のデータの確認方法を紹介します。アクセスしているページのフロントエンドのパフォーマンスやバックエンドのレスポンスタイムなどを可視化することが可能です。
 
**3\. Redmine 用のダッシュボードの使い方を紹介**
　New Relic のエージェントを使って収集した Redmine のデータの確認方法を紹介します。DBのクエリの実行状況やアプリの応答時間等のRedmineの状況を確認できます。
 
https://docs.newrelic.com/jp/docs/infrastructure/host-integrations/host-integrations-list/redmine-integration/
 
# セットアップ
## Ruby APM エージェントの設定
**1\. [Add Data]から APM の Ruby を選択します。**
![Ruby APM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/e36a9dc6-b045-07c1-889e-390d4e93cd45.png)

**2\. Instrumentation Method で Ruby on Rails を選択します。**
![Ruby_on_Rails.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/bc443ee2-73fa-72da-41df-6b8bb03903ac.png)

**3\. License key と User key の使用方法を選択します。**
既存のキーを使う方法と新しくキーを作成する方法のに種類があります。どちらか好きな方を選択してください。
![LicenseKey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/24b3b493-a2a4-a5d2-7308-d2e8f815a9a2.png)

**4\. New Relic の APM エージェント をインストールします。**
**[Yes, I'm using Bundler]** を選択すると **Gemfile** の記載内容と**インストールコマンド**が表示されます。
![インストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/aaa8b28c-a597-d7c2-fa02-7634b8286561.png)

Redmine の Gemfile は、 ``/redmine`` のディレクトリ直下に配置されています。
ファイルの末尾に下記を追記し、保存してください。
```ruby:redmine/Gemfile
gem 'newrelic_rpm'
```
Gemfile を編集して保存できたら ``bundle install`` コマンドを実行して gem をインストールします。

**5\. APM エージェントの設定ファイルをダウンロードして、指定の場所に配置してRedmineを再起動します。**
　New Relic の UI 上で表示するアプリケーション名を入力します。
![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/95b94513-bd17-1f92-61ae-9ae2e67c6dc8.png)

入力できたら newrelic.yml をダウンロードして指定のディレクトリに配置します。
Redmineの場合は、 ``redmine/config`` に配置してください。

newrelic.yml が配置できたらエージェントの設定は完了です。
Redmine を再起動すると APM エージェントがデータの収集を開始します。

## Redmine ダッシュボードのセットアップ
**1\. Add Data から Redmine ダッシュボードをセットアップします。**
メニューから Add Data を開いて検索バーに "Redmine" と入力します。
**Dashboards** のタブを開くと Redmine のダッシュボードが表示されるため、選択して設定を進めます。
![Redmine.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/8a65efd4-15e4-d7b3-eb8f-d41a584911c3.png)

 選択すると下記の画面が表示されます。すでに設定済みなので、[Done] もしくは [Skip this step] を選択します。すると Dashboard が作成されるため、完了後に右下の [View Dashboard] を選択して作成した Dashboard を表示しましょう。
 
![Redmine_dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/c765a91b-e7c5-6012-7092-f6cd0ac1744e.png)

**2\. Dashboard の設定を変更する**
　Redmineのみのデータを集計して状態を確認するためには、作成された Dashboard を変更する必要があります。
**[Applications (click on the application name to filter)]** のウィジェットを編集します。

![Dashboard1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/7443ba1e-0fbe-2220-f0db-1d7c495d8ff8.png)

下記のように[Facet Linking] の **[Filter the current dashboard]** を有効にします。これでアプリケーション名を選択するとダッシュボード全体に filter を設定することができるようになります。

![Dashboard2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/7a08d074-2770-1cf5-c06b-8717059a6915.png)

これで設定は完了です。

# データの確認
　Redmine にアクセスすると New Relic へデータが連携され始めます。APM と Dashboard　で連携されたデータを確認して見ましょう。
## サマリページで全体の状態を把握
　New Relic APM のサマリページでは Redmine の Response Time や Error rate、 スループット等を確認することができます。
 
![summary.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/73f5d6aa-a7aa-d0d6-3655-2b86be61a0b6.png)

## Transactions で実行された処理のパフォーマンスを確認
　APM の Transactions では Redmine の各処理毎のパフォーマンスを確認することができます。アプリケーションのパフォーマンスへの影響度を表している most time consuming を基準にランキング形式で処理のリストが表示されています。上位にあるものから改善対応を実施ことで高い改善効果が期待できます。
 
![Transactions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/f902ee3e-321e-c1bb-1638-52bad7ada0c0.png)

## Databases で実行されたクエリの情報を確認
　APM の Databases では　Redmine　で発行された SQL のクエリのパフォーマンスを確認することができます。ランキングで表示されている SQL の処理を選択するとそれぞれがどのトランザクションで実行されているのかという情報も確認することが可能です。
 
![Databases.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/8f6eee8c-d825-505e-72e6-eaf6b81d25df.png)

## Dashboard で Redmine のデータを確認する
　Redmine の　Dashboard でデータを確認するためにはまず初めに **[Applications (click on the application name to filter)]** のウィジェットで Redmine のアプリケーションを選択する必要があります。
 
![Filter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/d77353a2-c1a3-cd11-2612-23d27fb2cbf4.png)

選択すると各タブでデータが確認できるようなります。
APM や Browser の画面を開かずに Redmine のパフォーマンスの概要を把握することが可能です。

![スクリーンショット 2024-07-09 22.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/ddae5398-2e4a-1f25-4f9e-f01b54e799ba.png)

![スクリーンショット 2024-07-09 22.53.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043202/c6b70f66-303d-20c8-8695-48e4f38e8dc4.png)

# 最後に
　Redmine に　New Relic　を導入することで、システムのパフォーマンスを詳細に監視し、最適化することが可能になります。これにより、ユーザーエクスペリエンスを向上させ、プロジェクトの進行を円滑にすることができます。是非、New Relic　を導入して、Redmine　のパフォーマンス管理を強化してください。

:::note info
最新のアップデートの詳細はこちら
[New Relic アップデート一覧
](https://newrelic.com/jp/blog/nerdlog/new-relic-update  "New Relic アップデート一覧")
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::