metrics

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2024 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Normalize

func Normalize(timestamp time.Time, interval Interval) (time.Time, error)

Normalize returns the normalized timestamp for the given interval.

Types

type Accounts added in v0.2.0

type Accounts struct {
	Active  uint64         `json:"active"`
	Balance types.Currency `json:"balance"`
}

Accounts is a collection of metrics related to ephemeral accounts.

type Contracts

type Contracts struct {
	Pending    uint64 `json:"pending"`
	Active     uint64 `json:"active"`
	Rejected   uint64 `json:"rejected"`
	Failed     uint64 `json:"failed"`
	Successful uint64 `json:"successful"`

	LockedCollateral types.Currency `json:"lockedCollateral"`
	RiskedCollateral types.Currency `json:"riskedCollateral"`
}

Contracts is a collection of metrics related to contracts.

type DataMetrics

type DataMetrics struct {
	RHP RHPData `json:"rhp"`
}

DataMetrics is a collection of metrics related to data usage.

type Interval

type Interval uint8

Interval is the interval at which metrics should be aggregated.

const (
	Interval5Minutes Interval = iota
	Interval15Minutes
	IntervalHourly
	IntervalDaily
	IntervalWeekly
	IntervalMonthly
	IntervalYearly
)

intervals at which metrics should be aggregated.

func (Interval) String

func (i Interval) String() string

String returns the interval as a string

func (*Interval) UnmarshalText

func (i *Interval) UnmarshalText(buf []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

type MetricManager

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

A MetricManager retrieves metrics from a store

func NewManager

func NewManager(store Store) *MetricManager

NewManager returns a new MetricManager

func (*MetricManager) Metrics

func (mm *MetricManager) Metrics(timestamp time.Time) (m Metrics, err error)

Metrics returns the current metrics for the host.

func (*MetricManager) PeriodMetrics

func (mm *MetricManager) PeriodMetrics(start time.Time, periods int, interval Interval) ([]Metrics, error)

PeriodMetrics returns metrics for n periods starting at start.

type Metrics

type Metrics struct {
	Accounts  Accounts       `json:"accounts"`
	Revenue   RevenueMetrics `json:"revenue"`
	Pricing   Pricing        `json:"pricing"`
	Contracts Contracts      `json:"contracts"`
	Storage   Storage        `json:"storage"`
	Registry  Registry       `json:"registry"`
	Data      DataMetrics    `json:"data"`
	Balance   types.Currency `json:"balance"`
	Timestamp time.Time      `json:"timestamp"`
}

Metrics is a collection of metrics for the host.

type Pricing

type Pricing struct {
	ContractPrice        types.Currency `json:"contractPrice"`
	IngressPrice         types.Currency `json:"ingressPrice"`
	EgressPrice          types.Currency `json:"egressPrice"`
	BaseRPCPrice         types.Currency `json:"baseRPCPrice"`
	SectorAccessPrice    types.Currency `json:"sectorAccessPrice"`
	StoragePrice         types.Currency `json:"storagePrice"`
	CollateralMultiplier float64        `json:"collateralMultiplier"`
}

Pricing is a collection of metrics related to the host's pricing settings.

type RHPData added in v1.0.0

type RHPData struct {
	// Ingress returns the number of bytes received by the host.
	Ingress uint64 `json:"ingress"`
	// Egress returns the number of bytes sent by the host.
	Egress uint64 `json:"egress"`
}

RHPData is a collection of data metrics related to the RHP.

type Registry

type Registry struct {
	Entries    uint64 `json:"entries"`
	MaxEntries uint64 `json:"maxEntries"`

	Reads  uint64 `json:"reads"`
	Writes uint64 `json:"writes"`
}

Registry is a collection of metrics related to the host's registry.

type Revenue

type Revenue struct {
	RPC           types.Currency `json:"rpc"`
	Storage       types.Currency `json:"storage"`
	Ingress       types.Currency `json:"ingress"`
	Egress        types.Currency `json:"egress"`
	RegistryRead  types.Currency `json:"registryRead"`
	RegistryWrite types.Currency `json:"registryWrite"`
}

Revenue is a collection of metrics related to revenue.

type RevenueMetrics

type RevenueMetrics struct {
	Potential Revenue `json:"potential"`
	Earned    Revenue `json:"earned"`
}

RevenueMetrics is a collection of metrics related to revenue.

type Storage

type Storage struct {
	TotalSectors    uint64 `json:"totalSectors"`
	PhysicalSectors uint64 `json:"physicalSectors"`
	LostSectors     uint64 `json:"lostSectors"`
	ContractSectors uint64 `json:"contractSectors"`
	TempSectors     uint64 `json:"tempSectors"`

	Reads  uint64 `json:"reads"`
	Writes uint64 `json:"writes"`

	SectorCacheHits   uint64 `json:"sectorCacheHits"`
	SectorCacheMisses uint64 `json:"sectorCacheMisses"`
}

Storage is a collection of metrics related to storage.

type Store

type Store interface {
	// PeriodMetrics returns metrics for n periods starting at start.
	PeriodMetrics(start time.Time, n int, interval Interval) (period []Metrics, err error)
	// Metrics returns aggregated metrics for the host as of the timestamp.
	Metrics(time.Time) (m Metrics, err error)
}

A Store retrieves metrics

Jump to

Keyboard shortcuts

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