Go
Mux

Mux Web Application

On this page, we help you install ShortLoop SDK in your Mux web application, so that it can automatically sample traffic.

Requirements

Go version - 1.17 or higher

Install

Install ShortLoop Go SDK.

$ go get github.com/short-loop/shortloop-go@v0.0.7
⚠️

ShortLoop SDK has following external dependency:

Configure

To configure the SDK, you need to add it as a middleware in your application.

Import the SDK from installed package on top of you root level main.go file where you initialize your router.

import "github.com/short-loop/shortloop-go/shortloopmux"

Initialize SDK with options - ShortloopEndpoint and ApplicationName as shown in below example and register the middleware.

router := mux.NewRouter()
 
shortloopSdk, err := shortloopmux.Init(shortloopmux.Options{
    ShortloopEndpoint: "https://shortloop.company-name.com",   // the shortloop url for your org. (Provided by ShortLoop team.)
    ApplicationName:   "service-name",                         // your application name here.
    AuthKey:           "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // ShortLoop Auth Key. (Provided by ShortLoop team.)
    Environment:       "your-environment",                     // for e.g stage or prod
})
 
if err != nil {
    fmt.Println("Error initializing shortloopmux: ", err)
} else {
    router.Use(shortloopSdk.Filter)
}

Configure : Masking sensitive headers.

To mask sensitive headers, provide an array as MaskHeaders field as shown in below example.

Note that MaskHeaders field is optional and headers are case insensitive.

router := mux.NewRouter()
 
shortloopSdk, err := shortloopmux.Init(shortloopmux.Options{
  ...
  ...
  Environment:       "your-environment",                     // for e.g stage or prod
  MaskHeaders:       []string{"cookie", "x-auth"},           // [Optional]. The following headers values will be masked at the SDK level itself. (Will not be sent to the server)
})
  ...
  ...
 

Configure : Samples capturing frequency

By default; ShortLoop SDK will capture a small percentage of traffic; so that the performance impact is almost nil. But for certain use-cases; or non production environments; traffic capturing can be configured to 'always'; in which case SDK will try to capture 100% of the Traffic.

router := mux.NewRouter()
 
shortloopSdk, err := shortloopmux.Init(shortloopmux.Options{
  ...
  ...
  Environment:       "your-environment",                     // for e.g stage or prod
  MaskHeaders:       []string{"cookie", "x-auth"},           // [Optional]. The following headers values will be masked at the SDK level itself. (Will not be sent to the server)
  Capture:           "always"                                // Requesting SDK to try to capture all the API calls. 
})
  ...
  ...
 

Setting the above property; doesn't guarantees that all the API calls will be captures. SDK will try to capture most of the Traffic; but if the traffic increases; the Samples will be dropped.

⚠️

It is not recommended to set the above property in high traffic production environments which are performance and latency sensitive.

Verify

Quickly test if project is building after configuring SDK.

⚠️

Build command maybe custom to your project.

go build main.go

After the changes, redeploy your Mux Application.

Feel free to email for a quick support, reporting bug or improvements suggestions. Sumit B Mulchandani (sumit@shortloop.dev)

Copyright © 2023 ShortLoop, Inc. All rights reserved.