|
- package common
-
- import (
- "runtime"
-
- "github.com/grafana/pyroscope-go"
- )
-
- func StartPyroScope() error {
-
- pyroscopeUrl := GetEnvOrDefaultString("PYROSCOPE_URL", "")
- if pyroscopeUrl == "" {
- return nil
- }
-
- pyroscopeAppName := GetEnvOrDefaultString("PYROSCOPE_APP_NAME", "new-api")
- pyroscopeBasicAuthUser := GetEnvOrDefaultString("PYROSCOPE_BASIC_AUTH_USER", "")
- pyroscopeBasicAuthPassword := GetEnvOrDefaultString("PYROSCOPE_BASIC_AUTH_PASSWORD", "")
- pyroscopeHostname := GetEnvOrDefaultString("HOSTNAME", "new-api")
-
- mutexRate := GetEnvOrDefault("PYROSCOPE_MUTEX_RATE", 5)
- blockRate := GetEnvOrDefault("PYROSCOPE_BLOCK_RATE", 5)
-
- runtime.SetMutexProfileFraction(mutexRate)
- runtime.SetBlockProfileRate(blockRate)
-
- _, err := pyroscope.Start(pyroscope.Config{
- ApplicationName: pyroscopeAppName,
-
- ServerAddress: pyroscopeUrl,
- BasicAuthUser: pyroscopeBasicAuthUser,
- BasicAuthPassword: pyroscopeBasicAuthPassword,
-
- Logger: nil,
-
- Tags: map[string]string{"hostname": pyroscopeHostname},
-
- ProfileTypes: []pyroscope.ProfileType{
- pyroscope.ProfileCPU,
- pyroscope.ProfileAllocObjects,
- pyroscope.ProfileAllocSpace,
- pyroscope.ProfileInuseObjects,
- pyroscope.ProfileInuseSpace,
-
- pyroscope.ProfileGoroutines,
- pyroscope.ProfileMutexCount,
- pyroscope.ProfileMutexDuration,
- pyroscope.ProfileBlockCount,
- pyroscope.ProfileBlockDuration,
- },
- })
- if err != nil {
- return err
- }
- return nil
- }
|