nrfasthttp

package module
v0.0.0-...-8888ba2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2017 License: Apache-2.0 Imports: 6 Imported by: 0

README

nr-fasthttp

NewRelic instrumentation helpers for valyala/fasthttp.

Usage

Instrumenting external segments:
txn := newrelicApp.StartTransaction("test", nil, nil)
defer txn.End()

req := fasthttp.AcquireRequest()
defer fasthttp.ReleaseRequest(req)

resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseResponse(resp)

proxyClient := &fasthttp.HostClient{
  Addr: "localhost:8080",
}

nrfasthttp.Do(proxyClient, txn, req, res)
Instrumenting web transactions

With buaazp/fasthttprouter:

router.Handle("GET", "/me", nrfasthttp.WrapHandler(newrelicApp, "/me", yourHandler)

router.NotFound = nrfasthttp.WrapHandler(newrelicApp, "404", yourHandler)

Using fastthttp only:

fasthttp.Serve(listener, nrfasthttp.WrapHandler(newrelicApp, "Request", yourHandler))

Getting newrelic.Transaction:

func handler (ctx *fasthttp.RequestCtx) {
    txn := ntfasthttp.GetTransaction(ctx)
}

For complete documentation, check here. The API is based on newrelic/go-agent API so usage is very similiar.

License

See here.

Documentation

Index

Constants

View Source
const NewRelicTransaction = "__newrelic_transaction__"

UserValue name used to store newrelic.Transaction on fasthttp.RequestCtx

Variables

This section is empty.

Functions

func Do

func Do(client Client, txn newrelic.Transaction, req *fasthttp.Request, res *fasthttp.Response) error

func DoDeadline

func DoDeadline(client Client, txn newrelic.Transaction, req *fasthttp.Request, res *fasthttp.Response, deadline time.Time) error

func DoTimeout

func DoTimeout(client Client, txn newrelic.Transaction, req *fasthttp.Request, res *fasthttp.Response, timeout time.Duration) error

func GetTransaction

func GetTransaction(ctx *fasthttp.RequestCtx) newrelic.Transaction

func StartExternalSegment

func StartExternalSegment(txn newrelic.Transaction, req *fasthttp.Request) newrelic.ExternalSegment

func StartTransaction

func StartTransaction(app newrelic.Application, name string, ctx *fasthttp.RequestCtx) newrelic.Transaction

func WrapHandler

func WrapHandler(app newrelic.Application, name string, handler fasthttp.RequestHandler) fasthttp.RequestHandler

Types

type Client

type Client interface {
	Do(req *fasthttp.Request, res *fasthttp.Response) error
	DoTimeout(req *fasthttp.Request, res *fasthttp.Response, timeout time.Duration) error
	DoDeadline(req *fasthttp.Request, res *fasthttp.Response, deadline time.Time) error
}

type Request

type Request struct {
	*fasthttp.Request
}

func (Request) Header

func (r Request) Header() http.Header

func (Request) Method

func (r Request) Method() string

func (Request) URL

func (r Request) URL() *url.URL

type RequestHeader

type RequestHeader struct {
	*fasthttp.RequestHeader
}

func (RequestHeader) Get

func (r RequestHeader) Get(name string) string

type Response

type Response struct {
	// contains filtered or unexported fields
}

func NewResponse

func NewResponse(res *fasthttp.Response, req *fasthttp.Request) Response

func (Response) Code

func (r Response) Code() int

func (Response) Header

func (r Response) Header() http.Header

func (Response) Request

func (r Response) Request() http.Request

type ResponseHeader

type ResponseHeader struct {
	*fasthttp.ResponseHeader
}

func (ResponseHeader) Add

func (r ResponseHeader) Add(name, value string)

func (ResponseHeader) Get

func (r ResponseHeader) Get(name string) string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL