package types import ( "time" ) // Metrics provides options to expose and send Traefik metrics to different third party monitoring systems type Metrics struct { Prometheus *Prometheus `description:"Prometheus metrics exporter type." export:"true" label:"allowEmpty"` Datadog *Datadog `description:"DataDog metrics exporter type." export:"true" label:"allowEmpty"` StatsD *Statsd `description:"StatsD metrics exporter type." export:"true" label:"allowEmpty"` InfluxDB *InfluxDB `description:"InfluxDB metrics exporter type." label:"allowEmpty"` } // Prometheus can contain specific configuration used by the Prometheus Metrics exporter type Prometheus struct { Buckets []float64 `description:"Buckets for latency metrics." export:"true"` EntryPoint string `description:"EntryPoint." export:"true"` Middlewares []string `description:"Middlewares." export:"true"` } // SetDefaults sets the default values. func (p *Prometheus) SetDefaults() { p.Buckets = []float64{0.1, 0.3, 1.2, 5} p.EntryPoint = "traefik" // FIXME p.EntryPoint = static.DefaultInternalEntryPointName } // Datadog contains address and metrics pushing interval configuration type Datadog struct { Address string `description:"DataDog's address."` PushInterval Duration `description:"DataDog push interval." export:"true"` } // SetDefaults sets the default values. func (d *Datadog) SetDefaults() { d.Address = "localhost:8125" d.PushInterval = Duration(10 * time.Second) } // Statsd contains address and metrics pushing interval configuration type Statsd struct { Address string `description:"StatsD address."` PushInterval Duration `description:"StatsD push interval." export:"true"` } // SetDefaults sets the default values. func (s *Statsd) SetDefaults() { s.Address = "localhost:8125" s.PushInterval = Duration(10 * time.Second) } // InfluxDB contains address, login and metrics pushing interval configuration type InfluxDB struct { Address string `description:"InfluxDB address."` Protocol string `description:"InfluxDB address protocol (udp or http)."` PushInterval Duration `description:"InfluxDB push interval." export:"true"` Database string `description:"InfluxDB database used when protocol is http." export:"true"` RetentionPolicy string `description:"InfluxDB retention policy used when protocol is http." export:"true"` Username string `description:"InfluxDB username (only with http)." export:"true"` Password string `description:"InfluxDB password (only with http)." export:"true"` } // SetDefaults sets the default values. func (i *InfluxDB) SetDefaults() { i.Address = "localhost:8089" i.Protocol = "udp" i.PushInterval = Duration(10 * time.Second) } // Statistics provides options for monitoring request and response stats type Statistics struct { RecentErrors int `description:"Number of recent errors logged." export:"true"` } // SetDefaults sets the default values. func (s *Statistics) SetDefaults() { s.RecentErrors = 10 }