storj/cmd/statreceiver/print.go
Isaac Hess 85b6316ce8 statreceiver: Update to filter on packet headers
The admission/v3 protocol now supports arbitrary key/value headers to be
included in each packet of metrics. This commit creates support for
this, so the lua config file can declare a filter taking into account
the key/value headers.

Change-Id: I41de8c018d33304ccf46ec221ae689d55c5fb1ee
2020-03-12 13:57:07 -06:00

49 lines
985 B
Go

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package main
import (
"fmt"
"sync"
"time"
)
// Printer is a MetricDest that writes to stdout
type Printer struct {
mu sync.Mutex
}
// NewPrinter creates a Printer
func NewPrinter() *Printer {
return &Printer{}
}
// Metric implements MetricDest
func (p *Printer) Metric(application, instance string, key []byte, val float64, ts time.Time) error {
p.mu.Lock()
defer p.mu.Unlock()
_, err := fmt.Println(application, instance, string(key), val, ts.Unix())
return err
}
// PacketPrinter is a PacketDest that writes to stdout
type PacketPrinter struct {
mu sync.Mutex
}
// NewPacketPrinter returns a PacketPrinter
func NewPacketPrinter() *PacketPrinter {
return &PacketPrinter{}
}
// Packet implements PacketDest
func (p *PacketPrinter) Packet(data []byte, ts time.Time) error {
p.mu.Lock()
defer p.mu.Unlock()
_, err := fmt.Println("printing packet", len(data), ts.Unix())
return err
}