circonusgometrics

package module
v3.4.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2023 License: BSD-3-Clause Imports: 25 Imported by: 2

README

Circonus metrics tracking for Go applications

This library supports named counters, gauges and histograms. It also provides convenience wrappers for registering latency instrumented functions with Go's builtin http server.

Initializing only requires setting an API Token at a minimum.

Options

See OPTIONS.md for information on all of the available cgm options.

Example

Bare bones minimum

A working cut-n-past example. Simply set the required environment variable CIRCONUS_API_TOKEN and run.

package main

import (
    "log"
    "math/rand"
    "os"
    "os/signal"
    "syscall"
    "time"

    cgm "github.com/circonus-labs/circonus-gometrics/v3"
)

func main() {

    logger := log.New(os.Stdout, "", log.LstdFlags)

    logger.Println("Configuring cgm")

    cmc := &cgm.Config{}
    cmc.Debug = false // set to true for debug messages
    cmc.Log = logger

    // Circonus API Token key (https://login.circonus.com/user/tokens)
    cmc.CheckManager.API.TokenKey = os.Getenv("CIRCONUS_API_TOKEN")

    logger.Println("Creating new cgm instance")

    metrics, err := cgm.NewCirconusMetrics(cmc)
    if err != nil {
        logger.Println(err)
        os.Exit(1)
    }

    src := rand.NewSource(time.Now().UnixNano())
    rnd := rand.New(src)

    logger.Println("Adding ctrl-c trap")
    c := make(chan os.Signal, 2)
    signal.Notify(c, os.Interrupt, syscall.SIGTERM)
    go func() {
        <-c
        logger.Println("Received CTRL-C, flushing outstanding metrics before exit")
        metrics.Flush()
        os.Exit(0)
    }()

    logger.Println("Starting to send metrics")

    // number of "sets" of metrics to send
    max := 60

    for i := 1; i < max; i++ {
        logger.Printf("\tmetric set %d of %d", i, 60)
        metrics.Timing("foo", rnd.Float64()*10)
        metrics.Increment("bar")
        metrics.Gauge("baz", 10)
        time.Sleep(time.Second)
    }

    metrics.SetText("fini", "complete")

    logger.Println("Flushing any outstanding metrics manually")
    metrics.Flush()
}
A more complete example

A working, cut-n-paste example with all options available for modification. Also, demonstrates metric tagging.

package main

import (
    "log"
    "math/rand"
    "os"
    "os/signal"
    "syscall"
    "time"

    cgm "github.com/circonus-labs/circonus-gometrics/v3"
)

func main() {

    logger := log.New(os.Stdout, "", log.LstdFlags)

    logger.Println("Configuring cgm")

    cmc := &cgm.Config{}

    // General

    cmc.Interval = "10s"
    cmc.Log = logger
    cmc.Debug = false
    cmc.ResetCounters = "true"
    cmc.ResetGauges = "true"
    cmc.ResetHistograms = "true"
    cmc.ResetText = "true"

    // Circonus API configuration options
    cmc.CheckManager.API.TokenKey = os.Getenv("CIRCONUS_API_TOKEN")
    cmc.CheckManager.API.TokenApp = os.Getenv("CIRCONUS_API_APP")
    cmc.CheckManager.API.URL = os.Getenv("CIRCONUS_API_URL")
    cmc.CheckManager.API.TLSConfig = nil

    // Check configuration options
    cmc.CheckManager.Check.SubmissionURL = os.Getenv("CIRCONUS_SUBMISSION_URL")
    cmc.CheckManager.Check.ID = os.Getenv("CIRCONUS_CHECK_ID")
    cmc.CheckManager.Check.InstanceID = ""
    cmc.CheckManager.Check.DisplayName = ""
    cmc.CheckManager.Check.TargetHost = ""
    //  if hn, err := os.Hostname(); err == nil {
    //      cmc.CheckManager.Check.TargetHost = hn
    //  }
    cmc.CheckManager.Check.SearchTag = ""
    cmc.CheckManager.Check.Secret = ""
    cmc.CheckManager.Check.Tags = ""
    cmc.CheckManager.Check.MaxURLAge = "5m"
    cmc.CheckManager.Check.ForceMetricActivation = "false"

    // Broker configuration options
    cmc.CheckManager.Broker.ID = ""
    cmc.CheckManager.Broker.SelectTag = ""
    cmc.CheckManager.Broker.MaxResponseTime = "500ms"
    cmc.CheckManager.Broker.TLSConfig = nil

    logger.Println("Creating new cgm instance")

    metrics, err := cgm.NewCirconusMetrics(cmc)
    if err != nil {
        logger.Println(err)
        os.Exit(1)
    }

    src := rand.NewSource(time.Now().UnixNano())
    rnd := rand.New(src)

    logger.Println("Adding ctrl-c trap")
    c := make(chan os.Signal, 2)
    signal.Notify(c, os.Interrupt, syscall.SIGTERM)
    go func() {
        <-c
        logger.Println("Received CTRL-C, flushing outstanding metrics before exit")
        metrics.Flush()
        os.Exit(0)
    }()

    // Add metric tags (append to any existing tags on specified metric)
    metrics.AddMetricTags("foo", []string{"cgm:test"})
    metrics.AddMetricTags("baz", []string{"cgm:test"})

    logger.Println("Starting to send metrics")

    // number of "sets" of metrics to send
    max := 60

    for i := 1; i < max; i++ {
        logger.Printf("\tmetric set %d of %d", i, 60)

        metrics.Timing("foo", rnd.Float64()*10)
        metrics.Increment("bar")
        metrics.Gauge("baz", 10)

        if i == 35 {
            // Set metric tags (overwrite current tags on specified metric)
            metrics.SetMetricTags("baz", []string{"cgm:reset_test", "cgm:test2"})
        }

        time.Sleep(time.Second)
    }

    logger.Println("Flushing any outstanding metrics manually")
    metrics.Flush()

}
HTTP Handler wrapping
http.HandleFunc("/", metrics.TrackHTTPLatency("/", handler_func))
HTTP latency example
package main

