Datadog Go Orchestrion

Middleware supports the Orchestrion Datadog feature to ensure seamless tracing integration.

Install Orchestrion

To install and set up Orchestrion:

1 Install Orchestrion:

1go install github.com/DataDog/orchestrion@latest

Note: Ensure that $(go env GOBIN) or $(go env GOPATH)/bin is in your $PATH.

2 Register Orchestrion in your project’s go.mod :

1orchestrion pin

Refer to the output of orchestrion pin -help for more information about available customization options.

3 Commit changes to your version control system (unless you are integrating orchestrion directly in your CI/CD pipeline):

1git add go.mod go.sum orchestrion.tool.go
2git commit -m "chore: enable orchestrion"

Now you can manage your dependency on orchestrion like any other dependency using the go.mod file.

Ship to Middleware

Add the following code to your main.go file. This will send your traces directly to the middleware, enabling seamless monitoring and trace management:

1// customTransport adds custom headers to the HTTP requests
2type customTransport struct {
3   transport http.RoundTripper
4   headers   map[string]string
5}
6
7func (c *customTransport) RoundTrip(req *http.Request) (*http.Response, error) {
8   // Add custom headers
9   for key, value := range c.headers {
10       req.Header.Set(key, value)
11   }
12   return c.transport.RoundTrip(req)
13}
14
15func main() {
16   //dd:ignore
17   headers := map[string]string{
18       "user-agent":  "Datadog Trace Agent",
19       "dd-api-key":  "YOUR_MIDDLEWARE_API_KEY",
20   }
21   // Create a custom HTTP client with the custom transport
22   defaultTransport := http.DefaultTransport.(*http.Transport).Clone()
23   customClient := &http.Client{
24       Transport: &customTransport{
25           transport: defaultTransport, 
26           headers:   headers,
27       },
28       Timeout: 10 * time.Second,
29   }
30
31   // Initialize the tracer with the custom HTTP client
32   tracer.Start(
33       tracer.WithHTTPClient(customClient),
34   )
35}

Replace "YOUR_MIDDLEWARE_API_KEY" with your actual API key in the dd-api-key header.

Usage

To enable Orchestrion during the build, run, or test processes, prepend Orchestrion to your usual Go commands:

1orchestrion go build .
2DD_TRACE_AGENT_URL=https://<MW_UID>.middleware.io:443  orchestrion go run .
3orchestrion go test ./...

Verifying Tracing

After completing the integration, you can verify that traces are being sent to the middleware by checking Middleware APM system.