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

View File

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

View File

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