kratos: github.com/bilibili/kratos/pkg/stat/metric Index | Files

package metric

import "github.com/bilibili/kratos/pkg/stat/metric"

Index

Package Files

counter.go gauge.go iterator.go metric.go point_gauge.go point_policy.go reduce.go rolling_counter.go rolling_gauge.go rolling_policy.go window.go

func Avg Uses

func Avg(iterator Iterator) float64

Avg the values within the window.

func Count Uses

func Count(iterator Iterator) float64

Count sums the count value within the window.

func Max Uses

func Max(iterator Iterator) float64

Max the values within the window.

func Min Uses

func Min(iterator Iterator) float64

Min the values within the window.

func Sum Uses

func Sum(iterator Iterator) float64

Sum the values within the window.

type Aggregation Uses

type Aggregation interface {
    // Min finds the min value within the window.
    Min() float64
    // Max finds the max value within the window.
    Max() float64
    // Avg computes average value within the window.
    Avg() float64
    // Sum computes sum value within the window.
    Sum() float64
}

Aggregation contains some common aggregation function. Each aggregation can compute summary statistics of window.

type Bucket Uses

type Bucket struct {
    Points []float64
    Count  int64
    // contains filtered or unexported fields
}

Bucket contains multiple float64 points.

func (*Bucket) Add Uses

func (b *Bucket) Add(offset int, val float64)

Add adds the given value to the point.

func (*Bucket) Append Uses

func (b *Bucket) Append(val float64)

Append appends the given value to the bucket.

func (*Bucket) Next Uses

func (b *Bucket) Next() *Bucket

Next returns the next bucket.

func (*Bucket) Reset Uses

func (b *Bucket) Reset()

Reset empties the bucket.

type Counter Uses

type Counter interface {
    Metric
}

Counter stores a numerical value that only ever goes up.

func NewCounter Uses

func NewCounter(opts CounterOpts) Counter

NewCounter creates a new Counter based on the CounterOpts.

type CounterOpts Uses

type CounterOpts Opts

CounterOpts is an alias of Opts.

type Gauge Uses

type Gauge interface {
    Metric
    // Sets sets the value to the given number.
    Set(int64)
}

Gauge stores a numerical value that can be add arbitrarily.

func NewGauge Uses

func NewGauge(opts GaugeOpts) Gauge

NewGauge creates a new Gauge based on the GaugeOpts.

type GaugeOpts Uses

type GaugeOpts Opts

GaugeOpts is an alias of Opts.

type Iterator Uses

type Iterator struct {
    // contains filtered or unexported fields
}

Iterator iterates the buckets within the window.

func (*Iterator) Bucket Uses

func (i *Iterator) Bucket() Bucket

Bucket gets current bucket.

func (*Iterator) Next Uses

func (i *Iterator) Next() bool

Next returns true util all of the buckets has been iterated.

type Metric Uses

type Metric interface {
    // Add adds the given value to the counter.
    Add(int64)
    // Value gets the current value.
    // If the metric's type is PointGauge, RollingCounter, RollingGauge,
    // it returns the sum value within the window.
    Value() int64
}

Metric is a sample interface. Implementations of Metrics in metric package are Counter, Gauge, PointGauge, RollingCounter and RollingGauge.

type Opts Uses

type Opts struct {
}

Opts contains the common arguments for creating Metric.

type PointGauge Uses

type PointGauge interface {
    Aggregation
    Metric
    // Reduce applies the reduction function to all buckets within the window.
    Reduce(func(Iterator) float64) float64
}

PointGauge represents a ring window. Every buckets within the window contains one point. When the window is full, the earliest point will be overwrite.

func NewPointGauge Uses

func NewPointGauge(opts PointGaugeOpts) PointGauge

NewPointGauge creates a new PointGauge based on PointGaugeOpts.

type PointGaugeOpts Uses

type PointGaugeOpts struct {
    // Size represents the bucket size within the window.
    Size int
}

PointGaugeOpts contains the arguments for creating PointGauge.

type PointPolicy Uses

type PointPolicy struct {
    // contains filtered or unexported fields
}

PointPolicy is a policy of points within the window. PointPolicy wraps the window and make it seem like ring-buf. When using PointPolicy, every buckets within the windows contains at more one point. e.g. [[1], [2], [3]]

func NewPointPolicy Uses

func NewPointPolicy(window *Window) *PointPolicy

