File: example_test.go

package info (click to toggle)
golang-github-newrelic-go-agent 3.15.2-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 8,356 kB
  • sloc: sh: 65; makefile: 6
file content (72 lines) | stat: -rw-r--r-- 2,074 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright 2020 New Relic Corporation. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package nrb3

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

	newrelic "github.com/newrelic/go-agent"
	"github.com/openzipkin/zipkin-go"
	reporterhttp "github.com/openzipkin/zipkin-go/reporter/http"
)

func currentTxn() newrelic.Transaction {
	return nil
}

func ExampleNewRoundTripper() {
	// When defining the client, set the Transport to the NewRoundTripper. This
	// will create ExternalSegments and add B3 headers for each request.
	client := &http.Client{
		Transport: NewRoundTripper(nil),
	}

	// Distributed Tracing must be enabled for this application.
	txn := currentTxn()

	req, err := http.NewRequest("GET", "http://example.com", nil)
	if nil != err {
		log.Fatalln(err)
	}

	// Be sure to add the transaction to the request context.  This step is
	// required.
	req = newrelic.RequestWithTransactionContext(req, txn)
	resp, err := client.Do(req)
	if nil != err {
		log.Fatalln(err)
	}

	defer resp.Body.Close()
	fmt.Println(resp.StatusCode)
}

// This example demonstrates how to create a Zipkin reporter using the standard
// Zipkin http reporter
// (https://godoc.org/github.com/openzipkin/zipkin-go/reporter/http) to send
// Span data to New Relic.  Follow this example when your application uses
// Zipkin for tracing (instead of the New Relic Go Agent) and you wish to send
// span data to the New Relic backend.  The example assumes you have the
// environment variable NEW_RELIC_API_KEY set to your New Relic Insights Insert
// Key.
func Example_zipkinReporter() {
	// import (
	//    reporterhttp "github.com/openzipkin/zipkin-go/reporter/http"
	// )
	reporter := reporterhttp.NewReporter(
		"https://trace-api.newrelic.com/trace/v1",
		reporterhttp.RequestCallback(func(req *http.Request) {
			req.Header.Add("X-Insert-Key", os.Getenv("NEW_RELIC_API_KEY"))
			req.Header.Add("Data-Format", "zipkin")
			req.Header.Add("Data-Format-Version", "2")
		}),
	)
	defer reporter.Close()

	// use the reporter to create a new tracer
	zipkin.NewTracer(reporter)
}