monitoring/doc.go (1 lines of code) (raw):
// Package monitoring provides a monitoring endpoint and Continuous Profiling
// for Go service processes.
//
// - The monitoring endpoint will expose OpenMetrics at `/metrics`.
//
// - Pprof service endpoints at `/debug/pprof`. More information about the pprof endpoints is available at
// https://golang.org/pkg/net/http/pprof/
//
// - Support the gitlab_build_info metric for exposing application version information
//
// This package includes optional support for continuous profiling, which is responsible for
// heap and cpu profiling of the Go process. Currently, the only supported driver is Google
// Cloud Platform's Stackdriver Profiler (see https://cloud.google.com/profiler/).
//
// The profiler is initialized upon `monitoring.Start` call.
//
// *Compiling applications with Profiler support*
//
// For compiling binaries with Stackdriver Profiler support (including its dependencies),
// build your binary with the `continuous_profiler_stackdriver` compilation tag:
//
// * `go build -tags="continuous_profiler_stackdriver"“
//
// *Initializing the Profiler*
//
// Use the following pattern in the `GITLAB_CONTINUOUS_PROFILING` environment variable
// for getting it started:
//
// * `GITLAB_CONTINUOUS_PROFILING="stackdriver?service=gitaly&service_version=1.0.1&project_id=test-123"`
//
// For more information about each argument see https://godoc.org/cloud.google.com/go/profiler#Config.
// Most of these shouldn't be required in GCP environments, so a simpler version could be used:
//
// * `GITLAB_CONTINUOUS_PROFILING="stackdriver"`
//
// See https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application
// for authentication details.
//
// *Profiler overhead*
//
// Google Cloud claim Stackdriver Profiler adds a 5% performance overhead to
// processes when it is enabled. This cost is only incurred when the profiler is switched on (through
// the `GITLAB_CONTINUOUS_PROFILING`) environment variable. More details can be found at
// https://medium.com/google-cloud/continuous-profiling-of-go-programs-96d4416af77b.
//
// *How to make use of profiles*
//
// - https://youtu.be/MxGQ7WZ2N74 : A look at how one can use Go profiles in practice
package monitoring