Monitoring Go
TABLE OF CONTENTS
Supported versions
Go version 1.9 or greater.
Sensor (Data Collection)
Tracked Configuration
- Root directory
- Compiler
- Max procs
- Visible CPUs
- PID
Metrics
- Memory usage
- Heap usage
- GC activity
- Goroutines
Health Signatures
- Calls
- Response time
- Scaling
Installation
The usage of the Go sensor requires a minimal amount of coding in your Go application. Please refer to github.com/instana/go-sensor for detailed instructions on how to activate the Go sensor.
Configuration
There are two ways to configure the Go sensor:
- Inside your app code by providing
instana.Options
to theinstana.InitSensor()
call. - Using environment variables (see the General Reference: Environment Variables for Language Sensors).
The in-app configuration takes precedence over environment variables except for following settings:
INSTANA_SERVICE_NAME
allows to override the service name set in the codeINSTANA_DEBUG
enables debug logs even if the app code configuration defines a higher logging levelINSTANA_AUTO_PROFILE
enables continuous profiling with AutoProfile™
AWS Fargate
Instana Go sensor automatically detects if a service is running on AWS Fargate and switches into serverless mode. Instead of the host agent, the Go sensor will send metrics and traces to the serverless acceptor endpoint provided in INSTANA_ENDPOINT_URL
and using the agent key set by the INSTANA_AGENT_KEY
environment variables. Please refer to the Serverless Monitoring section to learn about other configuration options available in serverless mode.
AWS Lambda
Instana Go sensor supports tracing AWS Lambda function written in Go starting from v1.23.0
. Handlers need to be instrumented using the github.com/instana/go-sensor/instrumentation/instalambda
package in order to collect and send trace data. Please refer to AWS Lambda Go documentation for details.
Kubernetes & OpenShift
Refer to the Configure Network Access For Monitored Applications documentation to ensure that your instrumented applications can contact the Instana Host Agent.
Tracing
Wrappers
To make code instrumentation easy and error-prone, Instana provides native wrappers for most commonly used Go packages.
Standard library
Instrumentation wrappers for Go standard library packages are shipped with the main Go sensor module github.com/instana/go-sensor
.
Package | Go sensor version |
---|---|
net/http |
>= v1.8.0 |
database/sql |
>= v1.15.0 |
3rd-party libraries
Instrumentation wrappers for 3rd-party libraries are shipped as separate packages to avoid bringing unnecessary depencencies. They are complimentary to the main Go sensor module github.com/instana/go-sensor
. Most dependency managers, such as go mod
, will add the corresponding main module version as a transitive dependency automatically. The minimal supported Go version for the instrumentation package is the same as for 3rd-party package it instruments and may differ from the one supported by the Go sensor.
Package | Supported package version | Instrumentation package | Required Go version |
---|---|---|---|
cloud.google.com/go/storage |
>= v1.7.0 | github.com/instana/go-sensor/instrumentation/cloud.google.com/go/storage |
go1.11+ |
cloud.google.com/go/pubsub |
>= v1.3.1 | github.com/instana/go-sensor/instrumentation/cloud.google.com/go/pubsub |
go1.11+ |
github.com/Shopify/sarama |
>= v1.19.0 | github.com/instana/go-sensor/instrumentation/instasarama |
go1.9+ |
google.golang.org/grpc |
>= v1.15.0 | github.com/instana/go-sensor/instrumentation/instagrpc |
go1.9+ |
OpenTracing
Manual tracing in Go works based on the OpenTracing API, and the data those produce get "translated" into Instana through a tracer and sent to the Instana backend. Refer to the Instana Go sensor OpenTracing documentation for details.
End User Monitoring (EUM)
Instana provides deep end user monitoring that links server side traces with browser events to give you a complete view from server to browser.
See the Website Monitoring page for more details.
AutoProfile™
AutoProfile™ generates and reports process profiles to Instana automatically and continuously. Learn more about profiles in Analyze Profiles section.
To enable AutoProfile™ add EnableAutoProfile: true
option in instana.InitSensor(opt)
. For detailed instructions, see github.com/instana/go-sensor.
If you need to enable profiling for an app instrumented with Instana without changing the instana.InitSensor()
config, set INSTANA_AUTO_PROFILE=true
env variable. Note that this value takes precedence and overrides any attempt to disable profiling from inside the application code.
Mode
- Cross host and cross language tracing