Documentation
¶
Index ¶
- Constants
- func CalculateDockerCPUPercent(previousCPU, previousSystem uint64, v *container.StatsResponse) float64
- func CalculateDockerMemoryUsed(mem container.MemoryStats) float64
- func CalculateQueryRuntime(prev, curr map[string]CachedPGStatStatement) float64
- func ValidateStruct(s interface{}) error
- type CachedPGStatStatement
- type FlatValue
- type FormattedMetrics
- type FormattedSystemInfo
- type LeveledLogrus
- type MetricData
- type MetricType
- type ServerURLs
Constants ¶
const (
DefaultServerURL = "https://app.dbtune.com"
)
Variables ¶
This section is empty.
Functions ¶
func CalculateDockerCPUPercent ¶
func CalculateDockerCPUPercent(previousCPU, previousSystem uint64, v *container.StatsResponse) float64
CalculateDockerCPUPercent calculates the CPU usage percentage for a Docker container Implementation based on: https://github.com/docker/cli/blob/master/cli/command/container/stats_helpers.go
func CalculateDockerMemoryUsed ¶
func CalculateDockerMemoryUsed(mem container.MemoryStats) float64
CalculateDockerMemoryUsed is mirroring the official way to calculate: https://github.com/docker/cli/blob/master/cli/command/container/stats_helpers.go#L239
func CalculateQueryRuntime ¶
func CalculateQueryRuntime(prev, curr map[string]CachedPGStatStatement) float64
CalculateQueryRuntime calculates the runtime of a query based on two consecutive snapshots of the pg_stat_statements table and returns the runtime in milliseconds.
func ValidateStruct ¶
func ValidateStruct(s interface{}) error
ValidateStruct validates a struct using the validator package It returns a single error with all validation errors combined Used to validate configs when we start the agent
Types ¶
type CachedPGStatStatement ¶
type FlatValue ¶
type FlatValue struct {
Key string `json:"key"`
Value interface{} `json:"value"`
Type MetricType `json:"type"`
}
FlatValue is a struct that represents a flat metric value.
type FormattedMetrics ¶
type FormattedMetrics struct {
Metrics map[string]MetricData `json:"metrics"`
Timestamp string `json:"timestamp"`
}
FormattedMetrics matches the expected payload of DBtune backend
func FormatMetrics ¶
func FormatMetrics(metrics []FlatValue) FormattedMetrics
TODO: write util tests for this FormatMetrics converts the MetricsState object into a FormattedMetrics object to be used as a metrics payload
type FormattedSystemInfo ¶
type FormattedSystemInfo struct {
SystemInfo map[string]MetricData `json:"system_info"`
Timestamp string `json:"timestamp"`
}
func FormatSystemInfo ¶
func FormatSystemInfo(metrics []FlatValue) FormattedSystemInfo
type LeveledLogrus ¶
LeveledLogrus is a wrapper around logrus that provides leveled logging This is needed to be compatible with retryablehttp: https://github.com/hashicorp/go-retryablehttp/pull/101#issuecomment-735206810
func (*LeveledLogrus) Debug ¶
func (l *LeveledLogrus) Debug(msg string, keysAndValues ...interface{})
func (*LeveledLogrus) Error ¶
func (l *LeveledLogrus) Error(msg string, keysAndValues ...interface{})
func (*LeveledLogrus) Info ¶
func (l *LeveledLogrus) Info(msg string, keysAndValues ...interface{})
func (*LeveledLogrus) Warn ¶
func (l *LeveledLogrus) Warn(msg string, keysAndValues ...interface{})
type MetricData ¶
type MetricData struct {
Type string `json:"type"`
Value interface{} `json:"value"`
}
type MetricType ¶
type MetricType string
const ( Int MetricType = "int" Float MetricType = "float" String MetricType = "string" Bytes MetricType = "bytes" Boolean MetricType = "boolean" Time MetricType = "time" Percentage MetricType = "percentage" )
type ServerURLs ¶
type ServerURLs struct {
ServerUrl string `mapstructure:"server_url" validate:"required"`
ApiKey string `mapstructure:"api_key" validate:"required"`
DbID string `mapstructure:"database_id" validate:"required"`
}
func CreateServerURLs ¶
func CreateServerURLs() (ServerURLs, error)
func (ServerURLs) GetKnobRecommendations ¶
func (s ServerURLs) GetKnobRecommendations() string
GetKnobRecommendations generates the URL for getting knob recommendations.
func (ServerURLs) PostActiveConfig ¶
func (s ServerURLs) PostActiveConfig() string
PostActiveConfig generates the URL for posting active configurations.
func (ServerURLs) PostGuardrailSignal ¶
func (s ServerURLs) PostGuardrailSignal() string
PostGuardrailSignal generates the URL for posting a guardrail signal.
func (ServerURLs) PostHeartbeat ¶
func (s ServerURLs) PostHeartbeat() string
PostHeartbeat generates the URL for posting a heartbeat.
func (ServerURLs) PostMetrics ¶
func (s ServerURLs) PostMetrics() string
PostMetrics generates the URL for posting metrics.
func (ServerURLs) PostSystemInfo ¶
func (s ServerURLs) PostSystemInfo() string
PostSystemInfo generates the URL for posting system info.