Documentation
¶
Overview ¶
Package session provides functions to track sessions with a throughput of data
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Collector ¶
type Collector interface {
// Register registers a new session. A session has to be activated in order
// not to be dropped. A different id distinguishes different sessions.
Register(id, reference, location, peer string)
// Activate activates the session with the id. Returns true if the session
// has been activated, false if the session was already activated.
Activate(id string) bool
// RegisterAndActivate registers and an activates a session.
RegisterAndActivate(id, reference, location, peer string)
// Add arbitrary extra data to a session
Extra(id, extra string)
// Unregister cancels a session prematurely.
Unregister(id string)
// Ingress adds size bytes of ingress traffic to a session.
Ingress(id string, size int64)
// Egress adds size bytes of egress traffic to a session.
Egress(id string, size int64)
// IngressBitrate returns the current bitrate of ingress traffic.
IngressBitrate() float64
// EgressBitrate returns the current bitrate of egress traffic.
EgressBitrate() float64
// MaxIngressBitrate return the defined maximum ingress bitrate. All values <= 0
// mean no limit.
MaxIngressBitrate() float64
// MaxEgressBitrate return the defined maximum egress bitrate. All values <= 0
// mean no limit.
MaxEgressBitrate() float64
// TopIngressBitrate returns the summed current top bitrates of all ingress sessions.
TopIngressBitrate() float64
// TopEgressBitrate returns the summed current top bitrates of all egress sessions.
TopEgressBitrate() float64
// IsIngressBitrateExceeded returns whether the defined maximum ingress bitrate has
// been exceeded.
IsIngressBitrateExceeded() bool
// IsEgressBitrateExceeded returns whether the defined maximum egress bitrate has
// been exceeded.
IsEgressBitrateExceeded() bool
// IsSessionsExceeded return whether the maximum number of session have been exceeded.
IsSessionsExceeded() bool
// IsKnowsession returns whether a session with the given id exists.
IsKnownSession(id string) bool
// IsAllowedIP returns whether traffic from/to the given IP should be considered.
IsCollectableIP(ip string) bool
// Summary returns the summary of all currently active sessions and the session history.
Summary() Summary
// Active returns a list of currently active sessions.
Active() []Session
// SessionIngressTopBitrate returns the top ingress bitrate of a specific session.
SessionTopIngressBitrate(id string) float64
// SessionIngressTopBitrate returns the top egress bitrate of a specific session.
SessionTopEgressBitrate(id string) float64
// SessionSetIngressTopBitrate sets the current top ingress bitrate of a session.
SessionSetTopIngressBitrate(id string, bitrate float64)
// SessionSetEgressTopBitrate sets the current top egress bitrate of a session.
SessionSetTopEgressBitrate(id string, bitrate float64)
// Sessions returns the number of currently active sessions.
Sessions() uint64
AddCompanion(collector Collector)
// IngressBitrate returns the current bitrate of ingress traffic.
CompanionIngressBitrate() float64
// EgressBitrate returns the current bitrate of egress traffic.
CompanionEgressBitrate() float64
// TopIngressBitrate returns the summed current top bitrates of all ingress sessions.
CompanionTopIngressBitrate() float64
// TopEgressBitrate returns the summed current top bitrates of all egress sessions.
CompanionTopEgressBitrate() float64
// Stop stops the collector to calculate rates
Stop()
}
The Collector interface
func NewCollector ¶
func NewCollector(config CollectorConfig) Collector
NewCollector returns a new collector according to the provided configuration. If such a collector can't be created, a NullCollector is returned.
func NewNullCollector ¶
func NewNullCollector() Collector
NewNullCollector returns an implementation of the Collector interface that doesn't collect any metrics at all.
type CollectorConfig ¶
type CollectorConfig struct {
// MaxRxBitrate is the maximum ingress bitrate. It is used to query whether
// the maximum bitrate is reached, based on the actucal bitrate.
MaxRxBitrate uint64
// MaxTxBitrate is the maximum egress bitrate. It is used to query whether
// the maximum bitrate is reached, based on the actucal bitrate.
MaxTxBitrate uint64
// MaxSessions is the maximum number of session. It is used to query whether
// the maximum number of sessions is reached, based on the actual number
// of pending and active sessions.
MaxSessions uint64
// Limiter is an IPLimiter. It is used to query whether a session for an IP
// should be created.
Limiter net.IPLimiter
// InactiveTimeout is the duration of how long a not yet activated session is kept.
// A session gets activated with the first ingress or egress bytes.
InactiveTimeout time.Duration
// SessionTimeout is the duration of how long an idle active session is kept. A
// session is idle if there are no ingress or egress bytes.
SessionTimeout time.Duration
// PersistInterval is the duration between persisting the
// history. Can be 0. Then the history will only be persisted
// at stopping the collector.
PersistInterval time.Duration
}
CollectorConfig is the configuration for registering a new collector
type Config ¶
type Config struct {
// PersistFS is a filesystem in whose root the session history will be persisted. If it is nil, the
// history will not be persisted.
PersistFS fs.Filesystem
// Logger is an instance of a logger. If it is nil, no logs
// will be written.
Logger log.Logger
}
Config is the configuration for creating a new registry
type Registry ¶
type Registry interface {
// Register returns a new collector from conf and registers it under the id and error is nil. In case of error
// the returned collector is nil and the error is not nil.
Register(id string, conf CollectorConfig) (Collector, error)
// Unregister unregisters the collector with the ID, returns error if the ID is not registered
Unregister(id string) error
// UnregisterAll unregisters al registered collectors
UnregisterAll()
RegistryReader
}
The Registry interface
type RegistryReader ¶ added in v16.10.0
type RegistryReader interface {
// Collectors returns an array of all registered IDs
Collectors() []string
// Collector returns the collector with the ID, or nil if the ID is not registered
Collector(id string) Collector
// Summary returns the summary from a collector with the ID, or an empty summary if the ID is not registered
Summary(id string) Summary
// Active returns the active sessions from a collector with the ID, or an empty list if the ID is not registered
Active(id string) []Session
}
type Session ¶
type Session struct {
ID string
Reference string
CreatedAt time.Time
Location string
Peer string
Extra string
RxBytes uint64
RxBitrate float64 // bit/s
TopRxBitrate float64 // bit/s
TxBytes uint64
TxBitrate float64 // bit/s
TopTxBitrate float64 // bit/s
}
Session represents an active session
type Stats ¶
Stats holds the basic accumulated values like the number of sessions, total transmitted and received bytes.
type Summary ¶
type Summary struct {
MaxSessions uint64
MaxRxBitrate float64 // bit/s
MaxTxBitrate float64 // bit/s
CurrentSessions uint64
CurrentRxBitrate float64 // bit/s
CurrentTxBitrate float64 // bit/s
Active []Session
Summary struct {
Peers map[string]Peers
Locations map[string]Stats
References map[string]Stats
Stats
}
}
Summary is a summary over all current and past sessions. The past sessions are grouped over the Peers/Locations and the Locations.