pipeline

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2023 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Example
// Use Go's standard logger as the logr implementation
logger := stdr.NewWithOptions(log.New(os.Stderr, "", log.Lshortfile), stdr.Options{LogCaller: stdr.All, Depth: 0})
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
metrics := make(chan generators.Metric, 2)
pipeline, err := NewPipeline(ctx,
	WithLogger(logger),
	WithProjectID("my-google-project-id"),
	WithMetricType("custom.googleapis.com/my-synthetic-metric"),
	WithWriterEmitter(os.Stdout),
	WithTransformers([]Transformer{
		func(req *monitoringpb.CreateTimeSeriesRequest, _ generators.Metric) error {
			for _, series := range req.TimeSeries {
				series.Resource.Labels["node_id"] = "example"
			}
			return nil
		},
	}),
)
if err != nil {
	logger.Error(err, "NewPipeline returned an error")
	return
}
defer pipeline.Close()

// Launch a pipeline processor that will emit each value received from
// metrics channel.
go func() {
	if err := pipeline.Processor()(ctx, metrics); err != nil {
		logger.Error(err, "Pipeline processor returned an error")
		cancel()
	}
}()

metrics <- generators.Metric{
	Value:     1.0,
	Timestamp: time.Unix(1, 0),
}

metrics <- generators.Metric{
	Value:     2.0,
	Timestamp: time.Unix(2, 0),
}
<-ctx.Done()
Output:

Index

Examples

Constants

View Source
const (
	DefaultMetricType = "custom.googleapis.com/gce_metric"
	DefaultLocation   = "global"
	DefaultNamespace  = "github.com/memes/gce-metric"
)

Variables

View Source
var ErrNilCreateTimeSeriesRequest = errors.New("transformer received nil as CreateTimeSeriesRequest")

Functions

This section is empty.

Types

type Closer

type Closer func() error

type Option

type Option func(*Pipeline) error

func WithLogger

func WithLogger(logger logr.Logger) Option

func WithMetricType

func WithMetricType(metricType string) Option

func WithProjectID

func WithProjectID(projectID string) Option

Use a specific project identifier for the synthetic metrics in preference to detecting from metadata.

func WithTransformers

func WithTransformers(transformers []Transformer) Option

func WithWriterEmitter

func WithWriterEmitter(writer io.Writer) Option

func WithoutDefaultTransformers

func WithoutDefaultTransformers() Option

type Pipeline

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

func NewPipeline

func NewPipeline(ctx context.Context, options ...Option) (*Pipeline, error)

func (*Pipeline) BuildRequest

func (*Pipeline) Close

func (p *Pipeline) Close() error

func (*Pipeline) Processor

func (p *Pipeline) Processor() Processor

type Processor

type Processor func(context.Context, <-chan generators.Metric) error

type Transformer

Defines a function that mutates a monitoring CreateTimeSeriesRequest object using the supplied moment-in-time Metric object.

func NewDoubleTypedValueTransformer

func NewDoubleTypedValueTransformer() Transformer

Returns a Transformer that replaces the time-series point-in-time record with the embedded value in metric.

func NewGCEMonitoredResourceTransformer

func NewGCEMonitoredResourceTransformer(projectID, instanceID, zone string) Transformer

Returns a Transformer that will insert a gce_instance resource into each time-series value.

func NewGKEMonitoredResourceTransformer

func NewGKEMonitoredResourceTransformer(projectID, clusterName, namespaceID, instanceID, podID, containerName, zone string) Transformer

Returns a Transformer that will insert a gke_container resource into each time-series value.

func NewGenericKubernetesClusterMonitoredResourceTransformer

func NewGenericKubernetesClusterMonitoredResourceTransformer(projectID, location, clusterName string) Transformer

Returns a Transformer that will insert a k8s_cluster resource into each time-series value.

func NewGenericKubernetesContainerMonitoredResourceTransformer

func NewGenericKubernetesContainerMonitoredResourceTransformer(projectID, location, clusterName, namespaceID, podID, containerName string) Transformer

Returns a Transformer that will insert a k8s_container resource into each time-series value.

func NewGenericKubernetesNodeMonitoredResourceTransformer

func NewGenericKubernetesNodeMonitoredResourceTransformer(projectID, location, clusterName, nodeName string) Transformer

Returns a Transformer that will insert a k8s_node resource into each time-series value.

func NewGenericKubernetesPodMonitoredResourceTransformer

func NewGenericKubernetesPodMonitoredResourceTransformer(projectID, location, clusterName, namespaceID, podID string) Transformer

Returns a Transformer that will insert a k8s_pod resource into each time-series value.

func NewGenericMonitoredResourceTransformer

func NewGenericMonitoredResourceTransformer(projectID, location, namespace, nodeID string) Transformer

Returns a Transformer that will insert a generic_node resource into each time-series value.

func NewIntegerTypedValueTransformer

func NewIntegerTypedValueTransformer() Transformer

Returns a Transformer that replaces the time-series point-in-time record with the embedded value in metric after rounding to the nearest integer.

Jump to

Keyboard shortcuts

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