Skip to content

hasyimibhar/go-agent

 
 

Repository files navigation

New Relic Go Agent

Beta

This is beta software. The Go Agent requires a beta token. Getting a token is easy!

  1. Agree to the click-through Beta Agreement
  2. Once your account is approved, we will email you a beta token, usually within the same business day.
  3. Add the beta token to your config (see below for details).

Please join our Go Agent Beta Forum to tell us how the Go Agent works for you, what you'd like to see and how we can improve it. We're eager to hear your feedback!

Breaking changes may be made before release 1.0.

Description

The New Relic Go Agent allows you to monitor your Go applications with New Relic. It helps you track transactions, outbound requests, database calls, and other parts of your Go application's behavior and provides a running overview of garbage collection, goroutine activity, and memory use.

Requirements

Go 1.3+ is required, due to the use of http.Client's Timeout field.

Linux and OS X are supported.

Getting Started

Here are the basic steps to instrumenting your application. For more information, see GUIDE.md.

Step 0: Installation

Installing the Go Agent is the same as installing any other Go library. The simplest way is to run:

go get github.com/newrelic/go-agent

Then import the github.com/newrelic/go-agent package in your application.

Step 1: Create a Config and an Application

In your main function or an init block:

config := newrelic.NewConfig("Your Application Name", "__YOUR_NEW_RELIC_LICENSE_KEY__")
config.BetaToken = "__YOUR_NEW_RELIC_BETA_TOKEN__"
app, err := newrelic.NewApplication(config)

more info, application.go, config.go

Step 2: Add Transactions

Transactions time requests and background tasks. Use WrapHandle and WrapHandleFunc to create transactions for requests handled by the http standard library package.

http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))

Alternatively, create transactions directly using the application's StartTransaction method:

txn := app.StartTransaction("myTxn", optionalResponseWriter, optionalRequest)
defer txn.End()

more info, transaction.go

Step 3: Instrument Segments

Segments show you where time in your transactions is being spent. At the beginning of important functions, add:

defer txn.EndSegment(txn.StartSegment(), "mySegmentName")

more info, segments.go

Runnable Example

example/main.go is an example that will appear as "My Go Application" in your New Relic applications list. To run it:

env NEW_RELIC_LICENSE_KEY=__YOUR_NEW_RELIC_LICENSE_KEY__LICENSE__ \
    NEW_RELIC_BETA_TOKEN=__YOUR_NEW_RELIC_BETA_TOKEN__ \
    go run example/main.go

Some endpoints exposed are https://localhost:8000/ and https://localhost:8000/notice_error

Basic Example

Before Instrumentation

package main

import (
	"io"
	"net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "hello, world")
}

func main() {
	http.HandleFunc("/", helloHandler)
	http.ListenAndServe(":8000", nil)
}

After Instrumentation

package main

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

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

func helloHandler(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "hello, world")
}

func main() {
	// Create a config.  You need to provide the desired application name
	// and your New Relic license key.
	cfg := newrelic.NewConfig("My Go Application", "__YOUR_NEW_RELIC_LICENSE_KEY__")

	// Add the beta token emailed to you after signing:
	//   https://goo.gl/forms/Rcv1b10Qvt1ENLlr1
	cfg.BetaToken = "__YOUR_NEW_RELIC_BETA_TOKEN__"

	// Create an application.  This represents an application in the New
	// Relic UI.
	app, err := newrelic.NewApplication(cfg)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	// Wrap helloHandler.  The performance of this handler will be recorded.
	http.HandleFunc(newrelic.WrapHandleFunc(app, "/", helloHandler))
	http.ListenAndServe(":8000", nil)
}

Support

You can find more detailed documentation in the guide.

If you can't find what you're looking for there, reach out to us on our support site or our community forum and we'll be happy to help you.

Find a bug? Contact us via support.newrelic.com, or email [email protected].

About

New Relic Go Agent

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.4%
  • HTML 3.6%