Documentation ¶
Overview ¶
Package stats provides methods and functionality to register, track, log, and StatsD-notify statistics that, for the most part, include "counter" and "latency" kinds.
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package stats provides methods and functionality to register, track, log, and StatsD-notify statistics that, for the most part, include "counter" and "latency" kinds.
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package stats provides methods and functionality to register, track, log, and StatsD-notify statistics that, for the most part, include "counter" and "latency" kinds.
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package stats provides methods and functionality to register, track, log, and StatsD-notify statistics that, for the most part, include "counter" and "latency" kinds.
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package stats provides methods and functionality to register, track, log, and StatsD-notify statistics that, for the most part, include "counter" and "latency" kinds.
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Index ¶
- Constants
- func IsErrMetric(name string) bool
- func IsIOErrMetric(name string) bool
- func LatencyToCounter(latency string) string
- type Cluster
- type ClusterRaw
- type Extra
- type Node
- type NodeStatus
- type NodeStatusV322
- type NodeV322
- type Prunner
- func (r *Prunner) Add(name string, val int64)
- func (r *Prunner) AddMany(nvs ...cos.NamedVal64)
- func (r *Prunner) ClrFlag(name string, clr cos.NodeStateFlags)
- func (r *Prunner) Collect(ch chan<- prometheus.Metric)
- func (r *Prunner) Describe(ch chan<- *prometheus.Desc)
- func (r *Prunner) Get(name string) (val int64)
- func (r *Prunner) GetMetricNames() cos.StrKVs
- func (r *Prunner) GetStats() *Node
- func (r *Prunner) GetStatsV322() (out *NodeV322)
- func (r *Prunner) Inc(name string)
- func (r *Prunner) IncErr(metric string)
- func (r *Prunner) Init(p core.Node) *atomic.Bool
- func (*Prunner) IsPrometheus() bool
- func (r *Prunner) Name() string
- func (r *Prunner) RegExtMetric(snode *meta.Snode, name, kind string, extra *Extra)
- func (r *Prunner) ResetStats(errorsOnly bool)
- func (r *Prunner) Run() error
- func (r *Prunner) SetClrFlag(name string, set, clr cos.NodeStateFlags)
- func (r *Prunner) SetFlag(name string, set cos.NodeStateFlags)
- func (r *Prunner) StartedUp() bool
- func (r *Prunner) Stop(err error)
- type Tracker
- type Trunner
- func (r *Trunner) Add(name string, val int64)
- func (r *Trunner) AddMany(nvs ...cos.NamedVal64)
- func (r *Trunner) ClrFlag(name string, clr cos.NodeStateFlags)
- func (r *Trunner) Collect(ch chan<- prometheus.Metric)
- func (r *Trunner) Describe(ch chan<- *prometheus.Desc)
- func (r *Trunner) Get(name string) (val int64)
- func (r *Trunner) GetMetricNames() cos.StrKVs
- func (r *Trunner) GetStats() (ds *Node)
- func (r *Trunner) GetStatsV322() (out *NodeV322)
- func (r *Trunner) Inc(name string)
- func (r *Trunner) IncErr(metric string)
- func (r *Trunner) Init() *atomic.Bool
- func (r *Trunner) InitCDF(config *cmn.Config) error
- func (*Trunner) IsPrometheus() bool
- func (r *Trunner) Name() string
- func (r *Trunner) RegDiskMetrics(snode *meta.Snode, disk string)
- func (r *Trunner) RegExtMetric(snode *meta.Snode, name, kind string, extra *Extra)
- func (r *Trunner) RegMetrics(snode *meta.Snode)
- func (r *Trunner) ResetStats(errorsOnly bool)
- func (r *Trunner) Run() error
- func (r *Trunner) SetClrFlag(name string, set, clr cos.NodeStateFlags)
- func (r *Trunner) SetFlag(name string, set cos.NodeStateFlags)
- func (r *Trunner) Standby(v bool)
- func (r *Trunner) StartedUp() bool
- func (r *Trunner) Stop(err error)
Constants ¶
const ( // lockless KindCounter = "counter" KindTotal = "total" KindSize = "size" KindGauge = "gauge" KindSpecial = "special" KindComputedThroughput = "compbw" // disk read/write throughput // compound (+ semantics) KindLatency = "latency" KindThroughput = "bw" // e.g. GetThroughput )
enum: `statsValue` kinds
const ( // KindCounter: // all basic counters are accompanied by the corresponding (errPrefix + kind) error count: // e.g.: "get.n" => "err.get.n", "put.n" => "err.put.n", etc. GetCount = "get.n" // GET(object) count = (cold + warm) PutCount = "put.n" // ditto PUT HeadCount = "head.n" AppendCount = "append.n" DeleteCount = "del.n" RenameCount = "ren.n" ListCount = "lst.n" // list-objects // error counters // see also: `IncErr`, `regCommon`, `ioErrNames` ErrGetCount = errPrefix + GetCount ErrPutCount = errPrefix + PutCount ErrHeadCount = errPrefix + HeadCount ErrAppendCount = errPrefix + AppendCount ErrDeleteCount = errPrefix + DeleteCount ErrRenameCount = errPrefix + RenameCount ErrListCount = errPrefix + ListCount ErrKaliveCount = errPrefix + "kalive.n" // more errors // (for even more errors, see target_stats) ErrHTTPWriteCount = errPrefix + "http.write.n" ErrDownloadCount = errPrefix + "dl.n" ErrPutMirrorCount = errPrefix + "put.mirror.n" // KindLatency // latency stats have numSamples used to compute average latency GetLatency = "get.ns" GetLatencyTotal = "get.ns.total" GetE2ELatencyTotal = "e2e.get.ns.total" // // e2e cold-GET latency ListLatency = "lst.ns" KeepAliveLatency = "kalive.ns" // KindSpecial Uptime = "up.ns.time" // KindGauge, cos.NodeStateFlags enum NodeAlerts = cos.NodeAlerts // "state.flags" )
metrics
const ( LruEvictCount = "lru.evict.n" LruEvictSize = "lru.evict.size" CleanupStoreCount = "cleanup.store.n" CleanupStoreSize = "cleanup.store.size" VerChangeCount = "ver.change.n" VerChangeSize = "ver.change.size" // errors ErrCksumCount = errPrefix + "cksum.n" ErrCksumSize = errPrefix + "cksum.size" ErrFSHCCount = errPrefix + "fshc.n" // IO errors (must have ioErrPrefix) IOErrGetCount = ioErrPrefix + "get.n" IOErrPutCount = ioErrPrefix + "put.n" IOErrDeleteCount = ioErrPrefix + "del.n" // KindLatency PutLatency = "put.ns" PutLatencyTotal = "put.ns.total" PutE2ELatencyTotal = "e2e.put.ns.total" // e2e write-through PUT latency AppendLatency = "append.ns" GetRedirLatency = "get.redir.ns" PutRedirLatency = "put.redir.ns" DownloadLatency = "dl.ns" HeadLatency = "head.ns" HeadLatencyTotal = "head.ns.total" // Dsort DsortCreationReqCount = "dsort.creation.req.n" DsortCreationRespCount = "dsort.creation.resp.n" DsortCreationRespLatency = "dsort.creation.resp.ns" DsortExtractShardDskCnt = "dsort.extract.shard.dsk.n" DsortExtractShardMemCnt = "dsort.extract.shard.mem.n" DsortExtractShardSize = "dsort.extract.shard.size" // uncompressed // Downloader DownloadSize = "dl.size" // KindThroughput GetThroughput = "get.bps" // bytes per second PutThroughput = "put.bps" // ditto // same as above via `.cumulative` GetSize = "get.size" PutSize = "put.size" // core RemoteDeletedDelCount = core.RemoteDeletedDelCount // compare w/ common `DeleteCount` LcacheCollisionCount = core.LcacheCollisionCount LcacheEvictedCount = core.LcacheEvictedCount LcacheFlushColdCount = core.LcacheFlushColdCount )
Naming Convention:
-> "*.n" - counter -> "*.ns" - latency (nanoseconds) -> "*.size" - size (bytes) -> "*.bps" - throughput (in byte/s) -> "*.id" - ID
Variables ¶
This section is empty.
Functions ¶
func IsErrMetric ¶ added in v1.3.16
func IsIOErrMetric ¶ added in v1.3.24
func LatencyToCounter ¶ added in v1.3.24
compare with base.init() at ais/backend/common
Types ¶
type ClusterRaw ¶ added in v1.3.16
type ClusterRaw struct { Proxy *Node `json:"proxy"` Target cos.JSONRawMsgs `json:"target"` }
type Node ¶ added in v1.3.16
type Node struct { Snode *meta.Snode `json:"snode"` Tracker copyTracker `json:"tracker"` Tcdf fs.Tcdf `json:"capacity"` }
REST API
type NodeStatus ¶ added in v1.3.16
type NodeStatus struct { Node Cluster cos.NodeStateInfo RebSnap *core.Snap `json:"rebalance_snap,omitempty"` // assorted props Status string `json:"status"` DeploymentType string `json:"deployment"` Version string `json:"ais_version"` // major.minor.build BuildTime string `json:"build_time"` // YYYY-MM-DD HH:MM:SS-TZ K8sPodName string `json:"k8s_pod_name"` // (via ais-k8s/operator `MY_POD` env var) Reserved1 string `json:"reserved1,omitempty"` Reserved2 string `json:"reserved2,omitempty"` MemCPUInfo apc.MemCPUInfo `json:"sys_info"` SmapVersion int64 `json:"smap_version,string"` Reserved3 int64 `json:"reserved3,omitempty"` Reserved4 int64 `json:"reserved4,omitempty"` }
(includes stats.Node and more; NOTE: direct API call w/ no proxying)
type NodeStatusV322 ¶ added in v1.3.23
type NodeStatusV322 struct { NodeV322 RebSnap *core.Snap `json:"rebalance_snap,omitempty"` // assorted props Status string `json:"status"` DeploymentType string `json:"deployment"` Version string `json:"ais_version"` // major.minor.build BuildTime string `json:"build_time"` // YYYY-MM-DD HH:MM:SS-TZ K8sPodName string `json:"k8s_pod_name"` // (via ais-k8s/operator `MY_POD` env var) MemCPUInfo apc.MemCPUInfo `json:"sys_info"` SmapVersion int64 `json:"smap_version,string"` }
[backward compatibility]: includes v3.22 cdf* structures
type NodeV322 ¶ added in v1.3.23
type NodeV322 struct { Snode *meta.Snode `json:"snode"` Tracker copyTracker `json:"tracker"` Tcdf fs.TargetCDFv322 `json:"capacity"` }
[backward compatibility]: includes v3.22 cdf* structures
type Prunner ¶
type Prunner struct {
// contains filtered or unexported fields
}
func (*Prunner) AddMany ¶
func (r *Prunner) AddMany(nvs ...cos.NamedVal64)
func (*Prunner) ClrFlag ¶ added in v1.3.24
func (r *Prunner) ClrFlag(name string, clr cos.NodeStateFlags)
func (*Prunner) Collect ¶
func (r *Prunner) Collect(ch chan<- prometheus.Metric)
func (*Prunner) Describe ¶
func (r *Prunner) Describe(ch chan<- *prometheus.Desc)
func (*Prunner) GetMetricNames ¶ added in v1.3.16
func (*Prunner) GetStatsV322 ¶ added in v1.3.23
func (r *Prunner) GetStatsV322() (out *NodeV322)
func (*Prunner) IncErr ¶ added in v1.3.16
func (r *Prunner) IncErr(metric string)
same as above (readability)
func (*Prunner) Init ¶
All stats that proxy currently has are CoreStats which are registered at startup
func (*Prunner) IsPrometheus ¶
func (*Prunner) IsPrometheus() bool
func (*Prunner) RegExtMetric ¶ added in v1.3.24
func (*Prunner) ResetStats ¶ added in v1.3.16
func (r *Prunner) ResetStats(errorsOnly bool)
func (*Prunner) SetClrFlag ¶ added in v1.3.24
func (r *Prunner) SetClrFlag(name string, set, clr cos.NodeStateFlags)
func (*Prunner) SetFlag ¶ added in v1.3.24
func (r *Prunner) SetFlag(name string, set cos.NodeStateFlags)
type Tracker ¶
type Tracker interface { cos.StatsUpdater StartedUp() bool IsPrometheus() bool IncErr(metric string) GetStats() *Node GetStatsV322() *NodeV322 // [backward compatibility] ResetStats(errorsOnly bool) GetMetricNames() cos.StrKVs // (name, kind) pairs // for aistore modules, to add their respective metrics RegExtMetric(node *meta.Snode, name, kind string, extra *Extra) }
type Trunner ¶
func NewTrunner ¶ added in v1.3.16
func (*Trunner) AddMany ¶
func (r *Trunner) AddMany(nvs ...cos.NamedVal64)
func (*Trunner) ClrFlag ¶ added in v1.3.24
func (r *Trunner) ClrFlag(name string, clr cos.NodeStateFlags)
func (*Trunner) Collect ¶
func (r *Trunner) Collect(ch chan<- prometheus.Metric)
func (*Trunner) Describe ¶
func (r *Trunner) Describe(ch chan<- *prometheus.Desc)
func (*Trunner) GetMetricNames ¶ added in v1.3.16
func (*Trunner) GetStatsV322 ¶ added in v1.3.23
[backward compatibility] v3.22 and prior
func (*Trunner) IncErr ¶ added in v1.3.16
func (r *Trunner) IncErr(metric string)
same as above (readability)
func (*Trunner) IsPrometheus ¶
func (*Trunner) IsPrometheus() bool
func (*Trunner) RegExtMetric ¶ added in v1.3.24
func (*Trunner) RegMetrics ¶
target-specific metrics, in addition to common and already added via regCommon()
func (*Trunner) ResetStats ¶ added in v1.3.16
func (r *Trunner) ResetStats(errorsOnly bool)
func (*Trunner) SetClrFlag ¶ added in v1.3.24
func (r *Trunner) SetClrFlag(name string, set, clr cos.NodeStateFlags)
func (*Trunner) SetFlag ¶ added in v1.3.24
func (r *Trunner) SetFlag(name string, set cos.NodeStateFlags)