What is Go?
Go, colloquially known as Golang, is a versatile programming language that was pioneered at Google in 2007. Offering a powerful combination of static typing and high-level syntax, Go has positioned itself as a distinctive language in the world of programming. In many ways, Go's syntax bears a striking resemblance to C, making it familiar and accessible to those versed in the C language. However, Go extends beyond C's capabilities, introducing an array of robust features designed to streamline and enhance the programming process.
The Go language is renowned for its advanced memory safety mechanisms. This feature is critical in preventing programming errors that could lead to vulnerabilities or crashes, thus ensuring the robustness of the software developed with Go. Moreover, Go incorporates automatic garbage collection, an innovative feature that manages memory allocation, eliminating the need for manual memory management. This considerably simplifies programming, reducing potential errors and improving the efficiency of code development.
Moreover, Go is unique for its use of structural typing and Communicating Sequential Processes (CSP) style concurrency. Structural typing, also known as duck typing, allows more flexibility in defining and using types, promoting code reusability and adaptability. CSP-style concurrency, on the other hand, is one of Go's most touted features. It enables the development of concurrent programs, where multiple computations are executing during overlapping time periods. This results in highly efficient and effective programs, able to handle a high volume of tasks simultaneously. Overall, Go is a forward-thinking language, deftly balancing familiarity with innovation, and equipping programmers with the tools they need to create efficient, effective, and safe software.
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?
- Use your ServicePilot OnPremise installation or a SaaS account.
- Add a new appservice-go resource via the web interface (
/prmresources) or via API (
/prmpackagespage), the default ServicePilot agent or another agent will be provisioned automatically.
Details of the appservice-go package are located in the
/prmpackagespage 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.