| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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
- }
|