MCPcopy Create free account
hub / github.com/prometheus/procfs / parseIPVSStats

Function parseIPVSStats

ipvs.go:78–123  ·  view source on GitHub ↗

parseIPVSStats performs the actual parsing of `ip_vs_stats`.

(r io.Reader)

Source from the content-addressed store, hash-verified

76
77// parseIPVSStats performs the actual parsing of `ip_vs_stats`.
78func parseIPVSStats(r io.Reader) (IPVSStats, error) {
79 var (
80 statContent []byte
81 statLines []string
82 statFields []string
83 stats IPVSStats
84 )
85
86 statContent, err := io.ReadAll(r)
87 if err != nil {
88 return IPVSStats{}, err
89 }
90
91 statLines = strings.SplitN(string(statContent), "\n", 4)
92 if len(statLines) != 4 {
93 return IPVSStats{}, errors.New("ip_vs_stats corrupt: too short")
94 }
95
96 statFields = strings.Fields(statLines[2])
97 if len(statFields) != 5 {
98 return IPVSStats{}, errors.New("ip_vs_stats corrupt: unexpected number of fields")
99 }
100
101 stats.Connections, err = strconv.ParseUint(statFields[0], 16, 64)
102 if err != nil {
103 return IPVSStats{}, err
104 }
105 stats.IncomingPackets, err = strconv.ParseUint(statFields[1], 16, 64)
106 if err != nil {
107 return IPVSStats{}, err
108 }
109 stats.OutgoingPackets, err = strconv.ParseUint(statFields[2], 16, 64)
110 if err != nil {
111 return IPVSStats{}, err
112 }
113 stats.IncomingBytes, err = strconv.ParseUint(statFields[3], 16, 64)
114 if err != nil {
115 return IPVSStats{}, err
116 }
117 stats.OutgoingBytes, err = strconv.ParseUint(statFields[4], 16, 64)
118 if err != nil {
119 return IPVSStats{}, err
120 }
121
122 return stats, nil
123}
124
125// IPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem.
126func (fs FS) IPVSBackendStatus() ([]IPVSBackendStatus, error) {

Callers 1

IPVSStatsMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected