mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-01-05 19:34:26 +00:00
65 lines
2.5 KiB
Go
65 lines
2.5 KiB
Go
package metrics
|
|
|
|
// Config holds configuration for the metrics provider
|
|
type Config struct {
|
|
// Enabled determines whether metrics collection is enabled
|
|
Enabled bool `mapstructure:"enabled"`
|
|
|
|
// Provider specifies which metrics provider to use (prometheus, noop)
|
|
Provider string `mapstructure:"provider"`
|
|
|
|
// Namespace is an optional prefix for all metric names
|
|
Namespace string `mapstructure:"namespace"`
|
|
|
|
// HTTPRequestBuckets defines histogram buckets for HTTP request duration (in seconds)
|
|
// Default: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10]
|
|
HTTPRequestBuckets []float64 `mapstructure:"http_request_buckets"`
|
|
|
|
// DBQueryBuckets defines histogram buckets for database query duration (in seconds)
|
|
// Default: [0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5]
|
|
DBQueryBuckets []float64 `mapstructure:"db_query_buckets"`
|
|
|
|
// PushgatewayURL is the URL of the Prometheus Pushgateway (optional)
|
|
// If set, metrics will be pushed to this gateway instead of only being scraped
|
|
// Example: "http://pushgateway:9091"
|
|
PushgatewayURL string `mapstructure:"pushgateway_url"`
|
|
|
|
// PushgatewayJobName is the job name to use when pushing metrics to Pushgateway
|
|
// Default: "resolvespec"
|
|
PushgatewayJobName string `mapstructure:"pushgateway_job_name"`
|
|
|
|
// PushgatewayInterval is the interval at which to push metrics to Pushgateway
|
|
// Only used if PushgatewayURL is set. If 0, automatic pushing is disabled.
|
|
// Default: 0 (no automatic pushing)
|
|
PushgatewayInterval int `mapstructure:"pushgateway_interval"`
|
|
}
|
|
|
|
// DefaultConfig returns a Config with sensible defaults
|
|
func DefaultConfig() *Config {
|
|
return &Config{
|
|
Enabled: true,
|
|
Provider: "prometheus",
|
|
// HTTP requests typically take longer than DB queries
|
|
HTTPRequestBuckets: []float64{0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10},
|
|
// DB queries are usually faster
|
|
DBQueryBuckets: []float64{0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5},
|
|
}
|
|
}
|
|
|
|
// ApplyDefaults fills in any missing values with defaults
|
|
func (c *Config) ApplyDefaults() {
|
|
if c.Provider == "" {
|
|
c.Provider = "prometheus"
|
|
}
|
|
if len(c.HTTPRequestBuckets) == 0 {
|
|
c.HTTPRequestBuckets = []float64{0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10}
|
|
}
|
|
if len(c.DBQueryBuckets) == 0 {
|
|
c.DBQueryBuckets = []float64{0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5}
|
|
}
|
|
// Set default job name if pushgateway is configured but job name is empty
|
|
if c.PushgatewayURL != "" && c.PushgatewayJobName == "" {
|
|
c.PushgatewayJobName = "resolvespec"
|
|
}
|
|
}
|