• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

Go向けNew Relicのインストール

New Relic Goエージェントをインストールして、Goアプリケーションの詳細なパフォーマンスインサイトを取得します。このガイドでは、一般的なGoアプリケーションパターンの例を含む完全なインストレーションを説明します。

開始する前に

  • New Relicアカウントを作成する - まだアカウントをお持ちでない場合は、 New Relicアカウントを作成してください。永久に無料です。

  • 互換性を確認する - 次のことを確認してください:

  • ライセンスキーを入手する - インストール時にが必要になります。

インストレーション手順

Goエージェントのインストール

New Relic Goエージェントをプロジェクトに追加します。

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

ヒント

Goモジュールを使用していますか?エージェントはGoモジュールとシームレスに動作します。古いバージョンのGoを使用している場合は、エージェントをvendorフォルダーに追加する必要がある場合があります。

エージェントをインポートする

Goアプリケーションにインポートを追加します。

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

エージェントを初期化する

main関数でアプリケーションインスタンスを作成します。

func main() {
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("My Go Application"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
)
if err != nil {
log.Fatal("Failed to create New Relic application:", err)
}
// Wait for the application to connect
if err := app.WaitForCompletion(5 * time.Second); err != nil {
log.Println("Warning: New Relic application did not connect:", err)
}
// Your application code here
}

重要

セキュリティのベストプラクティス:ライセンスキーは、ソースコードにハードコーディングするのではなく、常に環境変数を使用してください。

ウェブハンドラーをインストゥルメントする

HTTPアプリケーションの場合、ハンドラーをウェブサイトを監視するようにラップします。

// Method 1: Wrap individual handlers
http.HandleFunc(newrelic.WrapHandleFunc(app, "/", indexHandler))
http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))
http.HandleFunc(newrelic.WrapHandleFunc(app, "/api/data", apiHandler))
// Method 2: Wrap your entire mux (recommended for many routes)
mux := http.NewServeMux()
mux.HandleFunc("/", indexHandler)
mux.HandleFunc("/users", usersHandler)
mux.HandleFunc("/api/data", apiHandler)
http.ListenAndServe(":8080", newrelic.WrapListen(app, mux))

基本的なエラー処理を追加する

ハンドラーでエラーをキャプチャします。

func usersHandler(w http.ResponseWriter, r *http.Request) {
// Get transaction from request context
txn := newrelic.FromContext(r.Context())
user, err := getUserFromDatabase(r.URL.Query().Get("id"))
if err != nil {
// Report error to New Relic
txn.NoticeError(err)
http.Error(w, "User not found", http.StatusNotFound)
return
}
// Add custom attributes
txn.AddAttribute("user.id", user.ID)
txn.AddAttribute("user.tier", user.Tier)
// Return user data
json.NewEncoder(w).Encode(user)
}

導入・検証する

  1. 環境変数を設定します

    bash
    $
    export NEW_RELIC_LICENSE_KEY="your-license-key-here"
  2. アプリケーションをコンパイルして実行します

    bash
    $
    go build -o myapp
    $
    ./myapp
  3. アプリケーションのURLにアクセスしてトラフィックを生成します

  4. one.newrelic.com で2~3分以内にNew Relicを確認してください。

インストレーション例

シンプルなHTTPサーバー

package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
"github.com/newrelic/go-agent/v3/newrelic"
)
func main() {
// Initialize New Relic
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Simple Go Server"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
)
if err != nil {
log.Fatal(err)
}
// Simple handler
http.HandleFunc(newrelic.WrapHandleFunc(app, "/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}))
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}

Ginフレームワークインテグレーション

package main
import (
"os"
"github.com/gin-gonic/gin"
"github.com/newrelic/go-agent/v3/integrations/nrgin"
"github.com/newrelic/go-agent/v3/newrelic"
)
func main() {
// Initialize New Relic
app, _ := newrelic.NewApplication(
newrelic.ConfigAppName("Gin Application"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
)
// Set up Gin with New Relic middleware
r := gin.Default()
r.Use(nrgin.Middleware(app))
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello, World!"})
})
r.Run(":8080")
}

バックグラウンドジョブの監視

func processBackgroundJob(app *newrelic.Application, jobData JobData) {
// Create a background transaction
txn := app.StartTransaction("background-job")
defer txn.End()
// Add job context
txn.AddAttribute("job.id", jobData.ID)
txn.AddAttribute("job.type", jobData.Type)
// Process job with error handling
if err := processJob(jobData); err != nil {
txn.NoticeError(err)
log.Printf("Job %s failed: %v", jobData.ID, err)
return
}
log.Printf("Job %s completed successfully", jobData.ID)
}

次の手順

基本的なインストールが完了すると、すぐに次の画面が表示されます。

  • HTTPエンドポイントのレスポンスタイム、スループット、エラー率を備えたAPMダッシュボード
  • 最も遅いウェブrequestsを示すトランザクショントレース
  • 報告されたエラーの基本的なエラー追跡 txn.NoticeError()

追加の監視機能のロックを解除するには、さらに計装を追加する必要があります。

トラブルシューティング

インストール後にデータが表示されない場合:

  1. アプリケーションログでNew Relic接続メッセージを確認してください
  2. ライセンスキーが正しく、期限切れでないことを確認してください
  3. New Relicへのネットワーク接続を確保する(ポート80/443)
  4. 詳細なヘルプについてはトラブルシューティングガイドを確認してください

ヒント

エージェントが何を実行しているかを確認するには、デバッグログを有効にします

config := newrelic.NewConfig("My App", os.Getenv("NEW_RELIC_LICENSE_KEY"))
config.Logger = newrelic.NewDebugLogger(os.Stdout)
app, _ := newrelic.NewApplication(config)

次のステップ

基本的な監視のセットアップが完了したので、設定計装を通じて監視の可能性を強化できます。

  • 設定はエージェントがアプリケーション全体にわたってグローバルにどのように動作するかを制御します
  • 計装は追跡したい特定の操作に監視コードを追加します

エージェントの設定

エージェント設定を使用してグローバルな動作を制御し、次のことを実現します。

計装を追加する

詳細な計装を使用して特定の操作を監視し、次のことを達成します。

高度な機能と監視

ヒント

エージェントを最新の状態に保つ:新しい機能、パフォーマンスの向上、セキュリティパッチを取得するには、定期的に最新バージョンに更新します

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.