package metrics type MetricName string const ( MetricServicesGauge MetricName = "gost_services" MetricServiceRequestsCounter MetricName = "gost_service_requests_total" MetricServiceRequestsInFlightGauge MetricName = "gost_service_requests_in_flight" MetricServiceRequestsDurationObserver MetricName = "gost_service_request_duration_seconds" MetricServiceTransferInputBytesCounter MetricName = "gost_service_transfer_input_bytes_total" MetricServiceTransferOutputBytesCounter MetricName = "gost_service_transfer_output_bytes_total" MetricNodeConnectDurationObserver MetricName = "gost_chain_node_connect_duration_seconds" MetricServiceHandlerErrorsCounter MetricName = "gost_service_handler_errors_total" MetricChainErrorsCounter MetricName = "gost_chain_errors_total" ) type Labels map[string]string var ( metrics Metrics = Noop() ) func SetGlobal(m Metrics) { if m != nil { metrics = m } else { metrics = Noop() } } type Gauge interface { Inc() Dec() Add(float64) Set(float64) } type Counter interface { Inc() Add(float64) } type Observer interface { Observe(float64) } type Metrics interface { Counter(name MetricName, labels Labels) Counter Gauge(name MetricName, labels Labels) Gauge Observer(name MetricName, labels Labels) Observer } func GetCounter(name MetricName, labels Labels) Counter { return metrics.Counter(name, labels) } func GetGauge(name MetricName, labels Labels) Gauge { return metrics.Gauge(name, labels) } func GetObserver(name MetricName, labels Labels) Observer { return metrics.Observer(name, labels) }