// Copyright 2020 The Prometheus Authors// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package procfsimport ()// NetStat contains statistics for all the counters from one file.typeNetStatstruct { Stats map[string][]uint64 Filename string}// NetStat retrieves stats from `/proc/net/stat/`.func ( FS) () ([]NetStat, error) { , := filepath.Glob(.proc.Path("net/stat/*"))if != nil {returnnil, }var []NetStatfor , := range { , := parseNetstat()if != nil {returnnil, } .Filename = filepath.Base() = append(, ) }return , nil}// parseNetstat parses the metrics from `/proc/net/stat/` file// and returns a NetStat structure.func parseNetstat( string) (NetStat, error) { := NetStat{Stats: make(map[string][]uint64), } , := os.Open()if != nil {return , }defer .Close() := bufio.NewScanner() .Scan()// First string is always a header for statsvar []string = append(, strings.Fields(.Text())...)// Other strings represent per-CPU countersfor .Scan() {for , := rangestrings.Fields(.Text()) { , := strconv.ParseUint(, 16, 64)if != nil {returnNetStat{}, } .Stats[[]] = append(.Stats[[]], ) } }return , nil}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.