Initial commit
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Metrics Core 监控指标
|
||||
type Metrics struct {
|
||||
// 连接统计
|
||||
activeConnections atomic.Int64
|
||||
totalConnections atomic.Int64
|
||||
|
||||
// 流量统计
|
||||
bytesSent atomic.Uint64
|
||||
bytesReceived atomic.Uint64
|
||||
|
||||
// 策略统计
|
||||
strategyFallbacks atomic.Int64
|
||||
lastSwitchTime atomic.Int64 // Unix timestamp
|
||||
}
|
||||
|
||||
// NewMetrics 创建监控指标
|
||||
func NewMetrics() *Metrics {
|
||||
return &Metrics{}
|
||||
}
|
||||
|
||||
// GetActiveConnections 获取活跃连接数
|
||||
func (m *Metrics) GetActiveConnections() int64 {
|
||||
return m.activeConnections.Load()
|
||||
}
|
||||
|
||||
// IncrActiveConnections 增加活跃连接数
|
||||
func (m *Metrics) IncrActiveConnections() {
|
||||
m.activeConnections.Add(1)
|
||||
m.totalConnections.Add(1)
|
||||
}
|
||||
|
||||
// DecrActiveConnections 减少活跃连接数
|
||||
func (m *Metrics) DecrActiveConnections() {
|
||||
m.activeConnections.Add(-1)
|
||||
}
|
||||
|
||||
// AddBytesSent 增加发送字节数
|
||||
func (m *Metrics) AddBytesSent(n uint64) {
|
||||
m.bytesSent.Add(n)
|
||||
}
|
||||
|
||||
// AddBytesReceived 增加接收字节数
|
||||
func (m *Metrics) AddBytesReceived(n uint64) {
|
||||
m.bytesReceived.Add(n)
|
||||
}
|
||||
|
||||
// IncrStrategyFallbacks 增加策略降级次数
|
||||
func (m *Metrics) IncrStrategyFallbacks() {
|
||||
m.strategyFallbacks.Add(1)
|
||||
m.lastSwitchTime.Store(time.Now().Unix())
|
||||
}
|
||||
|
||||
// GetTotalConnections 获取总连接数
|
||||
func (m *Metrics) GetTotalConnections() int64 {
|
||||
return m.totalConnections.Load()
|
||||
}
|
||||
|
||||
// GetBytesSent 获取发送字节数
|
||||
func (m *Metrics) GetBytesSent() uint64 {
|
||||
return m.bytesSent.Load()
|
||||
}
|
||||
|
||||
// GetBytesReceived 获取接收字节数
|
||||
func (m *Metrics) GetBytesReceived() uint64 {
|
||||
return m.bytesReceived.Load()
|
||||
}
|
||||
|
||||
// GetStrategyFallbacks 获取策略降级次数
|
||||
func (m *Metrics) GetStrategyFallbacks() int64 {
|
||||
return m.strategyFallbacks.Load()
|
||||
}
|
||||
|
||||
// GetLastSwitchTime 获取最后切换时间
|
||||
func (m *Metrics) GetLastSwitchTime() time.Time {
|
||||
return time.Unix(m.lastSwitchTime.Load(), 0)
|
||||
}
|
||||
Reference in New Issue
Block a user