Help us shape the future of Go! Take the 2026 Go Developer Survey

devicetelemetry

package
v0.6.2 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2025 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Metrics names.
	MetricNameErrors    = "doublezero_monitor_device_telemetry_errors_total"
	MetricNameSamples   = "doublezero_monitor_device_telemetry_samples_total"
	MetricNameSuccesses = "doublezero_monitor_device_telemetry_successes_total"
	MetricNameLosses    = "doublezero_monitor_device_telemetry_losses_total"

	// Labels.
	MetricLabelErrorType = "error_type"
	MetricLabelCircuit   = "circuit"

	// Error types.
	MetricErrorTypeGetCircuits       = "get_circuits"
	MetricErrorTypeGetEpochInfo      = "get_epoch_info"
	MetricErrorTypeGetLatencySamples = "get_latency_samples"
)

Variables

View Source
var (
	MetricErrors = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: MetricNameErrors,
			Help: "Number of errors encountered",
		},
		[]string{MetricLabelErrorType},
	)

	MetricSamples = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: MetricNameSamples,
			Help: "Number of samples",
		},
		[]string{MetricLabelCircuit},
	)

	MetricSuccesses = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: MetricNameSuccesses,
			Help: "Number of successes",
		},
		[]string{MetricLabelCircuit},
	)

	MetricLosses = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: MetricNameLosses,
			Help: "Number of losses",
		},
		[]string{MetricLabelCircuit},
	)
)

Functions

This section is empty.

Types

type CircuitTelemetryStats

type CircuitTelemetryStats struct {
	SuccessCount uint32
	LossCount    uint32
}

type Config

type Config struct {
	Logger          *slog.Logger
	LedgerRPCClient LedgerRPCClient
	Serviceability  ServiceabilityClient
	Telemetry       TelemetryProgramClient
	Interval        time.Duration
	MaxConcurrency  int
}

func (*Config) Validate

func (c *Config) Validate() error

type DeviceTelemetryWatcher

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

func NewDeviceTelemetryWatcher

func NewDeviceTelemetryWatcher(cfg *Config) (*DeviceTelemetryWatcher, error)

func (*DeviceTelemetryWatcher) Name

func (w *DeviceTelemetryWatcher) Name() string

func (*DeviceTelemetryWatcher) Run

func (*DeviceTelemetryWatcher) Tick

type LedgerRPCClient

type LedgerRPCClient interface {
	GetEpochInfo(ctx context.Context, commitment solanarpc.CommitmentType) (*solanarpc.GetEpochInfoResult, error)
}

type ServiceabilityClient

type ServiceabilityClient interface {
	GetProgramData(context.Context) (*serviceability.ProgramData, error)
}

type TelemetryProgramClient

type TelemetryProgramClient interface {
	GetDeviceLatencySamples(ctx context.Context, originDevicePubKey, targetDevicePubKey, linkPubKey solana.PublicKey, epoch uint64) (*telemetry.DeviceLatencySamples, error)
}

Jump to

Keyboard shortcuts

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