github.com/mweagle/Sparta@v1.15.0/profile.go (about) 1 package sparta 2 3 import ( 4 "fmt" 5 "path" 6 "path/filepath" 7 8 "github.com/sirupsen/logrus" 9 ) 10 11 type profileLambdaDecorator func(stackName string, info *LambdaAWSInfo, S3Bucket string, logger *logrus.Logger) error 12 13 var profileDecorator profileLambdaDecorator 14 15 const ( 16 cpuProfileName = "cpu" 17 18 // Name of the stack, published as env var 19 envVarStackName = "SPARTA_STACK_NAME" 20 // Stack instance id, published as env var 21 envVarStackInstanceID = "SPARTA_STACK_INSTANCE_ID" 22 // Bucket to use to store profile snapshots, published as env var 23 envVarProfileBucketName = "SPARTA_PROFILE_BUCKET_NAME" 24 ) 25 26 var profileTypes = []string{ 27 cpuProfileName, 28 "goroutine", 29 "threadcreate", 30 "heap", 31 "block", 32 "mutex", 33 } 34 35 func profileSnapshotRootKeypath(stackName string) string { 36 return path.Join("sparta", "pprof", stackName, "profiles") 37 } 38 39 func profileSnapshotRootKeypathForType(profileType string, stackName string) string { 40 return path.Join(profileSnapshotRootKeypath(stackName), profileType) 41 } 42 43 func cacheDirectoryForProfileType(profileType string, stackName string) string { 44 return filepath.Join(ScratchDirectory, "profiles", stackName, profileType) 45 } 46 47 func cachedAggregatedProfilePath(profileType string) string { 48 return filepath.Join(ScratchDirectory, fmt.Sprintf("%s.consolidated.profile", profileType)) 49 }