NewPointPolicy creates a new PointPolicy.

func (*PointPolicy) Append Uses

func (p *PointPolicy) Append(val float64)

Append appends the given points to the window.

func (*PointPolicy) Reduce Uses

func (p *PointPolicy) Reduce(f func(Iterator) float64) float64

Reduce applies the reduction function to all buckets within the window.

type RollingCounter Uses

type RollingCounter interface {
    Metric
    Aggregation
    Timespan() int
    // Reduce applies the reduction function to all buckets within the window.
    Reduce(func(Iterator) float64) float64
}

RollingCounter represents a ring window based on time duration. e.g. [[1], [3], [5]]

func NewRollingCounter Uses

func NewRollingCounter(opts RollingCounterOpts) RollingCounter

NewRollingCounter creates a new RollingCounter bases on RollingCounterOpts.

type RollingCounterOpts Uses

type RollingCounterOpts struct {
    Size           int
    BucketDuration time.Duration
}

RollingCounterOpts contains the arguments for creating RollingCounter.

type RollingGauge Uses

type RollingGauge interface {
    Metric
    Aggregation
    // Reduce applies the reduction function to all buckets within the window.
    Reduce(func(Iterator) float64) float64
}

RollingGauge represents a ring window based on time duration. e.g. [[1, 2], [1, 2, 3], [1,2, 3, 4]]

func NewRollingGauge Uses

func NewRollingGauge(opts RollingGaugeOpts) RollingGauge

NewRollingGauge creates a new RollingGauge baseed on RollingGaugeOpts.

type RollingGaugeOpts Uses

type RollingGaugeOpts struct {
    Size           int
    BucketDuration time.Duration
}

RollingGaugeOpts contains the arguments for creating RollingGauge.

type RollingPolicy Uses

type RollingPolicy struct {
    // contains filtered or unexported fields
}

RollingPolicy is a policy for ring window based on time duration. RollingPolicy moves bucket offset with time duration. e.g. If the last point is appended one bucket duration ago, RollingPolicy will increment current offset.

func NewRollingPolicy Uses

func NewRollingPolicy(window *Window, opts RollingPolicyOpts) *RollingPolicy

NewRollingPolicy creates a new RollingPolicy based on the given window and RollingPolicyOpts.

func (*RollingPolicy) Add Uses

func (r *RollingPolicy) Add(val float64)

Add adds the given value to the latest point within bucket.

func (*RollingPolicy) Append Uses

func (r *RollingPolicy) Append(val float64)

Append appends the given points to the window.

func (*RollingPolicy) Reduce Uses

func (r *RollingPolicy) Reduce(f func(Iterator) float64) (val float64)

Reduce applies the reduction function to all buckets within the window.

type RollingPolicyOpts Uses

type RollingPolicyOpts struct {
    BucketDuration time.Duration
}

RollingPolicyOpts contains the arguments for creating RollingPolicy.

type Window Uses

type Window struct {
    // contains filtered or unexported fields
}

Window contains multiple buckets.

func NewWindow Uses

func NewWindow(opts WindowOpts) *Window

NewWindow creates a new Window based on WindowOpts.

func (*Window) Add Uses

func (w *Window) Add(offset int, val float64)

Add adds the given value to the latest point within bucket where index equals the given offset.

func (*Window) Append Uses

func (w *Window) Append(offset int, val float64)

Append appends the given value to the bucket where index equals the given offset.

func (*Window) Bucket Uses

func (w *Window) Bucket(offset int) Bucket

Bucket returns the bucket where index equals the given offset.

func (*Window) Iterator Uses

func (w *Window) Iterator(offset int, count int) Iterator

Iterator returns the bucket iterator.

func (*Window) ResetBucket Uses

func (w *Window) ResetBucket(offset int)

ResetBucket empties the bucket based on the given offset.

func (*Window) ResetBuckets Uses

func (w *Window) ResetBuckets(offsets []int)

ResetBuckets empties the buckets based on the given offsets.

func (*Window) ResetWindow Uses

func (w *Window) ResetWindow()

ResetWindow empties all buckets within the window.

func (*Window) Size Uses

func (w *Window) Size() int

Size returns the size of the window.

type WindowOpts Uses

type WindowOpts struct {
    Size int
}

WindowOpts contains the arguments for creating Window.

Package metric imports 4 packages (graph) and is imported by 2 packages. Updated 2019-07-20. Refresh now. Tools for package owners.