core/metrics/metrics.go
2022-04-05 17:55:20 +08:00

64 lines
1.6 KiB
Go

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)
}