github.com/influxdata/influxdb/v2@v2.7.6/influxql/control/prometheus.go (about) 1 package control 2 3 import ( 4 "github.com/prometheus/client_golang/prometheus" 5 ) 6 7 // controllerMetrics holds metrics related to the query controller. 8 type ControllerMetrics struct { 9 Requests *prometheus.CounterVec 10 NotImplemented *prometheus.CounterVec 11 RequestsLatency *prometheus.HistogramVec 12 ExecutingDuration *prometheus.HistogramVec 13 } 14 15 const ( 16 LabelSuccess = "success" 17 LabelGenericError = "generic_err" 18 LabelParseErr = "parse_err" 19 LabelInterruptedErr = "interrupt_err" 20 LabelRuntimeError = "runtime_error" 21 LabelNotImplError = "not_implemented" 22 LabelNotExecuted = "not_executed" 23 ) 24 25 func NewControllerMetrics(labels []string) *ControllerMetrics { 26 const ( 27 namespace = "influxql" 28 subsystem = "service" 29 ) 30 31 return &ControllerMetrics{ 32 Requests: prometheus.NewCounterVec(prometheus.CounterOpts{ 33 Namespace: namespace, 34 Subsystem: subsystem, 35 Name: "requests_total", 36 Help: "Count of the query requests", 37 }, append(labels, "result")), 38 39 NotImplemented: prometheus.NewCounterVec(prometheus.CounterOpts{ 40 Namespace: namespace, 41 Subsystem: subsystem, 42 Name: "not_implemented_total", 43 Help: "Count of the query requests executing unimplemented operations", 44 }, []string{"operation"}), 45 46 RequestsLatency: prometheus.NewHistogramVec(prometheus.HistogramOpts{ 47 Namespace: namespace, 48 Subsystem: subsystem, 49 Name: "requests_latency_seconds", 50 Help: "Histogram of times spent for end-to-end latency (from issuing query request, to receiving the first byte of the response)", 51 Buckets: prometheus.ExponentialBuckets(1e-3, 5, 7), 52 }, append(labels, "result")), 53 54 ExecutingDuration: prometheus.NewHistogramVec(prometheus.HistogramOpts{ 55 Namespace: namespace, 56 Subsystem: subsystem, 57 Name: "executing_duration_seconds", 58 Help: "Histogram of times spent executing queries", 59 Buckets: prometheus.ExponentialBuckets(1e-3, 5, 7), 60 }, append(labels, "result")), 61 } 62 } 63 64 func (cm *ControllerMetrics) PrometheusCollectors() []prometheus.Collector { 65 return []prometheus.Collector{ 66 cm.Requests, 67 cm.NotImplemented, 68 cm.ExecutingDuration, 69 } 70 }