diff options
author | Stanislav <me@gaydin.io> | 2018-11-05 06:20:00 +0300 |
---|---|---|
committer | techknowlogick <hello@techknowlogick.com> | 2018-11-04 22:20:00 -0500 |
commit | 078c404c3b0f283a242ad93b6a2f4cabb2575410 (patch) | |
tree | f6ee03707e7c5938c63c692a1ba1a945d4d1d470 /vendor/github.com/prometheus/procfs/proc_io.go | |
parent | 92fb89f6e1a10d8431de536823a0680af417a04f (diff) | |
download | gitea-078c404c3b0f283a242ad93b6a2f4cabb2575410.tar.gz gitea-078c404c3b0f283a242ad93b6a2f4cabb2575410.zip |
Prometheus endpoint (#5256)
* Add prometheus collector and route
* dep ensure -add github.com/prometheus/client_golang/prometheus
* dep ensure -update github.com/golang/protobuf
* add metrics to reserved usernames
* add comment head in metrics package
* fix style imports
* add metrics settings
* add bearer token check
* mapping metrics configs
* fix lint
* update config cheat sheet
* update conf sample, typo fix
Diffstat (limited to 'vendor/github.com/prometheus/procfs/proc_io.go')
-rw-r--r-- | vendor/github.com/prometheus/procfs/proc_io.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/prometheus/procfs/proc_io.go b/vendor/github.com/prometheus/procfs/proc_io.go new file mode 100644 index 0000000000..0251c83bfe --- /dev/null +++ b/vendor/github.com/prometheus/procfs/proc_io.go @@ -0,0 +1,65 @@ +// Copyright 2018 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 procfs + +import ( + "fmt" + "io/ioutil" + "os" +) + +// ProcIO models the content of /proc/<pid>/io. +type ProcIO struct { + // Chars read. + RChar uint64 + // Chars written. + WChar uint64 + // Read syscalls. + SyscR uint64 + // Write syscalls. + SyscW uint64 + // Bytes read. + ReadBytes uint64 + // Bytes written. + WriteBytes uint64 + // Bytes written, but taking into account truncation. See + // Documentation/filesystems/proc.txt in the kernel sources for + // detailed explanation. + CancelledWriteBytes int64 +} + +// NewIO creates a new ProcIO instance from a given Proc instance. +func (p Proc) NewIO() (ProcIO, error) { + pio := ProcIO{} + + f, err := os.Open(p.path("io")) + if err != nil { + return pio, err + } + defer f.Close() + + data, err := ioutil.ReadAll(f) + if err != nil { + return pio, err + } + + ioFormat := "rchar: %d\nwchar: %d\nsyscr: %d\nsyscw: %d\n" + + "read_bytes: %d\nwrite_bytes: %d\n" + + "cancelled_write_bytes: %d\n" + + _, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR, + &pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes) + + return pio, err +} |