package graphite
import "github.com/m3db/prometheus_client_golang/prometheus/graphite"
Package graphite provides a bridge to push Prometheus metrics to a Graphite server.
Index ¶
- type Bridge
- func NewBridge(c *Config) (*Bridge, error)
- func (b *Bridge) Push() error
- func (b *Bridge) Run(ctx context.Context)
- type Config
- type HandlerErrorHandling
- type Logger
Examples ¶
Types ¶
type Bridge ¶
type Bridge struct {
// contains filtered or unexported fields
}
Bridge pushes metrics to the configured Graphite server.
Code:
Example¶
{
b, err := NewBridge(&Config{
URL: "graphite.example.org:3099",
Gatherer: prometheus.DefaultGatherer,
Prefix: "prefix",
Interval: 15 * time.Second,
Timeout: 10 * time.Second,
ErrorHandling: AbortOnError,
Logger: log.New(os.Stdout, "graphite bridge: ", log.Lshortfile),
})
if err != nil {
panic(err)
}
go func() {
// Start something in a goroutine that uses metrics.
}()
// Push initial metrics to Graphite. Fail fast if the push fails.
if err := b.Push(); err != nil {
panic(err)
}
// Create a Context to control stopping the Run() loop that pushes
// metrics to Graphite.
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// Start pushing metrics to Graphite in the Run() loop.
b.Run(ctx)
}
func NewBridge ¶
NewBridge returns a pointer to a new Bridge struct.
func (*Bridge) Push ¶
Push pushes Prometheus metrics to the configured Graphite server.
func (*Bridge) Run ¶
Run starts the event loop that pushes Prometheus metrics to Graphite at the configured interval.
type Config ¶
type Config struct { // Whether to use Graphite tags or not. Defaults to false. UseTags bool // The url to push data to. Required. URL string // The prefix for the pushed Graphite metrics. Defaults to empty string. Prefix string // The interval to use for pushing data to Graphite. Defaults to 15 seconds. Interval time.Duration // The timeout for pushing metrics to Graphite. Defaults to 15 seconds. Timeout time.Duration // The Gatherer to use for metrics. Defaults to prometheus.DefaultGatherer. Gatherer prometheus.Gatherer // The logger that messages are written to. Defaults to no logging. Logger Logger // ErrorHandling defines how errors are handled. Note that errors are // logged regardless of the configured ErrorHandling provided Logger // is not nil. ErrorHandling HandlerErrorHandling }
Config defines the Graphite bridge config.
type HandlerErrorHandling ¶
type HandlerErrorHandling int
HandlerErrorHandling defines how a Handler serving metrics will handle errors.
const ( // Ignore errors and try to push as many metrics to Graphite as possible. ContinueOnError HandlerErrorHandling = iota // Abort the push to Graphite upon the first error encountered. AbortOnError )
These constants cause handlers serving metrics to behave as described if errors are encountered.
type Logger ¶
type Logger interface {
Println(v ...interface{})
}
Logger is the minimal interface Bridge needs for logging. Note that log.Logger from the standard library implements this interface, and it is easy to implement by custom loggers, if they don't do so already anyway.
Source Files ¶
- Version
- v1.12.8 (latest)
- Published
- Jun 3, 2022
- Platform
- linux/amd64
- Imports
- 12 packages
- Last checked
- 2 months ago –
Tools for package owners.