Browse Source

Update NewRelic

DarthSim 4 years ago
parent
commit
5c4860c609
4 changed files with 19 additions and 15 deletions
  1. 1 1
      go.mod
  2. 2 2
      go.sum
  3. 15 11
      newrelic.go
  4. 1 1
      processing_handler.go

+ 1 - 1
go.mod

@@ -19,7 +19,7 @@ require (
 	github.com/ianlancetaylor/cgosymbolizer v0.0.0-20200424224625-be1b05b0b279 // indirect
 	github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
 	github.com/matoous/go-nanoid v1.4.1
-	github.com/newrelic/go-agent v3.8.1+incompatible
+	github.com/newrelic/go-agent/v3 v3.9.0
 	github.com/prometheus/client_golang v1.7.1
 	github.com/sirupsen/logrus v1.6.0
 	github.com/stretchr/testify v1.6.1

+ 2 - 2
go.sum

@@ -287,8 +287,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW
 github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM=
 github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4=
 github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/newrelic/go-agent v3.8.1+incompatible h1:8TAEekJseggmwfn79CjoV308PyNlzDVExkUwFeDBUxk=
-github.com/newrelic/go-agent v3.8.1+incompatible/go.mod h1:a8Fv1b/fYhFSReoTU6HDkTYIMZeSVNffmoS726Y0LzQ=
+github.com/newrelic/go-agent/v3 v3.9.0 h1:5bcTbdk/Up5cIYIkQjCG92Y+uNoett9wmhuz4kPiFlM=
+github.com/newrelic/go-agent/v3 v3.9.0/go.mod h1:1A1dssWBwzB7UemzRU6ZVaGDsI+cEn5/bNxI0wiYlIc=
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=

+ 15 - 11
newrelic.go

@@ -6,13 +6,13 @@ import (
 	"net/http"
 	"time"
 
-	newrelic "github.com/newrelic/go-agent"
+	"github.com/newrelic/go-agent/v3/newrelic"
 )
 
 var (
 	newRelicEnabled = false
 
-	newRelicApp newrelic.Application
+	newRelicApp *newrelic.Application
 
 	newRelicTransactionCtxKey = ctxKey("newRelicTransaction")
 )
@@ -29,8 +29,10 @@ func initNewrelic() error {
 
 	var err error
 
-	config := newrelic.NewConfig(name, conf.NewRelicKey)
-	newRelicApp, err = newrelic.NewApplication(config)
+	newRelicApp, err = newrelic.NewApplication(
+		newrelic.ConfigAppName(name),
+		newrelic.ConfigLicense(conf.NewRelicKey),
+	)
 
 	if err != nil {
 		return fmt.Errorf("Can't init New Relic agent: %s", err)
@@ -41,25 +43,27 @@ func initNewrelic() error {
 	return nil
 }
 
-func startNewRelicTransaction(ctx context.Context, rw http.ResponseWriter, r *http.Request) (context.Context, context.CancelFunc) {
-	txn := newRelicApp.StartTransaction("request", rw, r)
+func startNewRelicTransaction(ctx context.Context, rw http.ResponseWriter, r *http.Request) (context.Context, context.CancelFunc, http.ResponseWriter) {
+	txn := newRelicApp.StartTransaction("request")
+	txn.SetWebRequestHTTP(r)
+	newRw := txn.SetWebResponse(rw)
 	cancel := func() { txn.End() }
-	return context.WithValue(ctx, newRelicTransactionCtxKey, txn), cancel
+	return context.WithValue(ctx, newRelicTransactionCtxKey, txn), cancel, newRw
 }
 
 func startNewRelicSegment(ctx context.Context, name string) context.CancelFunc {
-	txn := ctx.Value(newRelicTransactionCtxKey).(newrelic.Transaction)
-	segment := newrelic.StartSegment(txn, name)
+	txn := ctx.Value(newRelicTransactionCtxKey).(*newrelic.Transaction)
+	segment := txn.StartSegment(name)
 	return func() { segment.End() }
 }
 
 func sendErrorToNewRelic(ctx context.Context, err error) {
-	txn := ctx.Value(newRelicTransactionCtxKey).(newrelic.Transaction)
+	txn := ctx.Value(newRelicTransactionCtxKey).(*newrelic.Transaction)
 	txn.NoticeError(err)
 }
 
 func sendTimeoutToNewRelic(ctx context.Context, d time.Duration) {
-	txn := ctx.Value(newRelicTransactionCtxKey).(newrelic.Transaction)
+	txn := ctx.Value(newRelicTransactionCtxKey).(*newrelic.Transaction)
 	txn.NoticeError(newrelic.Error{
 		Message: "Timeout",
 		Class:   "Timeout",

+ 1 - 1
processing_handler.go

@@ -130,7 +130,7 @@ func handleProcessing(reqID string, rw http.ResponseWriter, r *http.Request) {
 
 	if newRelicEnabled {
 		var newRelicCancel context.CancelFunc
-		ctx, newRelicCancel = startNewRelicTransaction(ctx, rw, r)
+		ctx, newRelicCancel, rw = startNewRelicTransaction(ctx, rw, r)
 		defer newRelicCancel()
 	}