Documentation
¶
Overview ¶
Package metrics provides Prometheus metrics for AWL subsystems.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( DNSQueriesTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "dns", Name: "queries_total", Help: "Total DNS queries handled.", }, []string{"handler"}) DNSQueryErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "dns", Name: "query_errors_total", Help: "Total DNS query errors (upstream failures).", }) DNSQueryDurationSeconds = promauto.NewHistogram(prometheus.HistogramOpts{ Namespace: namespace, Subsystem: "dns", Name: "query_duration_seconds", Help: "DNS query duration in seconds.", Buckets: []float64{0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 10}, }) )
View Source
var ( NodeInfo = promauto.NewGaugeVec(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "node", Name: "info", Help: "Static node information.", }, []string{"version", "peer_id", "go_version", "os", "arch"}) NodeUptimeSeconds = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "node", Name: "uptime_seconds", Help: "Node uptime in seconds.", }) NodeStartTimestamp = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "node", Name: "start_timestamp", Help: "Unix timestamp of node start.", }) )
View Source
var ( P2PBootstrapPeersTotal = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "bootstrap_peers_total", Help: "Total number of configured bootstrap peers.", }) P2PBootstrapPeersConnected = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "bootstrap_peers_connected", Help: "Number of connected bootstrap peers.", }) P2PDHTRoutingTableSize = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "dht_routing_table_size", Help: "DHT routing table size.", }) P2POpenConnections = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "open_connections", Help: "Number of open connections.", }) P2POpenStreams = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "open_streams", Help: "Number of open streams.", }) P2PConnectedPeers = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "connected_peers", Help: "Total number of connected peers (all, not just known).", }) P2PPeerLatencySeconds = promauto.NewGaugeVec(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "p2p", Name: "peer_latency_seconds", Help: "Last measured latency to known peers in seconds.", }, []string{"peer_id"}) )
View Source
var ( PeersKnownTotal = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "known_total", Help: "Total number of known peers.", }) PeersConnected = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "connected", Help: "Number of currently connected known peers.", }) PeersConfirmedTotal = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "confirmed_total", Help: "Number of confirmed (mutual) peers.", }) PeersBlockedTotal = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "blocked_total", Help: "Number of blocked peers.", }) PeersAuthRequestsIngoing = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "auth_requests_ingoing", Help: "Number of pending ingoing auth requests.", }) PeersAuthRequestsOutgoing = promauto.NewGauge(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "peers", Name: "auth_requests_outgoing", Help: "Number of pending outgoing auth requests.", }) PeersAuthRequestsSentTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "peers", Name: "auth_requests_sent_total", Help: "Total number of auth requests sent.", }) PeersAuthRequestsReceivedTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "peers", Name: "auth_requests_received_total", Help: "Total number of auth requests received.", }) PeersStatusRequestsSentTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "peers", Name: "status_requests_sent_total", Help: "Total number of status requests sent.", }) PeersStatusRequestsReceivedTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "peers", Name: "status_requests_received_total", Help: "Total number of status requests received.", }) PeersConnectionEventsTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "peers", Name: "connection_events_total", Help: "Total peer connection events.", }, []string{"event"}) )
View Source
var ( SOCKS5ConnectionsTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "socks5", Name: "connections_total", Help: "Total SOCKS5 connections.", }, []string{"direction"}) SOCKS5ActiveConnections = promauto.NewGaugeVec(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: "socks5", Name: "active_connections", Help: "Current active SOCKS5 connections.", }, []string{"direction"}) // TODO: add? SOCKS5BytesTransferredTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "socks5", Name: "bytes_transferred_total", Help: "Total bytes transferred via SOCKS5.", }, []string{"direction"}) SOCKS5ErrorsTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "socks5", Name: "errors_total", Help: "Total SOCKS5 errors.", }, []string{"direction", "reason"}) SOCKS5ConnectionDurationSeconds = promauto.NewHistogramVec(prometheus.HistogramOpts{ Namespace: namespace, Subsystem: "socks5", Name: "connection_duration_seconds", Help: "SOCKS5 connection duration in seconds.", Buckets: append(slices.Clone(prometheus.DefBuckets), 20, 40, 80, 160, 320, 640, 1280), }, []string{"direction"}) )
View Source
var ( VPNPacketsSentTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "packets_sent_total", Help: "Total VPN packets written to tunnel streams.", }) VPNPacketsReceivedTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "packets_received_total", Help: "Total VPN packets received from tunnel streams.", }) VPNBytesSentTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "bytes_sent_total", Help: "Total VPN bytes sent via tunnel streams.", }) VPNBytesReceivedTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "bytes_received_total", Help: "Total VPN bytes received from tunnel streams.", }) VPNPacketsDroppedTotal = promauto.NewCounterVec(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "packets_dropped_total", Help: "Total VPN packets dropped.", }, []string{"reason"}) VPNTunReadErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "tun_read_errors_total", Help: "Total TUN device read errors.", }) VPNTunWriteErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "tun_write_errors_total", Help: "Total TUN device write errors.", }) VPNStreamOpenErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "vpn", Name: "stream_open_errors_total", Help: "Total errors opening tunnel streams.", }) )
Functions ¶
func SetNodeInfo ¶
func SetNodeInfo(version, peerID string)
SetNodeInfo sets the static node info gauge and the start timestamp.
func StartBackgroundUpdater ¶
func StartBackgroundUpdater(ctx context.Context, conf ConfigMetrics, p2pMetrics P2pMetrics)
StartBackgroundUpdater periodically updates gauge-type metrics from their data sources.
Types ¶
type ConfigMetrics ¶
type ConfigMetrics interface {
GetKnownPeersSnapshot() (total, confirmed, connected int, peerIDs []peer.ID)
GetBlockedPeersCount() int
GetAuthRequestCounts() (ingoing, outgoing int)
}
ConfigMetrics is an interface for getting config data used by the background updater.
type P2pMetrics ¶
type P2pMetrics interface {
ConnectedPeersCount() int
OpenConnectionsCount() int
OpenStreamsCount() int64
RoutingTableSize() int
BootstrapPeersStats() (total int, connected int)
IsConnected(peerID peer.ID) bool
GetPeerLatency(id peer.ID) time.Duration
}
P2pMetrics is an interface for getting p2p network stats used by the background updater.
Click to show internal directories.
Click to hide internal directories.