【おまけ】NewRelicというものに初めて触れてみる

## はじめに
今回、以下のアドベンドカレンダーに挑戦したので流れを記事としてまとめていきたいと思います。

https://qiita.com/advent-calendar/2024/newrelic

はじめて**New Relic**というものを知ったので、まだ知らない方にどのようなモノなのか少しでも理解していただけたら幸いです。


> Codespaces を利用する場合は画面上部のボタン「オンライン IDE を起動する」から起動できます。

とのことなのでこちらを利用しました。

https://app.path.progate.com/tasks/muzHlTIVNZkSxom_eL_be/pages/setup


## 1~2を行う（ダウンロード、解凍、移動、確認）
```ruby
$ progate download 3xFsgBdUvwj-Dt5euSYZg --project-dir new_relic_app_get_starting_with_new_relic --name new_relic_app

# ちゃんとモノがあるか確認
$ ls

$ code $HOME/progate_path/new_relic_app_get_starting_with_new_relic/new_relic_app
$ cd $HOME/progate_path/new_relic_app_get_starting_with_new_relic/new_relic_app

```

一応記載内容をそのまま実行。
途中タブが切り替わりますが、切り替わった先で進めていきます。
具体的には下のように画面がかわりました。
[![Image from Gyazo](https://i.gyazo.com/c5363c5bca91e568a32e92f60e6bd958.png)](https://gyazo.com/c5363c5bca91e568a32e92f60e6bd958)


[![Image from Gyazo](https://i.gyazo.com/d083fd5c6b0a8d140d75e6dd5b71aa32.png)](https://gyazo.com/d083fd5c6b0a8d140d75e6dd5b71aa32)

```ruby
➜ ~/progate_path/new_relic_app_get_starting_with_new_relic/new_relic_app $ progate diagnose
✓ node --version
  installed: 18.17.1, required: >= 18.12.0
✓ npm --version
  installed: 9.6.7, required: >= 8.1.0
✓ mysql
All checks have passed successfully.
```
ここまでは問題なく完了できました :relaxed:


## 3. データベースに接続できるようにする
```ruby
# .env.sample のファイル名を .env に変更
$ mv ./api/.env.sample ./api/.env

# VS Code で api/.env ファイルを開く
$ code ./api/.env

# ファイル内の DATABASE_URL を実際のユーザー名とパスワードを使って書き換え
# ※ Codespaces を利用している場合は以下のように設定してください。を参照
DATABASE_URL="mysql://path_user:password@127.0.0.1:3306/new_relic_app_dev"

# .env.test.sample のファイル名を .env.test に変更
$ mv ./api/.env.test.sample ./api/.env.test

# VS Code で api/.env.test ファイルを開く
$ code ./api/.env.test

# DATABASE_URL を実際のユーザー名とパスワードに置き換え
# Codespaces を利用している場合は以下のように設定してください。を参考に変更。
DATABASE_URL="mysql://path_user:password@127.0.0.1:3306/new_relic_app_test"
```

## 4. サーバーを起動し、ブラウザからアクセス
```ruby
# パッケージのインストール
$ npm clean-install

# ローカルのデータベースにプロジェクトのデータベース情報を反映
$ npm run db:migrate

# 実行後 MySQL にログインするとデータベースとテーブルが作成されていることが確認
# Codespace利用している方はpassword
$ mysql -u path_user -h 127.0.0.1 -p
mysql> show databases;

# 確認ができたら、exit で MySQL からログアウト
mysql> exit

# サーバーを起動
$ npm run start:api

# 別ターミナルを開いて次を実行
$ npm run start:front

# ブラウザから http://localhost:3000/ にアクセスしてページが確認できれば問題ないようです。
```

> ※ npm run db:reset コマンドでデータベースを初期状態にリセットできます。リセットしたいタイミングで随時実行してください。

> 起動したサーバーは Ctrl + c で停止できます。


## 5. 現状を確認
```ruby
# 現時点でのテスト結果を「チェックアイテム」で確認
# この段階では全てのテストが通っていなくても大丈夫なようです。
$ progate submit
```

👆ここでエラー発生
[![Image from Gyazo](https://i.gyazo.com/e5cf420340fda414951abb4103471178.png)](https://gyazo.com/e5cf420340fda414951abb4103471178)

ターミナル記載の通りログインしていないことが原因だそうで。
`progate login`を実行したら無事ログインできました
[![Image from Gyazo](https://i.gyazo.com/e56490617a69339ee071fd1031ffeb07.png)](https://gyazo.com/e56490617a69339ee071fd1031ffeb07)

[![Image from Gyazo](https://i.gyazo.com/db31691685b6c4aa136c0a8b80fdee9f.png)](https://gyazo.com/db31691685b6c4aa136c0a8b80fdee9f)


## New Relic のセットアップ
記事参照に進めていきます。無料範囲内で試すことができるのはうれしいですね！

https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa

https://newrelic.com/jp/sign-up-japan?utm_source=external_partners&utm_medium=content&utm_campaign=apj_jp-ever-green-progate&utm_content=progate



## ポイント
> 事前に定義された異常が発生した時に通知するだけの「モニタリング」と違い、「オブザーバビリティ」を備えたシステムでは問題が生じた原因とシステムの動作がどのようになっているのかをリアルタイムで把握できます。
New Relic はオブザーバビリティを実現するための強力なツールであり、システムのモニタリング、トラブルシューティング、最適化をサポート

👆このような記述がある通り、個人開発者であっても「早期問題発につながる」「サーバーアプリ運用が楽になる」「アプリのパフォーマンスを理解できる」等、いいことが多いような感じがしました。

完全に触れることはできませんでしたが、このようなサービスがあることを知れてよかったです。
他の方の記事も読んでさらに理解を深めたいと思います。