import (
    "os"
    "fmt"
    "net/http"
    cgm "github.com/circonus-labs/circonus-gometrics/v3"
)

func main() {
    cmc := &cgm.Config{}
    cmc.CheckManager.API.TokenKey = os.Getenv("CIRCONUS_API_TOKEN")

    metrics, err := cgm.NewCirconusMetrics(cmc)
    if err != nil {
        panic(err)
    }

    http.HandleFunc("/", metrics.TrackHTTPLatency("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])
    }))
    http.ListenAndServe(":8080", http.DefaultServeMux)
}

Unless otherwise noted, the source files are distributed under the BSD-style license found in the LICENSE file.

Documentation

Overview

Package circonusgometrics provides instrumentation for your applications in the form of counters, gauges and histograms and allows you to publish them to Circonus

Counters

A counter is a monotonically-increasing, unsigned, 64-bit integer used to represent the number of times an event has occurred. By tracking the deltas between measurements of a counter over intervals of time, an aggregation layer can derive rates, acceleration, etc.

Gauges

A gauge returns instantaneous measurements of something using signed, 64-bit integers. This value does not need to be monotonic.

Histograms

A histogram tracks the distribution of a stream of values (e.g. the number of seconds it takes to handle requests). Circonus can calculate complex analytics on these.

Reporting

A period push to a Circonus httptrap is configurable.

Index

Constants

