cloudmetrics

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

README

cloudmetrics

GoDoc

This is a reporter for the go-metrics that will posts metrics to CloudWatch.

Usage

import "github.com/weareyolo/cloudmetrics"

go cloudmetrics.Publish(metrics.DefaultRegistry,
    "/sample/", // namespace
)

Configuration

cloudmetrics supports a number of configuration options:

package main

import (
    "context"
    "time"

    "github.com/aws/aws-sdk-go/service/cloudwatch"
    "github.com/weareyolo/go-metrics"
    "github.com/weareyolo/cloudmetrics"
)

func main() {
    p := cloudmetrics.NewPublisher(
        metrics.DefaultRegistry,                            // metrics registry
        "/sample/",                                         // namespace
        cloudmetrics.WithDimensions(map[string]string{
            "k1": "v1",
            "k2": "v2",
        }),                                                 // allows for custom dimensions
        cloudmetrics.WithInterval(5*time.Minute),           // custom interval
        cloudmetrics.WithContext(context.Background()),     // enables graceful shutdown via contexts
        cloudmetrics.WithPercentiles([]float64{.5, .99}),   // customize percentiles for histograms and timers
        cloudmetrics.WithUnits(map[string]string{
            "size": cloudwatch.StandardUnitGigabytes,
        }),                                                 // customize units based on metric names
    )
    go p.Publish()
    for {
        time.Sleep(5 * time.Minute)
    }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CloudWatch

type CloudWatch interface {
	PutMetricData(input *cloudwatch.PutMetricDataInput) (*cloudwatch.PutMetricDataOutput, error)
}

CloudWatch is an interface for *cloudwatch.CloudWatch that clearly identifies the functions used by cloudmetrics

type DatumBuilder

type DatumBuilder interface {
	BuildCounterData(v metrics.Counter, name string) []*cloudwatch.MetricDatum
	BuildGaugeData(v metrics.Gauge, name string) []*cloudwatch.MetricDatum
	BuildGaugeFloat64Data(v metrics.GaugeFloat64, name string) []*cloudwatch.MetricDatum
	BuildMeterData(v metrics.Meter, name string) []*cloudwatch.MetricDatum
	BuildHistogramData(v metrics.Histogram, name string) []*cloudwatch.MetricDatum
	BuildTimerData(v metrics.Timer, name string) []*cloudwatch.MetricDatum
}

DatumBuilder handles the datum generation per metric type

type Option

type Option func(s *settings)

Option is a type made to override default values for Publisher

func WithBuilder

func WithBuilder(b DatumBuilder) Option

WithBuilder specifies the DatumBuilder to use

func WithClient

func WithClient(client CloudWatch) Option

WithClient allows for user provided *cloudwatch.Cloudwatch instance

func WithContext

func WithContext(ctx context.Context) Option

WithContext allows a context to be specified. When <-ctx.Done() returns; the Publisher will stop any internal go routines and return

func WithDimensions

func WithDimensions(dimensions map[string]string) Option

WithDimensions allows for user specified dimensions to be added to the post

func WithInterval

func WithInterval(interval time.Duration) Option

WithInterval allows for a custom posting interval; by default, the interval is every 1 minute

func WithLogger

func WithLogger(logger logrus.FieldLogger) Option

WithLogger allows to use custom logger

func WithPercentiles

func WithPercentiles(percentiles []float64) Option

WithPercentiles allows the reported percentiles for Histogram and Timer metrics to be customized

func WithStorageResolution

func WithStorageResolution(storageResolution int64) Option

WithStorageResolution specifies the Storage Resolution to use in seconds, default to 60

func WithUnits

func WithUnits(units map[string]string) Option

WithUnits specifies the AWS StandardUnits to use for given metrics

type Publisher

type Publisher interface {
	Publish()
}

Publisher handles the publication of metrics data to CloudWatch

func NewPublisher

func NewPublisher(registry metrics.Registry, namespace string, opts ...Option) Publisher

NewPublisher creates a configured Publisher

Directories

Path Synopsis
_examples

Jump to

Keyboard shortcuts

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