10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[これは何]
まだオブザーバビリティに触れた事の無い学生が、New Relic を使ってみるべき理由と、その簡単な実例を紹介します。

[注意]
この記事は、オブザーバビリティやモニタリングを初めて知る/あまり触れたことのない学生向けに書かれています。

[略語]
記事中では、New RelicNRと略して表記します。

自己紹介

Yuma Satake

普段は フロントおじさん Webアプリケーション開発をしている車好きの学生。
9月に相方のむらさめと、NRUG Nagoya を立ち上げました。

  • 名前:佐竹友真
  • 所属:名古屋工学院専門学校(3 年)
  • 領域:Web 開発
  • 趣味:車・旅行
  • Twitter:Yuma Satake | Matsuriba🏮

なんか一通り書いたら、めちゃくちゃAI生成みたいな文章になってしまった。

学生よ、New Relic を使え

New RelicData Dogといったツールを使ったことはありますか?
これらのツールは、アプリケーションやインフラのログやパフォーマンスを監視する、オブザーバビリティツールです。

何が嬉しいか

  • エラー時のトレース
    エラーが発生した際に、どの処理で、どんな内容でエラーが発生したかをトレースできる
  • ユーザ体験を可視化
    ページロードが遅い・APIエラーが多発してる などユーザーの体験を損ねてる問題を簡単に発見できる
  • パフォチューのお供
    スロークエリや、時間がかかってる処理が可視化できる

このようにオブザーバビリティツールを使うことで、より快適に開発ができるようになります!
しかし、周囲でこれらのツールを使っている学生を私はほぼ知りません😇

なぜ学生が触れる機会が少ないか(n=2)

  • そもそも運用フェーズを踏まないので、ツールに触れる機会が少ない
  • 利用料が高いイメージがある
  • 導入が難しそうなので、手を出しにくい

ですが、実際に大きな企業の開発現場では、これらのツールが導入されていることが多いです。
インターン等でなら触れる機会があった...という学生も多いのではないでしょうか?

しかし、NRには、開発中も便利に使える機能や、学生向けの無料プランがあります!!

この記事では、そんなNRの登録方法や、Goにおける簡単な導入方法を紹介します。

New Relic とは?

[NR公式サイトより]
New Relic は、モバイルやブラウザのエンドユーザーモニタリングや、外形監視、バックエンドのアプリケーションとインフラモニタリングなど、オンプレやクラウド、コンテナからサーバレスまであらゆるシステム環境での性能管理を実現するプラットフォームです

NRとは何か、を一言で説明するのはとても難しいですが、フロント→バックエンド→インフラまで、サービスの全てを可視化する事ができるツール(プラットフォーム)です。

学生に優しい New Relic

NRは、学生向けの無料プランや、初めてオブザーバビリティを学ぶためのコンテンツを提供しています。

  • 学生向け無料プラン:Github Education 経由で無料で利用できます
  • 全ての機能が使える:無料プランでも、全ての機能+500GB/月のデータ書き込みが可能
  • 学習コンテンツ:オブザーバビリティとは?から、実際のアプリケーションに導入する方法まで

New Relic の始め方

実際に、Github Student Developer Pack 経由で NR を始める手順を紹介していきます。

1. アカウントの作成

まず、正面からアカウントを作成します。

▼ サインアップ

一通り入力して、仮登録

仮登録のメールが届くので、リンクから本登録

今回は後で Github との連携を行うので、GithubのOAuthで登録します

Githubとの連携画面が出るので許可

ダッシュボードが表示されれば完了です!

2. GitHub Education との連携

次に、GitHub Education と NR を連携し、学生アカウントとして認証します。

① Github アカウントを GitHub Education で認証

まず、Github アカウントを Github Education で学生であることを証明し、GitHub Student Developer Pack の特典を利用できるようにします。

日本語の証明書を使った場合に必要な対応がコロコロ変わるため、完全に保証はできませんが、2024年8月に以下の記事の内容で認証が通りました。

▼ Github Education の申請方法

② New Relic アカウントへの特典追加

New Relic for Studentsもしくは
サイドバーのHelp > Resources > New Relic for Studentsを開きます

GitHub Educationを選択
※ DarkThemeだとGithubが闇堕ちして見づらかったのでここだけ、LightTheme

Studentを選択し、Authorize with GitHubをクリック

Githubとの連携画面が出るので許可

これで、学生アカウントとして認証が完了しました!

Go BE アプリへの New Relic の導入

一通り準備ができたので、以下の公式のDocsを参考に、Goのバックエンドアプリケーションに NR を導入してみます。

▼ [公式]Go アプリへの New Relic の導入

環境について

筆者の環境は以下の通りです。
使用しているOSや言語バージョンに沿った対応が必要です。

  • OS:MacOS Sequoia 15.1.1
  • Go:1.23.1

▼ 今回のデモプロジェクトのリポジトリ

1. ライセンスキーの発行

API KEYの管理画面でライセンスキーを発行します。

右上のCreate a Keyをクリック