View Source
const (

	// MetricTypeInt32 reconnoiter
	MetricTypeInt32 = "i"

	// MetricTypeUint32 reconnoiter
	MetricTypeUint32 = "I"

	// MetricTypeInt64 reconnoiter
	MetricTypeInt64 = "l"

	// MetricTypeUint64 reconnoiter
	MetricTypeUint64 = "L"

	// MetricTypeFloat64 reconnoiter
	MetricTypeFloat64 = "n"

	// MetricTypeString reconnoiter
	MetricTypeString = "s"

	// MetricTypeHistogram reconnoiter
	MetricTypeHistogram = "h"

	// MetricTypeCumulativeHistogram reconnoiter
	MetricTypeCumulativeHistogram = "H"
)
View Source
const (
	MaxTagLen = 256 // sync w/NOIT_TAG_MAX_PAIR_LEN https://github.com/circonus-labs/reconnoiter/blob/master/src/noit_metric.h#L102
	MaxTagCat = 254 // sync w/NOIT_TAG_MAX_CAT_LEN https://github.com/circonus-labs/reconnoiter/blob/master/src/noit_metric.h#L104

	// MaxTags reconnoiter will accept in stream tagged metric name
	MaxTags = 256 // sync w/MAX_TAGS https://github.com/circonus-labs/reconnoiter/blob/master/src/noit_metric.h#L46

	// MaxMetricNameLen reconnoiter will accept (name+stream tags)
	MaxMetricNameLen = 4096 // sync w/MAX_METRIC_TAGGED_NAME https://github.com/circonus-labs/reconnoiter/blob/master/src/noit_metric.h#L45
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CirconusMetrics

type CirconusMetrics struct {
	Log Logger

	Debug       bool
	DumpMetrics bool
	// contains filtered or unexported fields
}

CirconusMetrics state

func New

func New(cfg *Config) (*CirconusMetrics, error)

New returns a CirconusMetrics instance

func NewCirconusMetrics

func NewCirconusMetrics(cfg *Config) (*CirconusMetrics, error)

NewCirconusMetrics returns a CirconusMetrics instance

func (*CirconusMetrics) Add

func (m *CirconusMetrics) Add(metric string, val uint64)

Add updates counter by supplied value

func (*CirconusMetrics) AddGauge

func (m *CirconusMetrics) AddGauge(metric string, val interface{})

AddGauge adds value to existing gauge

func (*CirconusMetrics) AddGaugeWithTags

func (m *CirconusMetrics) AddGaugeWithTags(metric string, tags Tags, val interface{})

AddGaugeWithTags adds value to existing gauge metric with tags

func (*CirconusMetrics) AddMetricTags

func (m *CirconusMetrics) AddMetricTags(name string, tags []string) bool

AddMetricTags appends tags to any existing tags for the named metric and flags a check update is needed Note: does not work with checks using metric_filters (the default) use metric `*WithTags` helper methods or manual manage stream tags in metric names.

func (*CirconusMetrics) AddWithTags

func (m *CirconusMetrics) AddWithTags(metric string, tags Tags, val uint64)

AddWithTags updates counter metric with tags by supplied value

func (*CirconusMetrics) Custom added in v3.3.3

func (m *CirconusMetrics) Custom(metricName string, metric Metric) error

Custom adds a user defined metric

func (*CirconusMetrics) EncodeMetricStreamTags

func (m *CirconusMetrics) EncodeMetricStreamTags(metricName string, tags Tags) string

EncodeMetricStreamTags encodes Tags into a string suitable for use with stream tags. Tags directly embedded into metric names using the `metric_name|ST[<tags>]` syntax.

func (*CirconusMetrics) EncodeMetricTags

func (m *CirconusMetrics) EncodeMetricTags(metricName string, tags Tags) []string

EncodeMetricTags encodes Tags into an array of strings. The format check_bundle.metircs.metric.tags needs. This helper is intended to work with legacy check bundle metrics. Tags directly on named metrics are being removed in favor of stream tags.

func (*CirconusMetrics) Flush

func (m *CirconusMetrics) Flush()

Flush metrics kicks off the process of sending metrics to Circonus

func (*CirconusMetrics) FlushMetrics

func (m *CirconusMetrics) FlushMetrics() *Metrics

FlushMetrics flushes current metrics to a structure and returns it (does NOT send to Circonus)

func (*CirconusMetrics) FlushMetricsNoReset added in v3.0.2

func (m *CirconusMetrics) FlushMetricsNoReset() *Metrics

FlushMetricsNoReset flushes current metrics to a structure and returns it (does NOT send to Circonus).

func (*CirconusMetrics) Gauge

func (m *CirconusMetrics) Gauge(metric string, val interface{})

Gauge sets a gauge to a value

func (*CirconusMetrics) GaugeWithTags

func (m *CirconusMetrics) GaugeWithTags(metric string, tags Tags, val interface{})

GaugeWithTags sets a gauge metric with tags to a value

func (*CirconusMetrics) GetBrokerTLSConfig added in v3.4.2

func (m *CirconusMetrics) GetBrokerTLSConfig() *tls.Config

GetBrokerTLSConfig returns the tls.Config for the broker

func (*CirconusMetrics) GetCheckBundle added in v3.4.2

func (m *CirconusMetrics) GetCheckBundle() *apiclient.CheckBundle

func (*CirconusMetrics) GetCounterTest

func (m *CirconusMetrics) GetCounterTest(metric string) (uint64, error)

GetCounterTest returns the current value for a counter. (note: it is a function specifically for "testing", disable automatic submission during testing.)

func (*CirconusMetrics) GetGaugeTest

func (m *CirconusMetrics) GetGaugeTest(metric string) (interface{}, error)

GetGaugeTest returns the current value for a gauge. (note: it is a function specifically for "testing", disable automatic submission during testing.)

func (*CirconusMetrics) GetHistogramTest

func (m *CirconusMetrics) GetHistogramTest(metric string) ([]string, error)

GetHistogramTest returns the current value for a histogram. (note: it is a function specifically for "testing", disable automatic submission during testing.)

func (*CirconusMetrics) Increment

func (m *CirconusMetrics) Increment(metric string)

Increment counter by 1

func (*CirconusMetrics) IncrementByValue

func (m *CirconusMetrics) IncrementByValue(metric string, val uint64)

IncrementByValue updates counter by supplied value

func (*CirconusMetrics) IncrementByValueWithTags

func (m *CirconusMetrics) IncrementByValueWithTags(metric string, tags Tags, val uint64)

IncrementByValueWithTags updates counter metric with tags by supplied value

func (*CirconusMetrics) IncrementWithTags

func (m *CirconusMetrics) IncrementWithTags(metric string, tags Tags)

IncrementWithTags counter by 1, with tags

func (*CirconusMetrics) MetricNameWithStreamTags

func (m *CirconusMetrics) MetricNameWithStreamTags(metric string, tags Tags) string

MetricNameWithStreamTags will encode tags as stream tags into supplied metric name. Note: if metric name already has stream tags it is assumed the metric name and embedded stream tags are being managed manually and calling this method will nave no effect.

func (*CirconusMetrics) NewHistogram

func (m *CirconusMetrics) NewHistogram(metric string) *Histogram

NewHistogram returns a histogram instance.

func (*CirconusMetrics) NewHistogramWithTags

func (m *CirconusMetrics) NewHistogramWithTags(metric string, tags Tags) *Histogram

NewHistogramWithTags returns a histogram metric with tags instance

func (*CirconusMetrics) PromOutput

func (m *CirconusMetrics) PromOutput() (*bytes.Buffer, error)

PromOutput returns lines of metrics in prom format

func (*CirconusMetrics) Ready

func (m *CirconusMetrics) Ready() bool

Ready returns true or false indicating if the check is ready to accept metrics

func (*CirconusMetrics) RecordCountForValue

func (m *CirconusMetrics) RecordCountForValue(metric string, val float64, n int64)

RecordCountForValue adds count n for value to a histogram

func (*CirconusMetrics) RecordCountForValueWithTags

func (m *CirconusMetrics) RecordCountForValueWithTags(metric string, tags Tags, val float64, n int64)

RecordCountForValueWithTags adds count n for value to a histogram metric with tags

func (*CirconusMetrics) RecordDuration

func (m *CirconusMetrics) RecordDuration(metric string, val time.Duration)

RecordDuration adds a time.Duration to a histogram metric (duration is normalized to time.Second, but supports nanosecond granularity).

func (*CirconusMetrics) RecordDurationWithTags

func (m *CirconusMetrics) RecordDurationWithTags(metric string, tags Tags, val time.Duration)

RecordDurationWithTags adds a time.Duration to a histogram metric with tags (duration is normalized to time.Second, but supports nanosecond granularity).

func (*CirconusMetrics) RecordValue

func (m *CirconusMetrics) RecordValue(metric string, val float64)

RecordValue adds a value to a histogram

func (*CirconusMetrics) RecordValueWithTags

func (m *CirconusMetrics) RecordValueWithTags(metric string, tags Tags, val float64)

RecordValueWithTags adds a value to a histogram metric with tags

func (*CirconusMetrics) RemoveCounter

func (m *CirconusMetrics) RemoveCounter(metric string)

RemoveCounter removes the named counter

func (*CirconusMetrics) RemoveCounterFunc

func (m *CirconusMetrics) RemoveCounterFunc(metric string)

RemoveCounterFunc removes the named counter function

func (*CirconusMetrics) RemoveCounterFuncWithTags

func (m *CirconusMetrics) RemoveCounterFuncWithTags(metric string, tags Tags)

RemoveCounterFuncWithTags removes the named counter metric function with tags

func (*CirconusMetrics) RemoveCounterWithTags

func (m *CirconusMetrics) RemoveCounterWithTags(metric string, tags Tags)

RemoveCounterWithTags removes the named counter metric with tags

func (*CirconusMetrics) RemoveGauge

func (m *CirconusMetrics) RemoveGauge(metric string)

RemoveGauge removes a gauge

func (*CirconusMetrics) RemoveGaugeFunc

func (m *CirconusMetrics) RemoveGaugeFunc(metric string)

RemoveGaugeFunc removes a gauge function

func (*CirconusMetrics) RemoveGaugeFuncWithTags

func (m *CirconusMetrics) RemoveGaugeFuncWithTags(metric string, tags Tags)

RemoveGaugeFuncWithTags removes a gauge metric with tags function

func (*CirconusMetrics) RemoveGaugeWithTags

func (m *CirconusMetrics) RemoveGaugeWithTags(metric string, tags Tags)

RemoveGaugeWithTags removes a gauge metric with tags

func (*CirconusMetrics) RemoveHistogram

func (m *CirconusMetrics) RemoveHistogram(metric string)

RemoveHistogram removes a histogram

func (*CirconusMetrics) RemoveHistogramWithTags

func (m *CirconusMetrics) RemoveHistogramWithTags(metric string, tags Tags)

RemoveHistogramWithTags removes a histogram metric with tags

func (*CirconusMetrics) RemoveText

func (m *CirconusMetrics) RemoveText(metric string)

RemoveText removes a text metric

func (*CirconusMetrics) RemoveTextFunc

func (m *CirconusMetrics) RemoveTextFunc(metric string)

RemoveTextFunc a text metric function

func (*CirconusMetrics) RemoveTextFuncWithTags

func (m *CirconusMetrics) RemoveTextFuncWithTags(metric string, tags Tags)

RemoveTextFuncWithTags removes a text metric with tags function

func (*CirconusMetrics) RemoveTextWithTags

func (m *CirconusMetrics) RemoveTextWithTags(metric string, tags Tags)

RemoveTextWithTags removes a text metric with tags

func (*CirconusMetrics) Reset

func (m *CirconusMetrics) Reset()

Reset removes all existing counters and gauges.

func (*CirconusMetrics) Set

func (m *CirconusMetrics) Set(metric string, val uint64)

Set a counter to specific value

func (*CirconusMetrics) SetCounterFunc

func (m *CirconusMetrics) SetCounterFunc(metric string, fn func() uint64)

SetCounterFunc set counter to a function [called at flush interval]

func (*CirconusMetrics) SetCounterFuncWithTags

func (m *CirconusMetrics) SetCounterFuncWithTags(metric string, tags Tags, fn func() uint64)

SetCounterFuncWithTags set counter metric with tags to a function [called at flush interval]

func (*CirconusMetrics) SetGauge

func (m *CirconusMetrics) SetGauge(metric string, val interface{})

SetGauge sets a gauge to a value

func (*CirconusMetrics) SetGaugeFunc

func (m *CirconusMetrics) SetGaugeFunc(metric string, fn func() int64)

SetGaugeFunc sets a gauge to a function [called at flush interval]

func (*CirconusMetrics) SetGaugeFuncWithTags

func (m *CirconusMetrics) SetGaugeFuncWithTags(metric string, tags Tags, fn func() int64)

SetGaugeFuncWithTags sets a gauge metric with tags to a function [called at flush interval]

func (*CirconusMetrics) SetGaugeWithTags

func (m *CirconusMetrics) SetGaugeWithTags(metric string, tags Tags, val interface{})

SetGaugeWithTags sets a gauge metric with tags to a value

func (*CirconusMetrics) SetHistogramDuration

func (m *CirconusMetrics) SetHistogramDuration(metric string, val time.Duration)

SetHistogramDuration adds a value to a histogram

func (*CirconusMetrics) SetHistogramDurationWithTags

func (m *CirconusMetrics) SetHistogramDurationWithTags(metric string, tags Tags, val time.Duration)

SetHistogramDurationWithTags adds a value to a histogram with tags

func (*CirconusMetrics) SetHistogramValue

func (m *CirconusMetrics) SetHistogramValue(metric string, val float64)

SetHistogramValue adds a value to a histogram

func (*CirconusMetrics) SetHistogramValueWithTags

func (m *CirconusMetrics) SetHistogramValueWithTags(metric string, tags Tags, val float64)

SetHistogramValueWithTags adds a value to a histogram metric with tags

func (*CirconusMetrics) SetMetricTags

func (m *CirconusMetrics) SetMetricTags(name string, tags []string) bool

SetMetricTags sets the tags for the named metric and flags a check update is needed Note: does not work with checks using metric_filters (the default) use metric `*WithTags` helper methods or manual manage stream tags in metric names.

func (*CirconusMetrics) SetSubmitTimestamp added in v3.4.4

func (m *CirconusMetrics) SetSubmitTimestamp(ts time.Time)

func (*CirconusMetrics) SetText

func (m *CirconusMetrics) SetText(metric string, val string)

SetText sets a text metric

func (*CirconusMetrics) SetTextFunc

func (m *CirconusMetrics) SetTextFunc(metric string, fn func() string)

SetTextFunc sets a text metric to a function [called at flush interval]

func (*CirconusMetrics) SetTextFuncWithTags

func (m *CirconusMetrics) SetTextFuncWithTags(metric string, tags Tags, fn func() string)

SetTextFuncWithTags sets a text metric with tags to a function [called at flush interval]

func (*CirconusMetrics) SetTextValue

func (m *CirconusMetrics) SetTextValue(metric string, val string)

SetTextValue sets a text metric

func (*CirconusMetrics) SetTextValueWithTags

func (m *CirconusMetrics) SetTextValueWithTags(metric string, tags Tags, val string)

SetTextValueWithTags sets a text metric with tags

func (*CirconusMetrics) SetTextWithTags

func (m *CirconusMetrics) SetTextWithTags(metric string, tags Tags, val string)

SetTextWithTags sets a text metric with tags

func (*CirconusMetrics) SetWithTags

func (m *CirconusMetrics) SetWithTags(metric string, tags Tags, val uint64)

SetWithTags sets a counter metric with tags to specific value

func (*CirconusMetrics) Start

func (m *CirconusMetrics) Start()

Start deprecated NOP, automatic flush is started in New if flush interval > 0.

func (*CirconusMetrics) Timing

func (m *CirconusMetrics) Timing(metric string, val float64)

Timing adds a value to a histogram

func (*CirconusMetrics) TimingWithTags

func (m *CirconusMetrics) TimingWithTags(metric string, tags Tags, val float64)

TimingWithTags adds a value to a histogram metric with tags

func (*CirconusMetrics) TrackHTTPLatency

func (m *CirconusMetrics) TrackHTTPLatency(name string, handler func(http.ResponseWriter, *http.Request)) func(http.ResponseWriter, *http.Request)

TrackHTTPLatency wraps Handler functions registered with an http.ServerMux tracking latencies. Metrics are of the for go`HTTP`<method>`<name>`latency and are tracked in a histogram in units of seconds (as a float64) providing nanosecond ganularity.

type Config

type Config struct {
	Log             Logger
	ResetCounters   string // reset/delete counters on flush (default true)
	ResetGauges     string // reset/delete gauges on flush (default true)
	ResetHistograms string // reset/delete histograms on flush (default true)
	ResetText       string // reset/delete text on flush (default true)
	// how frequently to submit metrics to Circonus, default 10 seconds.
	// Set to 0 to disable automatic flushes and call Flush manually.
	Interval string

	// API, Check and Broker configuration options
	CheckManager checkmgr.Config

	Debug       bool
	DumpMetrics bool
}

Config options for circonus-gometrics

type Histogram

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

Histogram measures the distribution of a stream of values.

func (*Histogram) Name

func (h *Histogram) Name() string

Name returns the name from a histogram instance

func (*Histogram) RecordDuration

func (h *Histogram) RecordDuration(v time.Duration)

RecordDuration records the given time.Duration to a histogram instance. RecordDuration normalizes the value to seconds.

func (*Histogram) RecordValue

func (h *Histogram) RecordValue(v float64)

RecordValue records the given value to a histogram instance

type Logger

type Logger interface {
	Printf(string, ...interface{})
}

Logger facilitates use of any logger supporting the required methods rather than just standard log package log.Logger

type Metric

type Metric struct {
	Value     interface{} `json:"_value"`
	Type      string      `json:"_type"`
	Timestamp uint64      `json:"_ts,omitempty"`
}

Metric defines an individual metric

type Metrics

type Metrics map[string]Metric

Metrics holds host metrics

type Tag

type Tag struct {
	Category string
	Value    string
}

Tag defines an individual tag

type Tags

type Tags []Tag

Tags defines a list of tags

Directories

Path Synopsis
Package checkmgr provides a check management interface to circonus-gometrics
Package checkmgr provides a check management interface to circonus-gometrics

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL