Documentation
¶
Index ¶
- Constants
- func PromSingleValueResponse(val string) *f.PrometheusQueryResponse
- func WithCPUQuery(q string) func(*CLNodesLeakDetector)
- func WithMemoryQuery(q string) func(*CLNodesLeakDetector)
- func WithProfileCLIPath(path string) func(*ProfileDumper)
- func WithPrometheusBaseURL(url string) func(*ResourceLeakChecker)
- func WithQueryClient(c PromQuerier) func(*ResourceLeakChecker)
- type CLNodesCheck
- type CLNodesLeakDetector
- type CheckConfig
- type FakeQueryClient
- type ProfileDumper
- type ProfileDumperConfig
- type PromQuerier
- type ResourceLeakChecker
- type ResourceLeakCheckerConfig
Constants ¶
const ( DefaultPyroscopeBinaryVersion = "1.18.0" DefaultOutputPath = "alloc.pprof" DefaultProfileType = "memory:alloc_space:bytes:space:bytes" DefaultFrom = "now-12h" DefaultTo = "now" )
Variables ¶
This section is empty.
Functions ¶
func PromSingleValueResponse ¶
func PromSingleValueResponse(val string) *f.PrometheusQueryResponse
func WithCPUQuery ¶
func WithCPUQuery(q string) func(*CLNodesLeakDetector)
WithCPUQuery allows to override CPU leak query (Prometheus)
func WithMemoryQuery ¶
func WithMemoryQuery(q string) func(*CLNodesLeakDetector)
WithCPUQuery allows to override Memory leak query (Prometheus)
func WithProfileCLIPath ¶ added in v0.13.4
func WithProfileCLIPath(path string) func(*ProfileDumper)
WithProfileCLIPath sets a custom path to profilecli binary
func WithPrometheusBaseURL ¶
func WithPrometheusBaseURL(url string) func(*ResourceLeakChecker)
WithPrometheusBaseURL sets Prometheus base URL, example http://localhost:9099
func WithQueryClient ¶
func WithQueryClient(c PromQuerier) func(*ResourceLeakChecker)
WithQueryClient sets Prometheus query client
Types ¶
type CLNodesCheck ¶
type CLNodesCheck struct {
NumNodes int
Start time.Time
End time.Time
WarmUpDuration time.Duration
CPUThreshold float64
MemoryThreshold float64
}
ClNodesCheck contains thresholds which can be verified for each Chainlink node it is recommended to set some WarmUpDuration, 20% of overall test time to have more stable results
type CLNodesLeakDetector ¶
type CLNodesLeakDetector struct {
Mode string
CPUQuery, MemoryQuery, ContainerAliveQuery string
// contains filtered or unexported fields
}
CLNodesLeakDetector is Chainlink node specific resource leak detector can be used with both local and remote Chainlink node sets (DONs)
func NewCLNodesLeakDetector ¶
func NewCLNodesLeakDetector(c *ResourceLeakChecker, opts ...func(*CLNodesLeakDetector)) (*CLNodesLeakDetector, error)
NewCLNodesLeakDetector create new Chainlink node specific resource leak detector with Prometheus client
func (*CLNodesLeakDetector) Check ¶
func (cd *CLNodesLeakDetector) Check(t *CLNodesCheck) error
Check runs all resource leak checks and returns errors if threshold reached for any of them
type CheckConfig ¶
CheckConfig describes leak check configuration
type FakeQueryClient ¶
type FakeQueryClient struct {
// contains filtered or unexported fields
}
func NewFakeQueryClient ¶
func NewFakeQueryClient() *FakeQueryClient
func (*FakeQueryClient) Query ¶
func (qc *FakeQueryClient) Query(query string, timestamp time.Time) (*f.PrometheusQueryResponse, error)
func (*FakeQueryClient) SetResponses ¶
func (qc *FakeQueryClient) SetResponses(sr *f.PrometheusQueryResponse, er *f.PrometheusQueryResponse)
type ProfileDumper ¶ added in v0.13.4
type ProfileDumper struct {
// contains filtered or unexported fields
}
ProfileDumper is responsible for downloading profiles from Pyroscope
func NewProfileDumper ¶ added in v0.13.4
func NewProfileDumper(pyroscopeURL string, opts ...func(*ProfileDumper)) *ProfileDumper
NewProfileDumper creates a new profile dumper instance
func (*ProfileDumper) DownloadProfile ¶ added in v0.13.4
func (d *ProfileDumper) DownloadProfile(config *ProfileDumperConfig) (string, error)
DownloadProfile runs profilecli to download a profile
func (*ProfileDumper) InstallProfileCLI ¶ added in v0.13.4
func (d *ProfileDumper) InstallProfileCLI() (string, error)
InstallProfileCLI downloads and installs profilecli if not already available
func (*ProfileDumper) MemoryProfile ¶ added in v0.13.4
func (d *ProfileDumper) MemoryProfile(config *ProfileDumperConfig) (string, error)
MemoryProfile downloads memory profile and saves it
type ProfileDumperConfig ¶ added in v0.13.4
type ProfileDumperConfig struct {
PyroscopeURL string
ServiceName string
ProfileType string
From string // Relative time like "now-30m" or unix timestamp (seconds)
To string // Relative time like "now" or unix timestamp (seconds)
OutputPath string // Output file path
}
ProfileDumperConfig describes profile dump configuration
type PromQuerier ¶
type PromQuerier interface {
Query(query string, timestamp time.Time) (*f.PrometheusQueryResponse, error)
}
PromQueries is an interface for querying Prometheus containing only methods we need for detecting resource leaks
type ResourceLeakChecker ¶
type ResourceLeakChecker struct {
PrometheusURL string
// contains filtered or unexported fields
}
ResourceLeakChecker is resource leak cheker instance
func NewResourceLeakChecker ¶
func NewResourceLeakChecker(opts ...func(*ResourceLeakChecker)) *ResourceLeakChecker
NewResourceLeakChecker creates a new resource leak checker
func (*ResourceLeakChecker) MeasureDelta ¶ added in v0.13.2
func (rc *ResourceLeakChecker) MeasureDelta( c *CheckConfig, ) (float64, error)
MeasureDelta measures resource leak delta between start and end timestamps WarmUpDuration is used to ignore warm up interval results for more stable comparison
type ResourceLeakCheckerConfig ¶
type ResourceLeakCheckerConfig struct {
PrometheusBaseURL string
}
ResourceLeakCheckerConfig is resource leak checker config with Prometheus base URL