Documentation ¶
Overview ¶
Package metrics provides service for collecting various metrics about peers. It is intended to be used with the kademlia where the metrics are collected.
Index ¶
- type Collector
- func (c *Collector) Finalize(t time.Time, delete bool) error
- func (c *Collector) Flush() error
- func (c *Collector) Inspect(addr boson.Address) *model.Snapshot
- func (c *Collector) Record(addr boson.Address, rop ...RecordOp)
- func (c *Collector) Snapshot(t time.Time, addresses ...boson.Address) map[string]*model.Snapshot
- type Counters
- type RecordOp
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Collector ¶
type Collector struct {
// contains filtered or unexported fields
}
Collector collects various metrics about peers specified be the Aurora.Address.
func NewCollector ¶
NewCollector is a convenient constructor for creating new Collector.
func (*Collector) Flush ¶
Flush sync the dirty in memory counters for all peers by flushing their values to the underlying storage.
func (*Collector) Inspect ¶
Inspect allows inspecting current snapshot for the given peer address by executing the inspection function.
func (*Collector) Snapshot ¶
Snapshot returns the current state of the metrics collector for peer(s). The given time t is used to calculate the duration of the current session, if any. If an address or a set of addresses is specified then only metrics related to them will be returned, otherwise metrics for all peers will be returned. If the peer is still logged in, the session-related counters will be evaluated against the last seen time, which equals to the login time. If the peer is logged out, then the session counters will reflect its last session.
type Counters ¶
type Counters struct { sync.Mutex ReachabilityStatus p2p.ReachabilityStatus // contains filtered or unexported fields }
Counters represents a collection of peer metrics mainly collected for statistics and debugging.
func (*Counters) MarshalJSON ¶
MarshalJSON marshals just the persistent counters.
func (*Counters) UnmarshalJSON ¶
UnmarshalJSON unmarshal just the persistent counters.
type RecordOp ¶
type RecordOp func(*Counters)
RecordOp is a definition of a peer metrics Record operation whose execution modifies a specific metrics.
func IncSessionConnectionRetry ¶
func IncSessionConnectionRetry() RecordOp
IncSessionConnectionRetry increments the session connection retry counter by 1.
func PeerLatency ¶
PeerLatency records the average peer latency.
func PeerLogIn ¶
func PeerLogIn(t time.Time, dir model.PeerConnectionDirection) RecordOp
PeerLogIn will first update the current last seen to the give time t and as the second it'll set the direction of the session connection to the given value. The force flag will force the peer re-login if he's already logged in. The time is set as Unix timestamp ignoring the timezone. The operation will panic if the given time is before the Unix epoch.
func PeerLogOut ¶
PeerLogOut will first update the connection session and total duration with the difference of the given time t and the current last seen value. As the second it'll also update the last seen peer metrics to the given time t. The time is set as Unix timestamp ignoring the timezone. The operation will panic if the given time is before the Unix epoch.
func PeerReachability ¶
func PeerReachability(s p2p.ReachabilityStatus) RecordOp
PeerReachability updates the last reachability status.