meter: use plan map and metadata

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2021-01-23 00:23:29 +03:00
parent 202a942eef
commit 263ea8910d
3 changed files with 21 additions and 22 deletions

View File

@ -3,8 +3,6 @@ package meter
import (
"time"
"github.com/unistack-org/micro/v3/metadata"
)
var (
@ -25,13 +23,13 @@ var (
// Meter is an interface for collecting and instrumenting metrics
type Meter interface {
Init(...Option) error
Counter(string, metadata.Metadata) Counter
FloatCounter(string, metadata.Metadata) FloatCounter
Gauge(string, func() float64, metadata.Metadata) Gauge
Set(metadata.Metadata) Meter
Histogram(string, metadata.Metadata) Histogram
Summary(string, metadata.Metadata) Summary
SummaryExt(string, time.Duration, []float64, metadata.Metadata) Summary
Counter(string, map[string]string) Counter
FloatCounter(string, map[string]string) FloatCounter
Gauge(string, func() float64, map[string]string) Gauge
Set(map[string]string) Meter
Histogram(string, map[string]string) Histogram
Summary(string, map[string]string) Summary
SummaryExt(string, time.Duration, []float64, map[string]string) Summary
Options() Options
String() string
}

View File

@ -9,7 +9,7 @@ import (
// NoopMeter is an noop implementation of Meter
type noopMeter struct {
opts Options
md metadata.Metadata
md map[string]string
}
// NewMeter returns a configured noop reporter:
@ -28,37 +28,37 @@ func (r *noopMeter) Init(opts ...Option) error {
}
// Counter implements the Meter interface
func (r *noopMeter) Counter(name string, md metadata.Metadata) Counter {
func (r *noopMeter) Counter(name string, md map[string]string) Counter {
return &noopCounter{}
}
// FloatCounter implements the Meter interface
func (r *noopMeter) FloatCounter(name string, md metadata.Metadata) FloatCounter {
func (r *noopMeter) FloatCounter(name string, md map[string]string) FloatCounter {
return &noopFloatCounter{}
}
// Gauge implements the Meter interface
func (r *noopMeter) Gauge(name string, f func() float64, md metadata.Metadata) Gauge {
func (r *noopMeter) Gauge(name string, f func() float64, md map[string]string) Gauge {
return &noopGauge{}
}
// Summary implements the Meter interface
func (r *noopMeter) Summary(name string, md metadata.Metadata) Summary {
func (r *noopMeter) Summary(name string, md map[string]string) Summary {
return &noopSummary{}
}
// SummaryExt implements the Meter interface
func (r *noopMeter) SummaryExt(name string, window time.Duration, quantiles []float64, md metadata.Metadata) Summary {
func (r *noopMeter) SummaryExt(name string, window time.Duration, quantiles []float64, md map[string]string) Summary {
return &noopSummary{}
}
// Histogram implements the Meter interface
func (r *noopMeter) Histogram(name string, md metadata.Metadata) Histogram {
func (r *noopMeter) Histogram(name string, md map[string]string) Histogram {
return &noopHistogram{}
}
// Set implements the Meter interface
func (r *noopMeter) Set(md metadata.Metadata) Meter {
func (r *noopMeter) Set(md map[string]string) Meter {
return &noopMeter{opts: r.opts, md: metadata.Copy(md)}
}

View File

@ -4,7 +4,6 @@ import (
"context"
"github.com/unistack-org/micro/v3/logger"
"github.com/unistack-org/micro/v3/metadata"
)
// Option powers the configuration for metrics implementations:
@ -14,7 +13,7 @@ type Option func(*Options)
type Options struct {
Address string
Path string
Metadata metadata.Metadata
Metadata map[string]string
//TimingObjectives map[float64]float64
Logger logger.Logger
Context context.Context
@ -26,7 +25,7 @@ type Options struct {
func NewOptions(opt ...Option) Options {
opts := Options{
Address: DefaultAddress,
Metadata: metadata.New(3), // 3 elements contains service name, version and id
Metadata: make(map[string]string, 3), // 3 elements contains service name, version and id
Path: DefaultPath,
Context: context.Background(),
Logger: logger.DefaultLogger,
@ -63,9 +62,11 @@ func Address(value string) Option {
}
// Metadata will be added to every metric
func Metadata(md metadata.Metadata) Option {
func Metadata(md map[string]string) Option {
return func(o *Options) {
o.Metadata = metadata.Copy(md)
for k, v := range md {
o.Metadata[k] = v
}
}
}