How to analyze GO APM application performance

What is Go?

Go is a statically typed, compiled high-level programming language designed at Google in 2007. It is syntactically similar to C, but with memory safety, garbage collection, structural typing and CSP-style concurrency.

Go application instrumentation

The appservice-go package along with a Go instrumentation library collects performance metrics and errors from the application server.

Go does not support truly automatic instrumentation like other languages today. Instead, you’ll need to depend on instrumentation libraries that generate telemetry data for a particular instrumented library. For example, the instrumentation library for net/http will automatically create spans that track inbound and outbound requests once you configure it in your code. It has built-in support for popular librarys as well as support for instrumenting Go’s built-in net/http, database/sql drivers.

In order to connect transactions with related spans and errors, and propagate traces between services (distributed tracing), the library relies on Go’s built-in context package: transactions and spans are stored in context objects. For example, for incoming HTTP requests, in-flight trace data will be recorded in the context object accessible through net/http.Context.

Go application traces monitoring

Resources are automatically created from this package after having deployed the ServicePilot Agent along with the proper Go APM library configuration. ServicePilot monitors HTTP(S) web requests from Go processes.

This gathers summarized statistics (min,max,avg...) per Go application such as:

  • Requests per minute
  • Sum of requests by HTTP return codes and methods
  • Number of requests in each response time range
  • Established vs. Timed-out requests

In order to provide deep Go application insights, details collected per request include:

  • Host and web page path
  • Server and client IP
  • Real User Response time
  • HTTP Return code and method
  • Client country and geolocation for public IPs

How to install a appservice-go resource?

  1. Use your ServicePilot OnPremise installation or a SaaS account.
  2. Add a new appservice-go resource via the web interface (/prmviews or /prmresources) or via API (/prmpackages page), the default ServicePilot agent or another agent will be provisioned automatically.

Details of the appservice-go package are located in the /prmpackages page of the software.


ServicePilot enables you to deliver IT services faster and more securely with automated discovery and advanced monitoring features.

By correlating the technology GO APM with APM and infrastructure monitoring, ServicePilot is able to provide a more comprehensive view of an organization's IT environment.

This allows IT teams to quickly identify and diagnose issues that may be impacting application performance, and take corrective action before end-users are affected.

Start with a free trial of our SaaS solution. Explore ourplans or contact us to find what works best for you.

Free installation in a few clicks