mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-01-03 10:43:58 +02:00
Update NewRelic
This commit is contained in:
parent
1260d27b0b
commit
5c4860c609
2
go.mod
2
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
|
||||
|
4
go.sum
4
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=
|
||||
|
26
newrelic.go
26
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",
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user