50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
// Copyright (C) 2018 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package process
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/jtolds/monkit-hw"
|
|
"github.com/zeebo/admission/admproto"
|
|
"gopkg.in/spacemonkeygo/monkit.v2"
|
|
"gopkg.in/spacemonkeygo/monkit.v2/environment"
|
|
"storj.io/storj/pkg/telemetry"
|
|
)
|
|
|
|
var (
|
|
metricInterval = flag.Duration("metrics.interval", telemetry.DefaultInterval,
|
|
"how frequently to send up telemetry")
|
|
metricCollector = flag.String("metrics.addr", "collectora.storj.io:9000",
|
|
"address to send telemetry to")
|
|
metricApp = flag.String("metrics.app", filepath.Base(os.Args[0]),
|
|
"application name for telemetry identification")
|
|
metricAppSuffix = flag.String("metrics.app_suffix", "-dev",
|
|
"application suffix")
|
|
)
|
|
|
|
func initMetrics(ctx context.Context, r *monkit.Registry, instanceID string) (
|
|
err error) {
|
|
if *metricCollector == "" || *metricInterval == 0 {
|
|
return Error.New("telemetry disabled")
|
|
}
|
|
c, err := telemetry.NewClient(*metricCollector, telemetry.ClientOpts{
|
|
Interval: *metricInterval,
|
|
Application: *metricApp + *metricAppSuffix,
|
|
Instance: instanceID,
|
|
Registry: r,
|
|
FloatEncoding: admproto.Float32Encoding,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
environment.Register(r)
|
|
hw.Register(r)
|
|
go c.Run(ctx)
|
|
return nil
|
|
}
|