MCPcopy Create free account
hub / github.com/0xUnixIO/pulse / Snapshot

Method Snapshot

internal/nodehub/metrics.go:70–100  ·  view source on GitHub ↗

Snapshot 返回当前 Hub 指标的快照。

()

Source from the content-addressed store, hash-verified

68
69// Snapshot 返回当前 Hub 指标的快照。
70func (h *Hub) Snapshot() Snapshot {
71 online := h.OnlineNodes()
72
73 sum := h.metrics.callLatencyNanosSum.Load()
74 cnt := h.metrics.callLatencyCount.Load()
75 var avg uint64
76 if cnt > 0 {
77 avg = sum / cnt
78 }
79
80 h.metrics.mu.RLock()
81 lastSeen := make(map[string]int64, len(h.metrics.perNodeLastSeen))
82 for k, v := range h.metrics.perNodeLastSeen {
83 lastSeen[k] = v.Unix()
84 }
85 h.metrics.mu.RUnlock()
86
87 return Snapshot{
88 OnlineCount: h.metrics.onlineGauge.Load(),
89 OnlineNodeIDs: online,
90 CallsTotal: h.metrics.callsTotal.Load(),
91 CallsErrTotal: h.metrics.callsErrTotal.Load(),
92 CallsOfflineTotal: h.metrics.callsOfflineTotal.Load(),
93 PushUsageTotal: h.metrics.pushUsageTotal.Load(),
94 PushUsageAckTotal: h.metrics.pushUsageAckTotal.Load(),
95 ReconnectTotal: h.metrics.reconnectTotal.Load(),
96 ReapedTotal: h.metrics.reapedTotal.Load(),
97 CallLatencyAvgNs: avg,
98 LastSeen: lastSeen,
99 }
100}

Calls 1

OnlineNodesMethod · 0.95