それぞれ入力して Key を作成。
(今回はバックエンドアプリケーションのため、Key typeIngest - Licenseを選択)

▼ KEY Typeについてはこちら

2. 簡単なGoのプロジェクトの作成

① プロジェクトの作成

Goについての記載は本筋ではないため、Cloud Runのサンプルを利用します。

▼ クイックスタート: Cloud Run に Go サービスをデプロイする

テンプレート通りmain.goを作成

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	log.Print("starting server...")
	http.HandleFunc("/", handler)

	// Determine port for HTTP service.
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
		log.Printf("defaulting to port %s", port)
	}

	// Start HTTP server.
	log.Printf("listening on port %s", port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		log.Fatal(err)
	}
}

func handler(w http.ResponseWriter, r *http.Request) {
	name := os.Getenv("NAME")
	if name == "" {
		name = "World"
	}
	fmt.Fprintf(w, "Hello %s!\n", name)
}

② NRの導入

パッケージをインストール

go get github.com/newrelic/go-agent/v3/newrelic

インストールしたパッケージを import するために、main.goに以下を追記

import "github.com/newrelic/go-agent/v3/newrelic"

main関数に以下を追記し、NRを初期化

app, err := newrelic.NewApplication(
    newrelic.ConfigAppName("go-nr-test-app")
    newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY"))
	newrelic.ConfigDistributedTracerEnabled(true),
)
if err != nil {
	log.Fatal(err)
}

NRでラップするため、handler関数を以下のように変更

http.HandleFunc(newrelic.WrapHandleFunc(app, "/", handler))

最終的なmain.goは以下のようになります

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"

	"github.com/newrelic/go-agent/v3/newrelic"
)

func main() {
	log.Print("starting server...")
	app, err := newrelic.NewApplication(
		newrelic.ConfigAppName("go-nr-test-app"),
		newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
		newrelic.ConfigDistributedTracerEnabled(true),
	)
	if err != nil {
		log.Fatal(err)
	}

	http.HandleFunc(newrelic.WrapHandleFunc(app, "/", handler))

	// Determine port for HTTP service.
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
		log.Printf("defaulting to port %s", port)
	}

	// Start HTTP server.
	log.Printf("listening on port %s", port)
	if err := http.ListenAndServe(":"+port, nil); err != nil {
		log.Fatal(err)
	}
}

func handler(w http.ResponseWriter, r *http.Request) {
	name := os.Getenv("NAME")
	if name == "" {
		name = "World"
	}
	fmt.Fprintf(w, "Hello %s!\n", name)
}

cloud run にライセンスキーを環境変数として設定してデプロイ

gcloud run deploy --set-env-vars NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY

エンドポイントにアクセスして、Hello Worldが表示される事を確認

しばらくしてからNRにアクセスし、All Entitiesにアプリケーションが表示されていれば成功です!

APM & Servicesから、詳細を確認できます

3. ダッシュボードの確認

せっかく表示できたので、初期設定のSummaryに何が表示されているのかについてざっくり見ていきます

[レイテシー]:レスポンスに掛かっているレイテシーが確認できます。

[スループット]:リクエストの数が確認できます。

[エラー]:発生しているエラーの数が確認できます。

[トランザクション]:どのエンドポイントがどれだけ呼ばれているかが確認できます。

[Apdex Score]:ユーザーの満足度を示す指標です。(1に近いほど満足度が高い)

New Relic の学習コンテンツ

NR には、オブザーバビリティについて学ぶためのコンテンツや、実際のアプリケーションに導入する方法が多く用意されてます!

▼ 学生向けコンテンツ

基本

[オブザーバビリティとは?]
オブザーバビリティってなーに?

とっつきやすいもの

以下のコンテンツは私達が実際に使う際のユースケースに沿っていて、とっつきやすいです。

[Webサイトのパフォーマンスを向上する]
NRを使って、Webサイトのパフォーマンスを向上させる方法について、
導入→観測→改善の一連が載ってます

[Next.jsアプリケーションの監視]
Next.jsアプリケーションに NR を導入する方法についての記事です

番外編

NR の清水さんが過去に発表して下さった資料が、オブザーバビリティや、NRのコンセプトについて分かりやすかったので掲載。

New Relic User Group Nagoya について

私が NR に触れ始めたきっかけは、相方のむらさめと一緒に名古屋で New Relic User Group Nagoya(通称ヌルグ)を立ち上げたことです!!
それまでは、オブザーバビリティについて全く触れる機会がなかったのですが、たまたま相方に誘われて立ち上げに関わり、NRを触り始めました。

そんなNRUG Nagoyaですが、初回イベントを2024年10月に開催しました。
引き続き、イベントを開催していく予定ですので、興味がある方はぜひご参加ください!
(ぜひ社会人のユーザの方もご参加下さい)

▼ NRUG Connpass

最後に

私自身もまだ NR を使い始めたばかりで、巨大なプラットフォームである NR を使いきれている自信は全くありませんが、多くのエンジニアの方が NR を使って、オブザーバビリティやモニタリングを学んで下さればと思っております!

資料

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?